orangepi3_lts的u-boot编译与烧写

orangepi3_lts的u-boot编译与烧写

orangepi3_lts的u-boot编译有两种方法,一种方法是使用官方的SDK进行编译,运行build.sh脚本通过图形化的界面选择u-boot就可以完成u-boot编译,这具体步骤官方手册都有,这里就不再赘述。下面介绍另外一种方法:

为了方便移植u-boot,我们可以把u-boot和交叉编译工具链单独拿出来编译,也可以去github下载u-boot使用,网址为:GitHub - orangepi-xunlong/u-boot-orangepi,交叉编译工具链也可以单独去下载,网址为:Index of /armbian-releases/_toolchain/ 

这里我是用的u-boot版本为2020.04,交叉编译工具链为gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu

之后我们把u-boot和交叉编译工具链存到一个新的文件夹里(toolchain里面存放的是交叉编译工具链,另外三个压缩包可以忽略):

进入toolchain文件内对交叉编译工具链进行解压:

sudo tar -vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz

解压完成之后进入u-boot对应的文件夹内,执行以下命令清理工程,注意交叉编译工具链的路径要和自己的对应。

make -j4 ARCH=arm CROSS_COMPILE=/home/chuan-plus/my_orangepi3_lts/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- distclean

执行以下命令编译生成.config文件。

make -j4 ARCH=arm CROSS_COMPILE=/home/chuan-plus/my_orangepi3_lts/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- orangepi_3_lts_defconfig

注意这里交叉编译工具链的路径要和自己的对应,同时如果时orangepi的其他板子,对应的defconfig文件是不同的,贴一张图,不同板子对应的defconfig文件。

最后通过命令编译u-boot(V=1表示显示编译的详细信息):

make -j4 ARCH=arm CROSS_COMPILE=/home/chuan-plus/my_orangepi3_lts/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- V=1

至此,u-boot编译完成,最后输出信息如下:

可以烧写到SD卡的文件,spl/sunxi-spl.bin,u-boot.itb或者u-boot-sunxi-with-spl.bin,首先检查自己的ubuntu是否识别到了SD卡设备,输入ls /dev/sd* -l查看是否识别到了SD卡。

图中的sdb和sdb1表示识别到的SD卡设备,若插入之后识别不到,可能是虚拟机的问题,解决方法是打开虚拟机源文件夹下的.vmx文件,用记事本打开,把里面的usb.restrictions.defaultAllow = "TRUE"改为TRUE就可以了。

识别到之后用以下命令烧写到SD卡

sudo dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8
sudo dd if=u-boot.itb of=/dev/sdb bs=1024 seek=40

或者使用如下命令也可

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

这里直接烧录会发现系统启动卡在trying to boot from MMC1,这里是因为基于64位的SOC的主板需要bl31阶段的Arm Trusted Firmware-A固件,这为Armv8-A提供了安全软件环境,并提供PSCL和SMCCC服务。

输入以下命令下载bl31.bin

git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git

之后进入目录编译

make CROSS_COMPILE=/home/chuan-plus/my_orangepi3_lts/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- PLAT=sun50i_h6 DEBUG=1 bl31

之后再对应文件夹下就可以看到bl31.bin文件了

由于scp.bin文件是可选的,我们这里没用,所以需要指定其SCP=/dev/null,之后输入以下命令编译。

make -j4 ARCH=arm CROSS_COMPILE=/home/chuan-plus/my_orangepi3_lts/toolchain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- BL31=/home/chuan-plus/my_orangepi3_lts/trusted-firmware-a/build/sun50i_h6/debug/bl31.bin SCP=/dev/null

得到u-boot-sunxi-with-spl.bin文件按照上述步骤烧录到SD卡里就可以正常启动了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值