嵌入式Linux系统显示屏移植方法总结

@嵌入式Linux系统显示屏移植方法总结(debian9.5系统+移植了Linux3.8.13内核
硬件:beagleboneBlack+element14 7寸显示屏

1.编译Linux内核

1.1 编译准备

Linux内核源代码(linux-3.8.13-bone69-bb-view-7.zip,版本3.8.13)
Debian9.5系统可在官网下载
镜像下载地址:镜像下载地址
内核源码下载地址:内核源码下载地址
在这里插入图片描述

1.2 编译准备

使用默认配置,配置Linux内核:
执行命令:cd ~/element_rtlinux/bbb-debian-3.8.13-lcd 进入内核所在目录
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig

配置内核开启LCD和Touchscreen相关驱动
执行命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xconfig
关闭CPU frequency scaling, ‘CPU Power Management —> CPU Frequency scaling’(适配xenomai)
打开Pulse-Width Modulation (PWM) Support —>ECAP PWM support 和EHPRWM PWM support(适配LCD背光系统backlight PWM输出)

打开Graphics support—>Backlight&LCD device support 和Generic PWM based Backlight Driver

Ctrl+F搜索 LCDC 打开下图选项配置基于Ti LCDC控制器的通用panel

安装lzop
执行命令:sudo apt-get install lzop
编译内核:
执行命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage –j 4
编译完成后
在这里插入图片描述

1.3 移植前准备

在这里插入图片描述
查看安装结果:
在这里插入图片描述
查看arch/arm/boot/目录下的zImage
在这里插入图片描述

2 设备树的配置和编译

进入设备树文件夹
执行命令:cd arch/arm/boot/dts/
如下图所示主要设备树文件:am335x-boneblack.dts am335x-bone-common.dtsi am33xx.dtsi
我们主要在设备树am335x-bone-common.dtsi中修改。
在这里插入图片描述
配置设备树文件加载lcd相关驱动
Lcd设备树的配置可以分为三个部分:1.Lcd背光系统的配置 2.显示屏(panel)的配置 3.触摸功能的配置

2.1 背光系统的配置

打开am335x-bone-common.dtsi、am33xx.dtsi文件
执行命令:gedit am335x-bone-common.dtsi am33xx.dtsi
在am33xx.dtsi文件中对epwmss1和ehrpwm1的status进行修改设置为okay,原来为disabled。epwmss1和ehrpwm1这两个节点是关于pwm输出的。
在这里插入图片描述
在am335x-bone-common.dtsi文件中,做如下的添加:
在am33x_pinmux:pinmux@44e1088节点下面添加背光引脚和引脚功能(ehrpwm1_pins:pinmux_backlight_pins)如下所示。查看BB-view的datasheet可以得到相关的引脚,如下图。之后查看BBB_Header_Table确定引脚的OFFSET和功能。
在这里插入图片描述
在这里插入图片描述
在am335x-bone-common.dtsi文件下,ocp节点下面添加,如下图所示。开启pwm功能。

在这里插入图片描述
在am335x-bone-common.dtsi文件下添加backlight节点,配置背光驱动,开启lcd的背光系统。其中的compatible属性“pwm-backlight”与backlight背光系统驱动对应,调用对应的驱动程序。背光子系统位于/driver/video/backlight目录下,balight.c文件。
该节点添加位置也在ocp节点下面:/ocp/backlight
在这里插入图片描述

2.2 显示屏panel配置

依然是在am335x-bone-common.dtsi、am33xx.dtsi下进行配置
在am335x-bone-common.dtsi文件下面,在am33x_pinmux:pinmux@44e1088下添加lcd_pins节点如下,该节点是关于lcd引脚引脚的配置。主要参考BBB_Header_Table,和BB-view的datasheet。
在这里插入图片描述
在am335x-bone-common.dtsi文件下面,添加panel节点如下。
panel节点也添加在ocp节点下面;
在这里插入图片描述

2.3 其余配置

依然是在am335x-bone-common.dtsi、am33xx.dtsi下进行配置
首先在am33xx.dtsi文件下面找到tscadc节点,对其进行修改如下。
在这里插入图片描述
在am335x-bone-common.dtsi文件下面添加如下:
添加tscadc节点,他是对am33xx.dtsi文件下tscadc节点的调用,并对其进行补充。写法主要参考了内核文档documentation/devicetree/bindings中关于触摸屏相关的设备树文件。该节点添加位置也在ocp节点下面。
在这里插入图片描述
在am335x-bone-common.dtsi文件下面添加fb节点,添加位置也在ocp节点下面。
在这里插入图片描述

2.4 设备树的编译

进入内核源码目录

执行如下命令:cd ~/element_rtlinux/bbb-debian-3.8.13-lcd/
编译设备树文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-boneblack.dtb
编译成功过显示:
在这里插入图片描述
在arch/arm/boot/dts/目录下面会生成am335x-boneblack.dtb文件
在这里插入图片描述

3 内核与设备树的移植

3.1 安装内核模块到指定文件

将安装的lib内核模块压缩拷贝到BeagleBone系统,并解压至根目录下;
PC端:
cd lib
tar czvf lib.tar.gz ./*

BBB端:
tar xzvf lib.tar.gz –C /lib

3.2 移植内核

将arch/arm/boot/目录下的zImage拷贝到系统的内核分区(/boot)下。
对zImage文件进行重命名为vmlinuz-4.14.71-ti-r80以匹配uEnv.tst文件。

3.3 移植设备树文件

将之前编译好的在arch/arm/boot/dts/目录下的am335x-boneblack.dtb文件拷贝到bbb中的boot目录下的dtbs文件夹下面。

4 遇到的一些文件

上电启动过程中,分析内核启动信息碰到的问题
问题1:confict P8.45(#5:BB-BONELT-HDMI)
在这里插入图片描述
猜测:这是P8.45引脚与BB-BONELT-HDMI的配置冲突了
解决方法:
打开设备树文件 am335x-bone-common.dtsi ,将引起冲突的这部分备注掉就行。
在这里插入图片描述
问题2:pin 44e108a0 already request by hdmi.15;cannot caim for panel.9
在这里插入图片描述
解决方法:也是因为引脚的原因导致panel节点加载不了。
打开设备树文件 am335x-bone-common.dtsi ,将引起冲突的这部分备注掉就行。
在这里插入图片描述
在这里插入图片描述
背光系统加载成功会显示
在这里插入图片描述
成功启动界面会出现linux企鹅,并进入Linux系统。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值