修改飞凌ok6410的默认lcd显示设备(代码片段)

Mr-Bruce Mr-Bruce     2022-10-22     687

关键词:

         我用的飞凌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裸机范例

/******************************************实验步骤1.配置引脚功能,将其GPI、GPJ引脚设置为VD数据输出模式,及GPJ后几位设置成LCD时钟输出;2.设置LCD时序值,初始化时序值。(1)需要初始化时序:VSPW、VBPD、LINEVAL、VFPD、HSPW、HBPB、HOZVAL... 查看详情

windowsce6.0下使用iamstreamconfig接口更改拍摄图像的分辨率(代码片段)

...      在对飞凌OK6410开发板自带的摄像头测试程序进行修改后,进行调试时发现拍摄的图像有点小,分辨率为320*240, 查看详情

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

...;然后让师弟测试摸索了下,发现网上现有资料都无法修改成功,他经过几天的努力后给出了正确的修改方法。下面分享下该修改方法,希望可以帮到有同样需求的同道中人。仅供参考!       步骤1:   ... 查看详情

e-book-tiny6410-lcd的使用

电子书需要通过屏幕显示出来,首先写了LCD模块。代码上传到了github https://github.com/qq2216691777/E-book本次完善了lcd模块的程序。可以适用在其他地方。代码:fb.c fb.h#include<sys/types.h>#include<sys/stat.h>#include<sys/mman.h&g... 查看详情

编程\_lcd驱动程序框架\_使用设备树(代码片段)

编程_LCD驱动程序框架_使用设备树参考资料,GIT仓库里:基于这个程序修改:IMX6ULL\\source\\03_LCD\\03_lcd_drv_qemu_okSTM32MP157\\source\\A7\\03_LCD\\03_lcd_drv_qemu_ok参考:内核自带的示例驱动程序Linux驱动源码:drivers/v 查看详情

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

...M的裸机程序调试环境  系统: ubuntu16.04裸板:飞凌公司OK6410开发板目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境  1、安装配置ckermit在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,... 查看详情

七在u-boot中让lcd显示图片(代码片段)

1.编译U-boot  准备好U-boot压缩包urbetter-u-boot-1.1.6-v1.0.tgz,输入命令:tar-xvf urbetter-u-boot-1.1.6-v1.0.tgz  进入U-boot目录,按顺序执行以下命令:  makeclean  makesmdk6410_config  make  会报出很多/usr/local/arm/arm-none-linux-gnueabi... 查看详情

linux驱动开发lcd(代码片段)

...同分辨率的LCD屏幕eLCDIF控制器驱动代码相同,只需要修改好对应的屏幕参数。Linux内核将所有frameb 查看详情

嵌入式linux|使linux的启动信息显示到lcd上面&设置lcd屏幕为终端控制台(代码片段)

...提是,已经将LCD驱动程序移植到内核中去)需要修改bootloader中的启动参数信息。一、默认串口显示setenvbootargs'console=ttymxc0,115200root=/dev/mmcblk1p2rootwaitrw'saveenv二、在LCD显示setenvbootargs'console=tty0,115200root=/... 查看详情

linux设备树-lcd驱动程序(代码片段)

一、修改设备树1.1硬件接线1.2修改s3c2440-pinctrl.dtsi修改内核arch/arm/boot/dts/s3c2440-pinctrl.dtsi文件,在pinctrl节点下添加两个引脚配置节点:lcd_pinctrl:lcd_pinctrlsamsung,pins="gpc-8","gpc-9","gpc-10","gpc-11","gpc-12","gpc-13","gpc-14","gpc-15","gpd-0","gpd-1","g... 查看详情

lcd学习(代码片段)

LCD简介(1)显示器,常见显示器(2)LCD(LiquidCrystalDisplay),液晶显示器,原理介绍(3)LCD应用领域(4)LEDOLED1.17.1.2、电子显示器的原理(1)像素(分辨率)(2)显存,用来做显示的内存(3)字模(4)字库(5)控制器和驱动器(6)软件+硬件实现功能1.17.1.3160... 查看详情

androidfragmentspinner修改默认显示的文本内容(代码片段)

...xff0c;spinner当然是显示默认的第一条数据,当我点击了修改的界面,这个显示的日期需要传递到spin 查看详情

基于51单片机通过点击移位按键移位修改lcd1602字符型液晶显示器显示时分秒个位十位数值的计时项目工程(代码片段)

1#include<reg52.h>//单片机头文件2#defineucharunsignedchar//宏定义,用uchar表示unsignedchar,叫无符号字符型数据类型,取值范围为:0到255。3#defineuintunsignedint//宏定义,用uint表示unsignedint,叫无符号整数型数据类型,取值范围为:0到65535... 查看详情

lcd显示异常分析——撕裂(teareffect)(代码片段)

转自:LCD显示异常分析——撕裂(teareffect)概述在上一篇《LCD显示异常分析——开机闪现花屏》中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(teareffect)问题进行详细分析,以及给出这类问题的常用解决方法。本... 查看详情

lcd浮点数显示函数的探讨(代码片段)

LCD浮点数显示函数的探讨原创2017年12月19日单片机开放附赠的学习资料里面很少见到显示浮点数的函数,显示浮点数的操作也相当烦坠!一般转换显示法拿STM32单片机资源,我们选取ADC采样部分函数来看显示过程adcx=Get_Adc_Average(AD... 查看详情

easyuimessager默认样式修改(代码片段)

$.messager.defaults=ok:"是",cancel:"否",width:300;$.messager.confirm(‘删除记录‘,‘Pleaseenteryourname:‘,function(r)if(r)alert(‘Yournameis:‘+r);); 查看详情

在lcd显示摄像头图像(代码片段)

框架我们将从摄像头读到数据在LCD上显示,首先将摄像头数据读出到一块内存上,然后设置好LCD控制器从这块内存读取数据到LCD显示屏上,对于摄像头数据格式来说有YUV,MJPEG,RGB,而我们的LCD只支持RGB格式的数据格式,所以这里面还要将... 查看详情

51单片机lcd1602显示的例程(代码片段)

  闲着没事,把自己写过的一些函数好好封装打包一下,以便以后自己使用,懒得又忘记了在哪个文件夹里面保存着。1、LCD1602显示的原理  原理:https://zhuanlan.zhihu.com/p/1661842852、LCD1602头文件#ifndef__LCD1602_H__#define__LCD1602_H__#d... 查看详情