Wince 6.0 BSP的移植(二)
2010-03-04 11:44
411 查看
转载请注明出处
作者:小马
移植外设驱动时, 可以再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
LCDVirtualFrameBase和LCDPhysicalFrameBase这两个值是和config.bib文件中的配置相对应的.
yes!!!!, 看到6.0的桌面了.
作者:小马
移植外设驱动时, 可以再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
LCDVirtualFrameBase和LCDPhysicalFrameBase这两个值是和config.bib文件中的配置相对应的.
yes!!!!, 看到6.0的桌面了.
相关文章推荐
- Wince 6.0 BSP的移植(一)
- Wince 6.0 BSP的移植(二)
- Wince BSP从5.0移植到6.0(三)
- wince 6.0 BSP移植文档
- wince 6.0 BSP 移植问题
- WinCE6.0 DEVICEEMULATOR BSP在GEC2410开发板上的移植(3)-PwrButton驱动移植及分析
- Wince 6.0 BSP的移植(一)
- WinCE 6.0 BSP Directory Structure(BSP目录结构ZL)
- WinCE6.0 DEVICEEMULATOR BSP的BackLight驱动简析
- wince6.0 自己编译BSP 支持sqlCE3.0
- (转载)巧借WinCE BSP移植,嵌入式系统开发有捷径
- wince 6.0 移植sdl 1.2.14
- 成功把Wince 6.0移植到qemu中运行
- Wince将Public和Private下的代码移植到BSP,快速编译Public和Private下的代码
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)
- AT91SAM9263 WINCE 6.0 R2驱动开发-官方BSP编译错误的解决
- WINCE 6.0 BSP包内容介绍
- AT91SAM9263 WINCE 6.0 R2驱动开发-官方BSP包TFTLCD显示调试
- 加快编译WinCE 6.0的驱动和BSP速度的方法(初级)
- 2011-11-21 —— wince6.0 BSP 里面加了 locale 后编译 failed 之解决办法