基于北斗和4G Cat1模组的智慧物流开发(五)对dts,dtc和dtb学习的总结

举报
wuyicom 发表于 2021/06/21 11:53:09 2021/06/21
【摘要】     重新提供了源码包和dtb设备树包,从dtb设备树包中提取stm32mp157c-ya157c-lcd-v2.dtb上传到开发版的/boot目录,还修改了修改启动文件:/boot/mmc0_stm32mp157c-ya157c-v2_extlinux/extlinux.conf里面的DEFAULT stm32mp157c-ya157c-hdmi-v2-sdcard改为DEFAULT s...

   

1.png

 

 重新提供了源码包和dtb设备树包,从dtb设备树包中提取stm32mp157c-ya157c-lcd-v2.dtb上传到开发版的/boot目录,还修改了修改启动文件:/boot/mmc0_stm32mp157c-ya157c-v2_extlinux/extlinux.conf里面的DEFAULT stm32mp157c-ya157c-hdmi-v2-sdcard改为DEFAULT stm32mp157c-ya157c-lcd-sdcard。保存后,运行sync,重启后报错,出现默认启动lcd模式下的无限启动,错误如图所示:

2.png

    得到群里的谢小康的帮助,终于找到原因,在此感谢他的帮助。原因是还有修改lcd启动存储设置root=/dev/mmcblok1p6改成mmcblok0p6。修改后,运行sync,重启后成功登陆myir系统。不过有点可惜的是屏幕有条直线,应该是视频线的问题。

3.png

    根据之前的学习,使用2种编译方法把dts编译成dtb

    1.把下载好的iotclub-ya157c-kernel.tar.bz2源码包上传到u /home/wuyicom/softwares目录里面。

tar -xvf /home/wuyicom/softwares/iotclub-ya157c-kernel.tar.bz2 -C /home/wuyicom/workspace

查看stm32mp157c-ya157c-lcd-v2.dts的依赖文件stm32mp157c-ya157c-v2.dts,找到i2c2里面的屏幕驱动设置,如图所示:

4.png

进入目录:cd /home/wuyicom/workspace/iotclub-ya157c-kernel/,找到my_dts_make.sh,执行./ my_dts_make.sh,出现下图的2个报错:

5.png

6.png

    出现的第一个问题是忘记安装sudo apt-get install –y ncurses-dev bc linux-headers-generic gcc-multilib libncurses5-dev libncursesw5-dev lrzsz dos2unix lib32ncurses5 repo libssl-dev。报这个错误是没安装libssl-dev。第二个问题应该是先建立目录$PWD/../build/install_artifact/boot/,在运行make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"。因为只是编译获取stm32mp157c-ya157c-lcd-v2.dtb,下面的三条命令可以不需要。

    2.使用dtc工具编译,把相关依赖包存stm32mp157*dts2dtb.sh放在include目录里,dts2dtb.sh的代码在上一篇博客有介绍。

加执行权限:chmod +x dts2dtb.sh

运行命令:./ dts2dtb.sh

    3.上传980MMYiR-STM32-kernel.tar.bz2/home/wuyicom/softwares目录。

tar -xvf /home/wuyicom/softwares/MYiR-STM32-kernel.tar.bz2 -C /home/wuyicom/workspace

进入目录:cd /home/wuyicom/workspace/MYiR-stm32-kernel/myir-ya157c-kernel

cp /home/wuyicom/workspace//iotclub-ya157c-kernel/my_dts_make.sh .

修改stm32mp157c-ya157c-lcd-v2.dts代码:(1)把#include "stm32mp157c-ya157c-hdmi-v2.dts"该为#include "stm32mp157c-ya157c- v2.dts"。(2)注销关于HDMI信息。(3)添加声音

         sound {

                 status = "okay";

             };

 

          phy_pwrseq: phy-pwrseq {

                   compatible = "myir,ar8035";

                   phy-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>;

         };

        

在源码stm32mp157c-ya157c-v2.dts做修改把touchscreen@38改为goodix_ts@14

修改my_dts_make.sh代码,修改如下:

7.png


8.png

9.png

能转换成功dtb,但转换的dtb还是无法点亮屏幕,说明使用980MMYiR-STM32-kernel.tar.bz2因版本不同,而想简单修改了代码的方式行不同。

    通过对三次对dtsdtb的操作,总结一下经验,(1)当dts需要很多依赖时,建议使用官方提供方式来转换dtb,好处是避免因缺失依赖包而导致编译转换不成功。但缺点是会把所有的dts都转换为dtb一次,很麻烦。(2)可以把dts的依赖包放在一个目录里,在通过dtc工具使用dts2dtb.sh脚本转换成dtb,好处是只需要转换自己想要的dtb。缺点就是你必须要了解dts相关依赖关系。(3)如果是kernel不符合,除非有能力,否则不要做,吃力不讨好,浪费时间。

    总的来说,通过这段时间的学习和操作,对dtsdtcdtb有了更深入的了解。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。