修改飞凌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选择的代码,如下

[cpp]  view plain copy
  1. //select LCD module  
  2.     switch(g_pBootCfg->ConfigFlags&LCD_TYPE_MASK){  
  3.         case LCD_HUA350_RGB:  
  4.             LcdType = LDI_HUA350_RGB;  
  5.             g_dwLcdWidth = 320;  
  6.             g_dwLcdHeight = 240;  
  7.             g_dwLcdBpp = 16;  
  8.             break;  
  9.         case LCD_HUA430_RGB:  
  10.             LcdType = LDI_HUA430_RGB;  
  11.             g_dwLcdWidth = 480;  
  12.             g_dwLcdHeight = 272;  
  13.             g_dwLcdBpp = 16;  
  14.             break;  
  15.         case LCD_HUA560_RGB:  
  16.             LcdType = LDI_HUA560_RGB;  
  17.             g_dwLcdWidth = 640;  
  18.             g_dwLcdHeight = 480;  
  19.             g_dwLcdBpp = 16;  
  20.             break;  
  21.         case LCD_QUN700_RGB:  
  22.             LcdType = LDI_QUN700_RGB;  
  23.             g_dwLcdWidth = 800;  
  24.             g_dwLcdHeight = 480;  
  25.             g_dwLcdBpp = 16;  
  26.             break;  
  27.         case LCD_VGA800_RGB:  
  28.             LcdType = LDI_VGA800_RGB;  
  29.             g_dwLcdWidth = 800;  
  30.             g_dwLcdHeight = 600;  
  31.             g_dwLcdBpp = 16;  
  32.             break;  
  33.               
  34.         case LCD_VGA1024_RGB:  
  35.             LcdType = LDI_VGA1024_RGB;  
  36.             g_dwLcdWidth = 1024;  
  37.             g_dwLcdHeight = 768;  
  38.             g_dwLcdBpp = 16;  
  39.             break;  
  40.           
  41.         default:  
  42.             LcdType = LDI_HUA350_RGB;  
  43.             g_dwLcdWidth = 320;  
  44.             g_dwLcdHeight = 240;  
  45.             g_dwLcdBpp = 16;  
  46.             break;  
  47.   
  48.           
  49.     }  
          我想这就是我要找的了,在这段代码前面添加下面两句,覆盖原有的关于LCD配置的值即可:

[cpp]  view plain copy
  1. g_pBootCfg->ConfigFlags&=~LCD_TYPE_MASK;  
  2. g_pBootCfg->ConfigFlags|=LCD_VGA1024_RGB;  

         这里要注意下,不要将LCD_VGA1024_RGB写成LDI_VGA1024_RGB,我一开始就犯了这个错误,直接从代码中拷贝,结果一不小心拷错了,结果找了好久才发现了这个问题,还在飞凌论坛上发了个帖子,不过没有人回复,比较郁闷,好在找到了问题所在。

        修改好了之后,重新编译一下bootloader,然后Make Image,这里不用对整个工程进行重新编译的。如下:

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值