0

全志V3S嵌入式驱动开发(编译器升级到7.5)

 11 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131320136
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

全志V3S嵌入式驱动开发(编译器升级到7.5)

嵌入式-老费 已于 2023-06-21 09:37:42 修改 53

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        看过我们文章的朋友都知道,前面为了做v3s的驱动,对linux kernel进行了两次升级。第一次升级是从4.10.y升级到4.14.y,另外一次升级是从4.14.y升级到5.2.y。这中间最主要的原因,就是为了驱动适配的需要,更新的内核可以对硬件驱动有更好的支持,架构也更合理。

        如果说内核升级尚且可以理解,那为什么要对编译器升级呢?这里面,最重要的一点就是语言的升级。如果平时开发语言用到c++的同学应该也不陌生,这几年c++的标准一直在修改。这也导致了很多开源软件的写法也在同步修改。所以就有可能出现这样一种状况,那就是用老的编译器无法编译新的开源代码,这就是非常遗憾的一件事情。所以为了解决这一问题,我们也同样对编译器进行了升级,从6.3.1升级到7.5。

1、选择什么样的编译器

        编译器最好和kernel比较匹配,比如kernel 5.2.y是在2019年发布的,所以我们可以选择在2019年release出来的gcc交叉编译器,比如7.5,

https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/

2、更新环境变量

        如果之前的编译器路径已经写到了.bashrc文件当中,那我们只需要解压一下编译器包,修改一下路径即可。因为编译器还都是arm-linux-gnueabihf-这样的前缀,所以除了环境变量,其他uboot、kernel、buildroot也只是重新编译下就可以了。

export PATH=$PATH:/home/feixiaoxing/gcc-linaro-7.5.0-2019.12-i686_arm-linux-gnueabihf/bin

3、重新编译uboot、测试

        首先需要重新编译的就是uboot。之前的配置要记得进行保留,输入make clean就好。接下来就是重新编译make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-。结束之后,再用dd工具烧入到sd卡里面测试下,确保没有问题。

4、重新编译内核和dtb,结束后烧入测试

        uboot测试没有问题之后,同样要对kernel 5.2.y重新进行编译。步骤和uboot差不多,第一步是clean之前生成的中间文件。第二步,重新编译。第三步,分别拷贝dtb和zImage到sd卡,查看是否可以正常启动。

        如果一切都没有问题,可以在启动log中看到关于新编译器的打印,



newCodeMoreWhite.png

        看到gcc version 7.5.0打印后,这个时候就可以确认内核确实使用新编译器编译出来的。

5、重新编译buildroot、测试

        完成了uboot和kernel的重新编译之后,就可以开始buildroot的编译。要做好buildroot的编译,有两个部分要做好,第一,就是对之前根文件数据要记得保存,毕竟前面做了很多的测试和配置,中间有很多的资料可以参考和借鉴,所以这部分的内容最好做一个备份。

tar -zcvf root_back.tar.gz /media/feixiaoxing/64959927-1d53-4bb1-8102-d7c16fc29ade/

        第二,在buildroot中编译器的部分做修改,

588210b5f18a41c3809e5d7aecfb9e19.png

         修改的地方集中在三处,1)新编译器的目录位置;2)新编译器的gcc version修改为7.x;3)kernel headers修改为4.10.x。其中最后一条似乎与5.2.y的实际kernel版本不匹配,原因是这个buildroot在2017.8才正式发布的。

        修改完毕,就可以按照uboot和kernel的三部曲开始操作了,分别是clean、make和烧入。其中烧入的话,就是备份完之前的rootfs之后,用新的rootfs来代替。

          接着就是正常的测试验证,如果系统正常起来,就代表ok。

6、用户程序和驱动验证

        前面依次完成了uboot、kernel和buildroot的升级。那么在上层程序这部分,用户可以自己编一些程序验证下,也可以查看一下之前的设备驱动是否ok。比如查看lcd背光是否点亮等等,


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK