友善zeroPi uboot、kernel 编译,

之前尝试了编译了一下uboot 成功后,买的zeropi 的板子也终于到,断断续续,终于编译并且成功运行了起来,

虽然zeropi wiki 上有直接提供windos 下的完成img 和 烧写工具,可以一键搞定。

但是作为才入门linux的萌新来说,还是有必要折腾一下的,在这折腾的过程中也学习了不少知识,过程曲折记录整理,

主要流程参考还是wiki:http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B/zh

不过以上这个教程的流程上还缺了一环,就是根目录制作。

一、uboot 编译

uboot 是git 上下载的分支版本,

下载了近十几次终于才成功的下载了一次:https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1

有了之前的练习,所以也就没什么多大的问题,一路顺利过掉。

二、Linux编译

linux4.14版本 原本也是准备下载git 上的,但是这个同样下载了十几次没一次成功的,索性就放弃了,

后来在网上找到了一个接近的 4.11版本的就拿来用下。

https://www.cnblogs.com/edan/p/9330708.html

同时linux部分编译也是参考此链接。毕竟是 allwiner 的bsp 也是一路顺利

三、busybox 编译

一开始,也是为了图方便,网上随便找了个资源下载的,但是死活编译不过提示:undefined reference to `stime'

百度了一下原因及解决方法:https://blog.csdn.net/o_alpha/article/details/113487031

然后去官网下了个最新的 https://busybox.net/downloads/

终于好不容易编译过了。

四、遇到的问题记录及解决

一切准备就绪之后烧录,上电一跑,各种问题随之而来:

uboot 阶段 板子能正确识别:zeropi  但是设备树文件显示的是 sun8i-h3-nanopi-m1-pluse 的,

同时一开始不知道 uboot 还要设置,直接提示 未识别的文件系统,忘记截图,大概是:unrecognized fs type

配置 bootcmd 和 bootargs 之后终于继续走了下去,到了 Starting kernel 之后没下文了。

网上搜索了一圈答案,同时也对uboot 阶段跳入 linux 阶段也是有所了解了,并且这个Starting kernel 应该是uboot 最后输出的,

网上人家的提问中后边 还带有 uncom.... 什么解压image 镜像 什么的提示的,和我的有些区别,我的如上图已经提示 zImage 还有 设备树文件 已经读取到。

后来在了解设备树文件的时候,还真是发现了问题,那个4.11 bsp Linux 文件夹中的sun8i-h3-nanopi-m1-pluse设备树 和 zeropi完全是不一样的。

zeropi wiki 的电气原理图  http://wiki.friendlyarm.com/wiki/images/7/71/ZeroPi_20190731_Schematic.pdf

状态led 的IO口 就对不上了.....

后来一想既然uboot 中设备树文件识别成sun8i-h3-nanopi-m1-pluse,那是不是 uboot 中的设备树文件 应该是可用的,而且 dtb 是最终的二进制文件,所以应该可以直接拿来用。

按照这个思路直接替换 设备树文件,居然还真继续跑下去了。

不过最后还是报错了:end Kernel panic  .... No working init found ...一开始只看到了这最后的错误提示,没想着回看,

直接从错误提示找:No working init found 不过相同的问题寥寥无几,看了一大圈,不过可以大体定位是和根文件系统有关的,也顺便了解了一波根文件信息。

也是鬼使神差,往上翻内核的打印信息的时候,突然才看到mmc2 这边有些问题:waiting for root device /dev/mmcblk2p1

分区识别是p1 和 p2 但是 p1 是内核镜像和设备树文件分区,跟文件区域是 分区是p2

所以重新设置 bootargs 参数 ,终于是解决了。 

但是新的问题又出现了,couldn’t execute it (error -8)这个网上找了一圈,

主要得到的解决方法有两种,权限问题还有elf 二进制的文件格式 不一致,但是笔者试了一下都没什么用。

但是从错误提示看:文件是存在的,结合上面一句runaway loop modprobe  binfmt-464c 看 应该的确是和二进制格式有关系。

后来在这里面找到了原因:https://www.freesion.com/article/44611148946/

重新编译解决,之后终于进入到了控制台,一切ok,测试了一下 usb 挂载,终于是成功了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值