完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
|
说明
系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 上一篇讲到了u-boot编译完成之后,会生成各种镜像, 本章节重点介绍u-boot各个镜像生成的基本流程, 通过了解文件, 来辅助理解rk3399 u-boot启动基本过程。 一,编译u-boot的一般步骤 如果不考虑现有源码中的各种脚本, 比如不管make.sh, 编译u-boot的源码的一般步骤有以下通用步骤:
二, u-boot.bin文件生成 可以通过编译的调试信息中发现如下结果:
最终发现,Makefile中通过objcopy, 将elf格式的u-boot转换成u-boot-nodtb.bin。 三, uboot.img文件生成 注意, 这个镜像叫做uboot.img 而在同一级目录下有个叫做u-boot.img , 镜像是由如下脚本生成的:
在uboot.sh脚本中,实际是调用了:
其他镜像如下:
这么看 u-boot-dtb.img和u-boot.img 是一样的, 都是通过在u-boot-nodtb.bin加上一个头部信息, 类似内核zImage和uImage的差别。 四, rk3399_loader_v1.24.126.bin生成 打包loader镜像是通过make.sh loader来完成的, 最终执行如下:
而../rkbin/RKBOOT/RK3399MINIALL.ini配置文件是:
可以得知依赖的文件有:DDR相关的bin/rk33/rk3399_ddr_800MHz_v1.24.bin、USB相关的bin/rk33/rk3399_u***plug_v1.26.bin、miniloader(瑞芯微自己写的不开源的bootloader)相关的bin/rk33/rk3399_miniloader_v1.26.bin。 boot_merger将这三个bin文件最后合并成rk3399_loader_v1.24.126.bin。 五, trust.img生成 make.sh trust: 打包trust.img镜像, 实际调用:
atf 是arm trust firmware缩写, atf.sh脚本负责将几个和trust zone相关的二进制合并在一起:
六, rk3399上电启动u-boot逻辑
七, make.sh脚本主要执行步骤 了解了上面的过程, 大家也可以对make.sh脚本进行分析, 这里将主要的结果步骤大体列举一下, 总共会经历12条指令, 大家可以通过set -x 和 set +x对脚本进行调试查看。
第一条指令:process_args $* #实际就是process_args rk3399, 结果就是分析各种参数, 同时执行make rk3399_defconfig -j${JOB} 第二条指令:prepare 获取rkbin工具路径, (是有的), (没有) 第三条指令:select_toolchain 设置交叉工具链 ,64位和32位分分别在: TOOLCHAIN_ARM32=../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin TOOLCHAIN_ARM64=../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin 第四条指令:select_chip_info 从.config文件获取芯片信息 根据.config中的芯片名字, 在表格CHIP_TYPE_FIXUP_TABLE中找loader, trust, label的名字,对于rk399而言, 表格中并没有对应单项 第五条指令:fixup_platform_configure 在表格中通过芯片名字选择平台配置 比如配置rsa加密算法和sha签名算法版本, 32位和64位对应的uboot, trust镜像大小和个数 而表格中并没有rk3399的配置, 所以都是用默认的-, 使用默认的uboot镜像大小, trust镜像大小 第六条指令:select_ini_file:选择ini配置文件 minibootloader的配置文件:../rkbin/RKBOOT/RK3399MINIALL.ini trust镜像配置文件: ../rkbin/RKTRUST/RK3399TRUST.ini 第七条指令:补充部分编译参数 第八条指令:处理子命令, 如make.sh uboot, make.sh trust等 第9条指令:clean_files, 删除目标文件, 如 u-boot, tpl/u-boot-tpl.dtb等我呢间 第10条指令:直接make 编译 第11条指令: pack_images 打包 主要是打包uboot.img, trust.img , rk3399_loader_v1.24.126.bin 第12调指令finish :结束, 只是打印信息 六,总结 u-boot编译的相关镜像是如何生成的, 以及上电之后, RK3399做了什么事情,这块大家需要心里有个大体的概念, 此处并没有涉及到代码层面, 所以更多的是梳理流程和理解逻辑, 我们在了解整个RK3399 启动Android 的过程的时候, 就应该从上电开始, 这样才能形成一个整体。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
RK3588的GMAC0与PHY的参考时钟电平匹配问题??????
4218 浏览 1 评论
请问各位大佬,如何解决,瑞芯微 RV1126B 使用 mpp 自带工具 调试时,内核直接报错崩溃!
1769 浏览 0 评论
使用rk3568开发板,核0\\1\\3运行linux,核2运行hal,在核0中怎么关闭核2
2335 浏览 0 评论
2330 浏览 0 评论
4327 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 16:39 , Processed in 0.803892 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1466