专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
如何在TQ335X开发板上进行LCD渠道移植 1
2019-07-15 15:19
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
6405
0
1011
如何在TQ335X开发板上进行LCD渠道移植
TI 335X处理器的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,如果我们想进行LCD的配置,我应该通过DTS配置完成LCD的显示。下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路。
(1)初步分析
由于TQ335x使用的芯片是AM335x,故仍然可以参考am335x-evm.dts。当然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-evm.dts为例。大体上浏览下DTS文件,可以发现两个醒目的节点:一个是panel,一个是backlight。接下来我们逐个分析。
(2)panel节点信息分析及配置
从panel节点可以获得如下信息:
1. 匹配内核驱动的关键词是:"ti,tilcdc,panel",可以通过这个关键字找到相应的驱动。
2. 管脚配置在节点lcd_pins_s0内
3. panel-info中可以配置LCD的硬件信息,如LCD的分辨率等
4. display-times中记录了LCD刷屏的相关时序。
其中,panel-info和display-times需要去LCD手册中查找,管脚配置需要根据AM335x的芯片手册、数据手册及TQ335x的原理图确定,驱动则需要去内核的driver目录下查找。下面,我一一解决上述几个问题:
首先是设置panel-info和display-times。我的TQ335x是用的我调试TQ210时使用的触摸屏,型号是TN92,这个屏是800*480的分辨率,因此,panel-info与evm开发板的配置是相同的,可以不做任何修改。但是,不同屏幕的display-times一般是不相同的,因此,需要查阅触摸屏的手册来确认display-times。
但是,如果对LCD各参数不怎么熟悉的话,很难建立这两个表与DTS中display-times的关系,这时应该去查阅一下linux内核的文档和芯片手册。在内核文档:”Documentation/devicetree/bindings/video/display-timing.txt"有相关的记载,该文件中有形象的描述,具体如下:
+----------+-------------------------------------+----------+-------+
| | ↑ | | |
| | |vback_porch | | |
| | ↓ | | |
+----------#######################################----------+-------+
| # ↑ # | |
| # | # | |
| hback # | # hfront | hsync |
| porch # | hactive # porch | len |
|<-------->#<-------+--------------------------->#<-------->|<----->|
| # | # | |
| # |vactive # | |
| # | # | |
| # ↓ # | |
+----------#######################################----------+-------+
| | ↑ | | |
| | |vfront_porch | | |
| | ↓ | | |
+----------+-------------------------------------+----------+-------+
| | ↑ | | |
| | |vsync_len | | |
| | ↓ | | |
+----------+-------------------------------------+----------+-------+
综合这三份资料,很容易确定下LCD的屏的时序参数的范围(需要强调的是,上述参数不一定精确,还需要使用图片实机测下效果),经过多次实验,最终确定下了LCD的时序参数,详情如下:
panel {
compatible = "ti,tilcdc,panel";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&lcd_pins_s0>;
panel-info {
ac-bias = <255>;
ac-bias-intrpt = <0>;
dma-burst-sz = <16>;
bpp = <32>;
fdd = <0x80>;
sync-edge = <0>;
sync-ctrl = <1>;
raster-order = <0>;
fifo-th = <0>;
};
display-timings {
800x480p62 {
clock-frequency = <30000000>;
hactive = <800>;
vactive = <480>;
hfront-porch = <214>;
hback-porch = <40>;
hsync-len = <4>;
vback-porch = <20>;
vfront-porch = <23>;
vsync-len = <4>;
hsync-active = <0>;
vsync-active = <0>;
};
};
};
时序确定下来之后需要关注的就是管脚配置,由于am335x集成了LCD控制,该控制器与LCD的连接方式是通过GPIO管脚复用实现的,而evm开发板与TQ335x的LCD都接在了同一个LCD控制器上,因此,直接使用原有的管脚配置即可。这一点也可以通过阅读TQ335x的原理图确认,这里我就不再分析了。
(3)backlight节点分析及配置
从backlight节点中可以获得如下信息:
1. 匹配内核驱动的关键词是"pwm-backlight"。
2. 使用的ECAP0进行PWM输出。
3. 有8个亮度等级。
4. 默认的亮度等级是8,也就是最亮。
了解以上信息后需要查阅TQ335x手册,弄清楚backlight控制管脚是如何连接的。通过分析TQ335x的原理图可知,TQ335x的背光控制也是使用PWM方式控制,且该引脚接到AM335x的ECAP2_IN_PWM2_OUT管脚上,而evm开发板是接在ECAP0_IN_PWM0_OUT管脚上的,因此,需要修改DTS配置才能正常使用TQ335x的背光功能。思路是将DTS中的背光配置由EACP0改为EACP2,下面是修改的步骤:
Step1. 将backlight节点中&eacp0改为&eacp2。
Step2. 将&epwmss0改为&epwmss2,并将该节点内的ecap0: ecap@48304100改成ecap0:ecap@48304100,然后将该节点中的&ecap0_pins改成&ecap2_pins。
Step3. 将ecap0_pins节点改名为ecap2_pins,然后将pinctrl-single,pins内的内容改为:0x19c MUX_MODE4。
最后修改后的DTS相关部分如下:
backlight {
compatible = "pwm-backlight";
pwms = <&ecap2 0 50000 0>;
brightness-levels = <0 51 53 56 62 75 101 152 255>;
default-brightness-level = <8>;
};
&epwmss2 {
status = "okay";
ecap2: ecap@48304100 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&ecap2_pins>;
};
};
ecap2_pins: backlight_pins {
pinctrl-single,pins = <
0x19c MUX_MODE4 /* MCASP0_AHCLKR.eCAP2_in_PWM2_out MODE4 */
>;
};
这样就完成了背光功能的DTS配置。
(4)配置内核驱动
由于evm开发板的代码是使用ATAGS方式启动的,没有配置pwm-backlight和基于TI LCD控制器的通用panel驱动,需要通过menuconfig开启相应的配置项。通过DTS中的compatible属性可以找到pwm-backlight驱动是在drivers/video/backlight/pwm-bl.c中实现的,而panel驱动则是在drivers/gpu/drm/tilcdc/tilcdc_panel.c中实现的,阅读相应目录下的Makefile和Kconfig就可以确定出如何配置menuconfig。Makefile和Kconfig的分析过程很简单,我就不多写了,下面是通过menuconfig开启相应功能的步骤。
Step1. 执行menuconfig指令:
make ARCH=arm menuconfig
Step2. 开启通用pwm-backlight驱动和基于TI LCD控制器的通用panel驱动,配置内容如下:
Graphics support --->
Pulse-Width Modulation (PWM) Support --->
<*> ECAP PWM support
<*> EHRPWM PWM support
-*- Backlight & LCD device support --->
<*> Generic PWM based Backlight Driver
Graphics support --->
Direct Rendering Manager --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<*> DRM Support for TI LCDC Display Controller
(5)编译DTB和内核
执行DTB编译指令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- tq335x.dtb
执行内核编译指令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8
发送
看不清?
0条回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>