0
点赞
收藏
分享

微信扫一扫

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录

说明

系统:Android10.0

设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)

前言

         上一篇讲到了u-boot镜像生成和启动的逻辑, uboot的单独开发我在课程中并不会去详细讲, 但是如果你想修改uboot源码,或者修改uboot的配置, 此时你也得知道如何单独修改uboot, 编译uboot, 以及单独烧录uboot。

小目标

   掌握u-boot修改,独立编译, 以及独立烧录

一, u-boot编译命令

cd rk3399_Android10.0/uboot/

#完全清除

make  distclean

#单独编译(第一次编译场景)

./make.sh rk3399

#源码配置(不改代码,基于已经存在的.config)

export PATH=$PATH:/mnt/ext-disk2/RK/rk3399_Android10.0/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

make CROSS_COMPILE=aarch64-linux-gnu- menuconfig

#单独编译(基于已经存在的.config)

./make.sh

二,u-boot修改实战

        现在的uboot源码的控制逻辑和内核控制逻辑相同, 都是通过 Kconfig和Makefile来完成, 所以我们修改uboot的场景,包括配置部分源码的编译, 或者修改某个特定文件中的源码逻辑。

         默认编译出来的镜像, uboot是没有倒计时, 主要是为了加快运行速度, 在开发调试的时候, 我们可以在uboot中加上倒计时, 从而进入到它的命令行模式下进行操作。

cd rk3399_Android10.0/uboot/

export PATH=$PATH:/mnt/ext-disk2/RK/rk3399_Android10.0/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

make CROSS_COMPILE=aarch64-linux-gnu- menuconfig

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录_RK3399

 将上面的倒计时秒数由0改成3,或者其他数字,表示倒计时停留的秒数

选择exit, 保存退出

二, u-boot单独编译

上个步骤配置好了之后, 就可以直接执行编译了

#单独编译(基于已经存在的.config)

./make.sh

三, u-boot单独烧录

1, linux系统下TF卡烧录方式(有点麻烦)

        在windows下,瑞星微提供的SDDiskTool只能烧录统一固件, 如果想要单独sd/tf卡中的分区, 可以通过在linux系统中进行操作:

在已经完成了一次统一镜像烧录之后(参考​​Android系统10 RK3399 init进程启动(四) RK3399开发板运行官方镜像_ldswfun的专栏-CSDN博客​​)

将sd/tf卡插入到linux系统中,查看ls  /dev/sdb*

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录_Android系统启动_02

烧录boot.img命令

sudo dd if=uboot.img of=/dev/sdb1  bs=1M count=4; sync  (验证ok)

2,  window/linux 线刷(不适合TF存储):

详细烧录,请参考:​​Android系统10 RK3399 init进程启动(六) 镜像更新_ldswfun的专栏-CSDN博客​​

window下烧写单独镜像:

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录_RK3399_03

linux 烧写单独镜像:

sudo upgrade_tool di -b boot.img

四,启动运行

上个步骤烧录完成之后, 上电重启

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录_android_04

Android系统10 RK3399 init进程启动(九) u-boot修改,单独编译和烧录_linux_05

 在倒计时结束之前,键盘中输入ctrl+c,就可以进入u-boot命令行。 

五,总结

  u-boot开发的内容其实也非常多,上面的内容主要是让大家对瑞星微平台下, u-boot的编译和使用有一个基本的认识, 如果需要深入了解u-boot, 那就必须掌握ARMv7/ARMv8汇编以及体系架构, RK3399 SOC的控制编程等相关知识。


举报

相关推荐

0 条评论