修改飞凌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显示设备的主要内容,如果未能解决你的问题,请参考以下文章

ok6410的LCD裸机范例

修改SMDK6410的调试串口为普通串口(wince系统)

搭建S3C6410开发板的测试环境

第五章 S3C6410

ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境

Windows CE6.0下使用IAMStreamConfig接口更改拍摄图像的分辨率