修改飞凌OK6410的默认LCD显示设备
Posted Mr-Bruce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改飞凌OK6410的默认LCD显示设备相关的知识,希望对你有一定的参考价值。
我用的飞凌OK6410开发板在烧入系统(Wince6.0系统)后,默认是采用4.3寸触摸屏显示,而我的项目中采用的是HDMI高清显示,因此每次烧完系统后,都要重新用DNW来配置为高清显示驱动,比较麻烦,所以我打算修改一下eboot的程序,使其烧入系统后的默认显示设备为HDMI高清显示。下面主要是阐述一下我的思路和方法。
分析: 之所以默认采用4.3寸触摸屏显示,是因为初始写入Boot Media中的Boot Config中关于显示设备的配置是4.3寸触摸屏。这样每次启动系统时,bootloader会从Boot Media中将配置读出,从而选择相应的显示驱动。那么我们 也就有了两种修改方案了:第一种,在bootloader从Boot Media中读出关于显示配置后,我们将其重新赋值为HDMI显示屏,覆盖原先读出的值;第二种,在下载映像时,我们往Boot Media的配置中写入HDMI显示,这样以后读出的值就是HDMI了。
实现: 上面是我一开始的思路,按照这个思路,我首先实现了第一种方案。可以查看一下Eboot下的main.c文件和blcommon.c文件中的BootloaderMain函数,BootloaderMain()主要依次调用以下几个函数:OEMDebugInit()、OEMPlatformInit()、OEMPreDownload()、OEMLaunch(),查看的目的是找出源码中在哪里将配置信息从Boot Media中读出的。我发现在OEMPlatformInit()函数下,有这样一段调用
这段代码先从Boot Media中读取TOC信息(包含了Boot Config信息),然后调用函数初始化显示功能。进一步查看InitializeDisplay()函数,有一段关于LCD选择的代码,如下
//select LCD module
switch(g_pBootCfg->ConfigFlags&LCD_TYPE_MASK)
case LCD_HUA350_RGB:
LcdType = LDI_HUA350_RGB;
g_dwLcdWidth = 320;
g_dwLcdHeight = 240;
g_dwLcdBpp = 16;
break;
case LCD_HUA430_RGB:
LcdType = LDI_HUA430_RGB;
g_dwLcdWidth = 480;
g_dwLcdHeight = 272;
g_dwLcdBpp = 16;
break;
case LCD_HUA560_RGB:
LcdType = LDI_HUA560_RGB;
g_dwLcdWidth = 640;
g_dwLcdHeight = 480;
g_dwLcdBpp = 16;
break;
case LCD_QUN700_RGB:
LcdType = LDI_QUN700_RGB;
g_dwLcdWidth = 800;
g_dwLcdHeight = 480;
g_dwLcdBpp = 16;
break;
case LCD_VGA800_RGB:
LcdType = LDI_VGA800_RGB;
g_dwLcdWidth = 800;
g_dwLcdHeight = 600;
g_dwLcdBpp = 16;
break;
case LCD_VGA1024_RGB:
LcdType = LDI_VGA1024_RGB;
g_dwLcdWidth = 1024;
g_dwLcdHeight = 768;
g_dwLcdBpp = 16;
break;
default:
LcdType = LDI_HUA350_RGB;
g_dwLcdWidth = 320;
g_dwLcdHeight = 240;
g_dwLcdBpp = 16;
break;
我想这就是我要找的了,在这段代码前面添加下面两句,覆盖原有的关于LCD配置的值即可:
g_pBootCfg->ConfigFlags&=~LCD_TYPE_MASK;
g_pBootCfg->ConfigFlags|=LCD_VGA1024_RGB;
这里要注意下,不要将LCD_VGA1024_RGB写成LDI_VGA1024_RGB,我一开始就犯了这个错误,直接从代码中拷贝,结果一不小心拷错了,结果找了好久才发现了这个问题,还在飞凌论坛上发了个帖子,不过没有人回复,比较郁闷,好在找到了问题所在。
修改好了之后,重新编译一下bootloader,然后Make Image,这里不用对整个工程进行重新编译的。如下:
对于第二种方案,我试了几种修改方法,不过都没有成功,主要是我对Eboot源码不够熟悉,如果哪位高手知道如何修改,还请共享下,呵呵。。。。
以上是关于修改飞凌OK6410的默认LCD显示设备的主要内容,如果未能解决你的问题,请参考以下文章