目录
1. 我担心这有点尴尬
2. 移植思路
3. 移植LCD驱动
3.1 确定LCD参数
3.2 修改设备树
3.3 完善驱动
4. 移植触摸屏驱动
4.1 确定触摸屏型号
4.2 在设备树中指定触摸IC信息
4.3 重新配置内核添加驱动
4.4 调试:找出问题
4.5 解决方法
4.6 其他情况
4.7 gt9xx芯片固件更新
100ask_imx6ull预售购买链接&产品介绍:
100ask.taobao.com (点开店铺首页的第一张海报即可进入购买页面)
很多学员有过STM32的学习经验,他们手上的开发板很多,LCD也很多。
一个LCD还挺贵的,他们问,100ask_imx6ull开发板能否兼容其他厂家的LCD?最近我们一直在调试这个问题。所以就有了本文。
1. 我担心这有点尴尬
同一款芯片的开发板,基本上都是源自厂家的公板。
如果有人跟你说:我们的程序在别家的板子上无法运行,这是有可能的,因为还没移植。
但是如果有人跟你说:我们的学习资料,只适合我们的板子。
那只有2个原因:资料太差,你不适合学习这行。
如果相同芯片的板子都无法移植,工作时一定是使用其他芯片的,到时你怎么办啊?
很多学员有过STM32的学习经验,他们手上的开发板很多,LCD也很多。
一个LCD还挺贵的,他们买Linux开发板时,问我:
a. 能不能在100ASK_IMX6ULL上使用手上的LCD?
这当然能,做一个转接板就可以了,几元钱就可以做出来。
b. 能不能移植这些LCD驱动?
这很简单,半小时就可以搞定。
c. 能不能写成文档?
这有点尴尬。
咱也不藏头藏尾了,有话直接说。
去年9月份左右,我们专心录视频,想法很美好。
我们只录视频,同时支持各家IMX6ULL开发板,大家一起把生态做好。
所以你可以看到我们的视频/文档支持野火的IMX6ULL、支持正点原子的IMX6ULL。
但是后来发现不行啊,我录收费视频,他们也录视频还免费。
虽然我自信有10几年功力,但是也挡不住免费啊。
这样下去我得没饭吃,所以我们也做了开发板,还0利润。
这就有很大的竞争关系了。
所以,我们的视频、文档是否继续支持同行的板子?
看似难以决定,想清楚后就不难了。
我们会继续支持各家的板子,不能因为会给同行带来好处就废弃承诺。
我们的裸板+同行的LCD,这是避免浪费的好事,不能因为会给我们引流而避讳。
2. 移植思路
LCD除了显示之外,它的表面通常还贴有一个触摸屏。
所以我们移植的是2个设备的驱动:LCD、触摸屏。
LCD驱动在内核中已经有了,并且很完善,我们只需要修改设备树就可以:修改时序等LCD参数,修改背光引脚等板子参数。
触摸屏的驱动在内核中一般也有了,各厂家用的触摸屏IC可能不同。需要配置内核把它加进去,同时修改设备树:指定触摸IC的信息(比如I2C地址),指定中断引脚。
如果能拿到这块LCD在别的板子上的内核源码,就可以参数它的LCD参数、触摸IC信息。
再结合你用的开发板,把涉及的GPIO找出来写入设备树。
简单吧?
开工!
3. 移植LCD驱动
IMX6ULL跟LCD的连接框图如下:
IMX6ULL内部有LCD控制器,肯定是厂家对这个LCD控制器最熟悉了,所以他们为了卖芯片,一般都会在内核中做好LCD控制器的驱动程序。
而IMX6ULL可以接各种LCD,这些LCD参数各有不同。LCD控制器的驱动程序会去设备树中获得这些参数,并根据这些参数来设置LCD控制器。
所以,我们要做的事情从理论上讲很简单:根据LCD参数修改设备树。
但是,谁说厂家的驱动就没有BUG,就完美无缺了?
我们要做的事有3项:确定LCD参数,修改设备树,完善驱动。
3.1 确定LCD参数
如果还保留有LCD的芯片手册,这是最好的。可惜我碰到的大多学员早已经忘记这些资料在哪了。
野火的屏在板子背后直接写明分辨率是多少,这比较简单直接。
正点原子的屏在背后画有一个表格,如下: