(一文搞定)使用sd卡,往野火EBF6UL/LL-pro板子,移植官方uboot、kernel以及构建rootfs

0、事先声明

1、我的pc是Linux操作系统,接下来的操作也都是在linux系统上的。不是windows操作系统。(如若你是win系统,可安装虚拟机,解决这个问题。此帖不讨论如何在win上安装虚拟机)。

2、只在win下面使用了串口软件mobaxterm。(此操作,事先请先安装usb转串口ch340驱动)

1、EBF6UL/LL-pro简介

这是野火的开发版,芯片使用的nxp的imx6ull。其他不在介绍。

2、移植所用工具

1、PC电脑一台、sd卡一张,读卡器一个

2、usb串口线(买板子送的)

3、串口软件mobaxterm

3、环境搭建、版本说明

1、PC机使用ubantu20版本(此次移植所用)

2、交叉编译工具arm-linux-gnueabihf(版本为4.9.4版本)

3、u-boot源码(版本v2016.3)

4、linux内核(版本4.1.15)

5、buildroot工具(版本2016-11)

虽然环境和工具都属于比较老的版本,不过上述的版本成功完成了移植,没有什么兼容性问题。

4、详细步骤

0、下载好交叉编译工具arm-linux-gnueabihf-

        关于如何下载、安装交叉编译工具arm-linux-gnueabihf-(4.9.4),请看下面链接:

https://blog.csdn.net/dhdjjdh/article/details/145783545?sharetype=blogdetail&sharerId=145783545&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118

1、下载、编译nxp官方u-boot源码。(版本v2016.3)

        关于如何下载、编译官方u-boot源码,请看下面链接:

https://blog.csdn.net/dhdjjdh/article/details/145784356?sharetype=blogdetail&sharerId=145784356&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118

2、下载、编译官方kernal源码(4.1.15版本)

        关于如何下载、编译官方kernal源码(4.1.15版本),请看下面的链接

https://blog.csdn.net/dhdjjdh/article/details/145832576?sharetype=blogdetail&sharerId=145832576&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118

3、下载buildroot工具(2016-11)并且构建根文件系统。

        关于如何下载buildroot工具(2016-11)并且构建根文件系统。请看下面链接

https://blog.csdn.net/dhdjjdh/article/details/145841982?sharetype=blogdetail&sharerId=145841982&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118

4、依次编译好u-boot、kernel、构建rootfs

        经过上面的三个步骤,我们分别得到了u-boot.imx、zImage、imx6ull-14x14-evk.dtb、rootfs.tar文件。这些几个文件就是我们所用到的所有文件。

        接下来,我们要将这些文件,烧录到sd卡中,具体请看步骤5.

5、将u-boot、kernal、rootfs烧录到sd卡。 

        需要注意的是:在进行烧录之前,我们会对内存卡进行格式化,如果你的内存卡中有重要的文件,请提前做好备份。 

        关于如何合理格式化内存卡,以及将u-boot.imx、zImage、imx6ull-14x14-evk.dtb、rootfs.tar等文件,合理的烧录到内存卡中,请看下面链接

https://blog.csdn.net/dhdjjdh/article/details/145842322?sharetype=blogdetail&sharerId=145842322&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118

6、将开发板设置为从sd卡启动(野火的这个板子是将拨码开关跳到2、5、8)

        开发版的不同,方式可能不一样。

7、打开串口调试软件

8、给开发板上电

         开发板启动,start kernal后,直接使用root登录。        

        做完这一切,可以从串口调试助手,测试一下linux基本命令。

(一文搞定)使用sd卡,往野火EBF6UL/LL-pro板子,移植官方uboot、kernel以及构建rootfs_第1张图片

5、成功启动kernel,成功完成此次移植

        至此,完成了此次移植,虽然我也只是第一次移植,浪费了好多时间和精力。中间的问题层出不穷,但好在坚持了下来,问题一 一解决。感慨万分。

        虽然只是简单的移植,甚至什么也没做,menuconfig的很多选项也不懂,但也磕磕绊绊的完成了第一次移植。所谓万事开头难,幸好走完了第一步(哭)

6、可能遇到的问题

      (1)开发板上电,卡在“starting kernel”

        这个问题大概率是没找到烧写内核(zImage)或者设备树文件(.dtb)

        (2)kernel panic -not syncing:attempted to kill init! exitcode=0x0000000b

         考虑sd卡的格式化是否正确。一个分区为fat32,一个分区为ext4。

         考虑rootfs.tar是否解压到了内存卡rootfs分区(可以插入pc电脑查看)存不存在/sbin/init文件。

         考虑.dtb文件是否烧录正确,需要烧录的是imx6ull-14×14-evk.dtb。之前我因为烧录了imx6ul-14×14-evk.dtb,导致出现这个问题。(一个字母只差)

         kernel源码,menuconfig的时候检查一下(*)Allow old ABI binaries to run with this kernal有没有选中。若没选中,选中后,重新编译一下kernel。

        此次移植过程中,我遇到attempted to kill init, exitcode=0x0000000b的原因,就是上述几个方面。若上面方式,还没有解决问题,可以考虑问一下ai 。       

7、结语

        此贴记录为主,希望有些参考价值。

你可能感兴趣的:(嵌入式硬件,arm开发,linux)