【NanoPi T2】 2.uboot 离线烧录(S5P4418)


前一阵想在nanopi t2的uboot上添加网卡驱动来加载内核开发驱动,结果无奈编译出来的uboot没办法烧录运行。官方制作SD镜像的工具也是缺胳膊少腿的,并且我也不想玩个uboot做个几G的镜像。官方提供的资料实在太少,对于一个爱折腾的人来说这怎么行呢,于是乎就有了下面这边文章。

通过对nanopi官方提供的uboot2016.1 一阵子的研究终于弄清楚了最新版本uboot的内存分布,实现了编译烧写到SD卡运行。

新版本的uboot跟以前的版本有很大的不同,uboot的内容和内存分布跟之前不一样了,之前的布局:传送门

1.2016版uboot内存布局

现在的内存布局及内容大致猜测如下:

块地址内容
Block 0Sd/emmc卡信息
Block1Nsih.bin
Block2-BlocK38412ndboot.bin
Block3842-BlockXXu-boot.bin

以上除了可以确定u-boot的位置无误以外其他的纯属猜测,目前还没心思钻研汇编代码的含义,2nboot部分都是不开源的,现在搞得这么大也不知道在做什么。确定了u-boot.bin的位置之后就可以动手了。

2.离线烧录步骤

1.下载uboot最新源码:
git clone https://github.com/friendlyarm/u-boot.git
git checkout nanopi2-v2016.01
2.编译前的准备:

官方传送门

3.配置uboot

导出默认配置:

make s5p4418_nanopi2_defconfig

添加自定义配置:

make menuconfig

编译:

make -j16 CROSS_COMPILE=arm-linux-
4.烧录镜像

编译会获得u-boot.bin和bootloader.img
编译结果
bootloader.img是写入Nish参数以及签了名的uboot,这个才是可以直接用来烧录的uboot,可以看到最后编译完有句提示:
编译信息
最后一行提示我们bootloader的生成跟tools/nexell/nish/nanopi2.txt有关,nanopi2.txt就是配置了一些启动代码和参数,其中就包括uboot的加载地址加载大小,启动地址等等。
在这里插入图片描述
格式的含义如下:

<值> // <写入镜像的地址> : <注释>

通过查看bootloader.img的二进制发现确实如此
在这里插入图片描述
最后只需要提取官方镜像中的前3841个块接上编译输出的bootloader.img就可以了,刷写脚本代码:

sudo dd if=bootloader.img of=uboot2016.bin bs=512 seek=3841
sudo dd if=uboot2016.bin of=/dev/sdx

整个文件大小4M不到,下面就可以愉快的挂接NFS和网络加载内核了

3.附上资源

资源打包

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值