⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_device.cpp

📁 浙江大学的悟空嵌入式系统模拟器
💻 CPP
字号:
#include "./LCD_Device.h"
#include "Core/System.h"
#include "Core/Memory.h"
//#include "Core/Processor.h"
#include "Core/Log.h"
//#include "Arch/ARM/ARM_Processor.h"

//#include<io.h>

namespace DEVICE {


	 LCD::LCD()
	{
		width_ = height_ = depth_ = 0;
		fb_ = NULL;
		//base_addr_ =  0x00;
//		lcd_addr_begin_=lcd_addr_end_ = 0xc0000000;
		addr_begin_ = 0xc0000000;;
//		lcd_enable_ = false;
		fb_size_ = 0;
		enable_ = false;
	}

//unsigned char * LCD::get_fb()
//{
//	//get pix from addr_begin_ to addr_end_
//	
//}

	void LCD::on_mapped_memory_write(Core::u32 start, size_t  size, Core::Bytecode_Type & buffer)
	{
		/*Core::u8 data[8];
		for(int i=0; i< buffer.size(); i++)
			data[i] = buffer[i] ;*/
		Core::u32 data=0;
		for(int i=0; i<buffer.size(); i++)
			data = ( data<<8 ) | buffer[i];
	
	//	Core::Wukong_Get_System().convert_from_bytecode(buffer, data);
		Core::u32 offset = (start & ~3) - addr_begin_;
		Core::u32 pixnum = offset * 8 / depth_; //which number pixel
		unsigned char * pos;
		if (pixnum < width_*height_) 
		{
			pos = fb_ + pixnum;
			for(Core::u32 bit = 0; bit < 32; bit += depth_)
			{
				unsigned char pix = (data >> bit)  % (1 << depth_) ;
				*pos++ = pix;
			}
		}
	}


	void LCD::on_destroy(void)
	{
		if(fb_)
			delete fb_;
	}

} //namespace 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -