tiny4412SDK 1161下的HD700驱动设置
Posted alex-space
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tiny4412SDK 1161下的HD700驱动设置相关的知识,希望对你有一定的参考价值。
平台:Tiny4412SDK 1161B + HD700
kernel:linux 3.5
手头有一块友善之臂的开发板,需要使用HD700屏来显示图片,但是移植好内核后/dev/fb0设备并不能用,看屏幕显示了三排小企鹅,并且存在色差,怀疑lcd驱动并不配套HD700之个型号,故需要做调整。
解决办法:linux 3.5中内核已经具备了HD700型号显示的驱动,只需在uboot引导内核传参的时候加上“lcd=HD700”就行了,例:bootargs=noinitrd root=/dev/nfs nfsroot=192.168.134.128:/tiny4412_nfs ip=192.168.134.10:192.168.134.128:192.168.134.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=HD700
过程分析:
1)、既然lcd驱动不对,但是还并不知道当前的lcd驱动具体是驱动什么型号的显示屏,通过查看内核启动信息,发现使用的是S702型号的LCD屏。
2)、知道驱动的具体型号之后,查阅了内核源代码,在机器初始化(mach-tiny4412.c->smdk4x12_machine_init()),注册系统各类驱动的平台设备信息位置,找到了lcd驱动的平台设备资源:
3)、通过翻阅代码可知,lcd的选型是根据定义好的各类lcd型号的数组来确定的,即要确定数组下标lcd_idx。由下图定义的 结构体数组可见当下标为0时,即是HD700型号资源。
4)、通过搜索lcd_idx变量,发现该变量只在一个地方被修改,即该函数最终决定lcd_idx的值。接下来查看该函数的具体调用。
5)、搜索发现上述函数仅在early_param()这个宏当中调用,该宏的作用是linux内核用来传递内核commandline参数的,即内核启动过程中会解析内核参数"lcd",来调用tiny4412_setup_lcd()函数。该内核参数可以在uboot引导的bootargs参数当中设置。
修改如下:
进入uboot命令行,执行一下命令:
print //查看uboot环境各参数值
setenv bootargs “原先参数 lcd=HD700” //设置引导参数bootargs的值
saveenv //保存设置的值
reset //重新运行uboot
6)、设置好之后发现lcd之显示一排企鹅,并能正确显示RGB像素信息。
以上是关于tiny4412SDK 1161下的HD700驱动设置的主要内容,如果未能解决你的问题,请参考以下文章
基于tiny4412的Linux内核移植 -- MMA7660驱动移植
基于tiny4412的Linux内核移植 -- SD卡驱动移植
基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)