1、我的pc是Linux操作系统,接下来的操作也都是在linux系统上的。不是windows操作系统。(如若你是win系统,可安装虚拟机,解决这个问题。此帖不讨论如何在win上安装虚拟机)。
2、只在win下面使用了串口软件mobaxterm。(此操作,事先请先安装usb转串口ch340驱动)
这是野火的开发版,芯片使用的nxp的imx6ull。其他不在介绍。
1、PC电脑一台、sd卡一张,读卡器一个
2、usb串口线(买板子送的)
3、串口软件mobaxterm
1、PC机使用ubantu20版本(此次移植所用)
2、交叉编译工具arm-linux-gnueabihf(版本为4.9.4版本)
3、u-boot源码(版本v2016.3)
4、linux内核(版本4.1.15)
5、buildroot工具(版本2016-11)
虽然环境和工具都属于比较老的版本,不过上述的版本成功完成了移植,没有什么兼容性问题。
关于如何下载、安装交叉编译工具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
关于如何下载、编译官方u-boot源码,请看下面链接:
https://blog.csdn.net/dhdjjdh/article/details/145784356?sharetype=blogdetail&sharerId=145784356&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118
关于如何下载、编译官方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
关于如何下载buildroot工具(2016-11)并且构建根文件系统。请看下面链接
https://blog.csdn.net/dhdjjdh/article/details/145841982?sharetype=blogdetail&sharerId=145841982&sharerefer=PC&sharesource=dhdjjdh&spm=1011.2480.3001.8118
经过上面的三个步骤,我们分别得到了u-boot.imx、zImage、imx6ull-14x14-evk.dtb、rootfs.tar文件。这些几个文件就是我们所用到的所有文件。
接下来,我们要将这些文件,烧录到sd卡中,具体请看步骤5.
需要注意的是:在进行烧录之前,我们会对内存卡进行格式化,如果你的内存卡中有重要的文件,请提前做好备份。
关于如何合理格式化内存卡,以及将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
开发版的不同,方式可能不一样。
开发板启动,start kernal后,直接使用root登录。
做完这一切,可以从串口调试助手,测试一下linux基本命令。
至此,完成了此次移植,虽然我也只是第一次移植,浪费了好多时间和精力。中间的问题层出不穷,但好在坚持了下来,问题一 一解决。感慨万分。
虽然只是简单的移植,甚至什么也没做,menuconfig的很多选项也不懂,但也磕磕绊绊的完成了第一次移植。所谓万事开头难,幸好走完了第一步(哭)
(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 。
此贴记录为主,希望有些参考价值。