Wince 6.0 BSP的移植(二)

来源:互联网 发布:视频后期制作软件 编辑:程序博客网 时间:2024/05/16 08:12

转载请注明出处

作者:小马


移植外设驱动时, 可以再platform.bib里注释掉其它的外设驱动dll,并修改drivers目录下的dir文件, 移植好一个,就添加一个.这篇文章是关于LCD显示驱动移植的.


移植LCD驱动时要注意一点, 因为在OAL层有关于LCD的初始化操作(在init.c文件中的InitdDisplay函数). 在前面移植OAL时,要保证这个函数的实现正确. 具体设置可参见上一篇关于OAL移植的文章. 下面是具体步骤:

 

1 修改s3c2410x_lcd.h(My2410/SRC/INC)文件, 主要是分辨率和以及和回扫时间有关的变量设置, 如果这个在OAL那部分移植中已经修改,这里就可以跳过.

 

2 修改s3c2410x_lcd.cpp文件(SRC/DRIVERS/DISPLAY/LCD)

找到到initHardware函数,找到下面几行

       BSP_ARGS *pBSPArgs= ((BSP_ARGS *) IMAGE_SHARE_ARGS_UA_START);

       if (pBSPArgs->ScreenSignature == BSP_SCREEN_SIGNATURE)

       {

            m_nScreenHeight= pBSPArgs->ScreenHeight;

            m_nScreenWidth= pBSPArgs->ScreenWidth;

            m_colorDepth= pBSPArgs->ScreenBitsPerPixel;

       }

       else

       {

            m_nScreenHeight= LCD_YSIZE_TFT;

            m_nScreenWidth= LCD_XSIZE_TFT;

            m_colorDepth= 16;

       }

把上面几行替换成下面三行:

m_nScreenHeight= 240;

m_nScreenWidth= 320;

m_colorDepth= 16;

 

找到

m_VirtualFrameBuffer= (DWORD)VirtualAlloc(0,dwFrameBufferAllocated, MEM_RESERVE, PAGE_NOACCESS);

改为

m_VirtualFrameBuffer= (DWORD)VirtualAlloc(0,(0x40000), MEM_RESERVE,PAGE_NOACCESS);

找到

else if (!VirtualCopy((PVOID)m_VirtualFrameBuffer,(PVOID)gdwLCDVirtualFrameBase,FrameBufferSize, PAGE_READWRITE| PAGE_NOCACHE))

改为

else if (!VirtualCopy((PVOID)m_VirtualFrameBuffer,(PVOID)gdwLCDVirtualFrameBase,(0x40000), PAGE_READWRITE| PAGE_NOCACHE))

找到

for(index = 0; index< FrameBufferSize/sizeof(*ptr); index++)

改为

for(index = 0; index<320*240; index++)

 

3 注册表的修改

platform.reg下找到[HKEY_LOCAL_MACHINE/Drivers/Display/S3C2410/CONFIG]

 作如下修改.

[HKEY_LOCAL_MACHINE/Drivers/Display/S3C2410/CONFIG]

   "DisplayDll"="DeviceEmulator_lcd.dll"

   "LCDVirtualFrameBase"=dword:Ac100000

   "LCDPhysicalFrameBase"=dword:30100000

 

LCDVirtualFrameBaseLCDPhysicalFrameBase这两个值是和config.bib文件中的配置相对应的

 

yes!!!!, 看到6.0的桌面了.

 

原创粉丝点击