完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
完整编译 u-boot-next-dev:
./make.sh rk3568 2>&1 >log.txt 生成两个主要的文件是: RKLoader:rk356x_spl_loader_v1.08.111.bin Uoot FIT Image:uboot.img 两个都是有特定格式的混合文件。 RKLoader 的生成,是下面的指令: E:DevEERockchipu-boot-next-devmake.sh: function pack_loader_image() {... scripts/loader.sh rkbinRKBOOTRK3568MINIALL.ini ....} E:DevEERockchipu-boot-next-devscriptsloader.sh: ... ./tools/boot_merger ${INI} ... E:DevEERockchiprkbinRKBOOTRK3568MINIALL.ini: 综上,最小版 RKLoader 的生成, 至少依赖如下三个文件: 这三个文件是 github 上的 rkbin 项目里面的, 不开源。 但是 Rockchip_Developer_Guide_UBoot_Nextdev_CN.pdf 文档中说: RK平台根据前级Loader代码是否开源,目前有两套启动方式:既然说可以替换,那: 完整编译是这样: make rk3568_defconfig ./make.sh rk3568 2>&1 >log.txt pack loader okay! Input: /mnt/e/Dev/EE/Rockchip/rkbin/RKBOOT/RK3568MINIALL.ini 完整编译过一次后,可以使用 tpl + spl 重新生成 loader.bin : ./make.sh --tpl --spl 2>&1 >>log.txt pack loader(TPL+SPL) okay! Input: /mnt/e/Dev/EE/Rockchip/rkbin/RKBOOT/RK3568MINIALL.ini 综上可得: 闭源RKLoader = ddr bin + u***plug + Miniloader 开源RKLoader = uboot TPL + u***plug + uboot SPL uboot TPL 应该是做了跟 ddr_bin 一样的事(初始化ext_ddr_mem)是否还有其它功能未知。 编译好然后开始测试=> 替换TPL+SPL实测:失败!!只打印出下面一这行,就卡住不动了。
然后 XSearch.exe 对 u-boot-next-dev 目录一通搜索 2017.09 再一通搜索 U_BOOT_VERSION 再一通搜索 U_BOOT_DATE 确认是这个文件的输出。 E:DevEERockchipu-boot-next-devarcharmmach-rockchiptpl.c printascii("nU-Boot TPL " PLAIN_VERSION " (" U_BOOT_DATE " - " U_BOOT_TIME ")n"); 简单说, tpl 只能跑到这个文件!官方的tpl也有问题?还是哪里有要设置的? 想查找问题在哪, 但是每次改完代码,重新编译的时间太久。 于是想把 tpl 相关的源文件扣出来,单独做一个叫 rkubootTPL 的项目单独编译。 于是乎开始分析 tpl 相关的源文件有哪些: ./make.sh =========================================================== SRCTREE=`pwd` function process_args() { ... --tpl|tpl) # use tpl file ... } function pack_idblock() { if [ ! -z "${ARG_TPL_BIN}" ]; then TPL_BIN=${ARG_TPL_BIN} fi } function pack_spl_loader_image() { rm *_loader_*.bin -f cd ${RKBIN} if [ ! -z "${ARG_SPL_BIN}" -a ! -z "${ARG_TPL_BIN}" ]; then ${SCRIPT_SPL} --ini ${INI_LOADER} --tpl ${SRCTREE}/${ARG_TPL_BIN} --spl ${SRCTREE}/${ARG_SPL_BIN} elif [ ! -z "${ARG_TPL_BIN}" ]; then ${SCRIPT_SPL} --ini ${INI_LOADER} --tpl ${SRCTREE}/${ARG_TPL_BIN} #!!!!!!<---------------- else ${SCRIPT_SPL} --ini ${INI_LOADER} --spl ${SRCTREE}/${ARG_SPL_BIN} fi cd - if [ -f ${RKBIN}/*_loader_*.bin ]; then mv ${RKBIN}/*_loader_*.bin ./ fi } ./scripts/spl.sh --ini /mnt/e/Dev/EE/Rockchip/rkbin/RKBOOT/RK3568MINIALL.ini --tpl ${SRCTREE}/tpl/u-boot-tpl.bin ./scripts/spl.sh ==> 其实应该叫 makeRKLoader_With_Tpl.sh =========================================================== rm tmp -rf && mkdir tmp -p cp ${INI} ${TMP_INI} cp ${TPL_BIN} tmp/tpl.bin sed -i "s/FlashData=.*$/FlashData=./tmp/tpl.bin/" ${TMP_INI} sed -i "0,/Path1=.*/s/Path1=.*$/Path1=./tmp/tpl.bin/" ${TMP_INI} rm *_loader_*.bin -f ./tools/boot_merger ${TMP_INI} 其中 u-boot-tpl.bin 来自:cp tpl/u-boot-tpl-nodtb.bin tpl/u-boot-tpl.bin #在 E:DevEERockchipu-boot-next-devtpl.u-boot-tpl.bin.cmd u-boot-tpl-nodtb.bin来自:aarch64-linux-gnu-objcopy -j .text -j .secure_text -j .secure_data -j .rodata -j .data -j .u_boot_list -j .rela.dyn -j .got -j .got.plt -j .dtb.init.rodata -O binary tpl/u-boot-tpl tpl/u-boot-tpl-nodtb.bin #在 E:DevEERockchipu-boot-next-devtpl.u-boot-tpl-nodtb.bin.cmd 也就是从 tpl/u-boot-tpl 文件导出来的,只是去除了一些无关的数据段 tpl/u-boot-tpl 来自:E:DevEERockchipu-boot-next-devtpl.u-boot-tpl.cmd cmd_tpl/u-boot-tpl := (cd tpl && /mnt/e/Dev/EE/Rockchip/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ld.bfd -T u-boot-spl.lds --gc-sections -Bstatic --gc-sections --no-dynamic-linker -Ttext 0xfdcc1000 arch/arm/cpu/armv8/start.o --start-group arch/arm/mach-rockchip/built-in.o arch/arm/cpu/armv8/built-in.o arch/arm/cpu/built-in.o arch/arm/lib/built-in.o board/rockchip/evb_rk3568/built-in.o common/init/built-in.o disk/built-in.o drivers/built-in.o dts/built-in.o fs/built-in.o --end-group -L /mnt/e/Dev/EE/Rockchip/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1 -lgcc -Map u-boot-tpl.map -o u-boot-tpl && /mnt/e/Dev/EE/Rockchip/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objdump -t u-boot-tpl > u-boot-tpl.sym ) 上面就是 tpl 编译流程,但范围还是太大, 还是得结合源码阅读 + u-boot-tpl.map + u-boot-tpl.sym分析的方式来扣出 tpl 相关的源文件。 待续。 其它内容: E:DevEERockchipu-boot-next-dev.config CONFIG_TPL_TEXT_BASE=0xfdcc1000 CONFIG_TPL_MAX_SIZE=61440 CONFIG_TPL_ROCKCHIP_BACK_TO_BROM=y CONFIG_TPL_SYS_MALLOC_F_LEN=0x80000 CONFIG_SUPPORT_TPL=y CONFIG_TPL=y CONFIG_TPL_TINY_FRAMEWORK=y CONFIG_TPL_SERIAL_SUPPORT=y CONFIG_TPL_RAM=y CONFIG_ROCKCHIP_TPL_INIT_DRAM_TYPE=0 CONFIG_TPL_DM_SERIAL=y ... 过滤文件中所有带 TPL 的行 0xfdcc1000, 是上电时SYSTEM_SRAM的空间(总共64kb, 0xfdcc0000 - 0xfdccffff)
1.9 TPL/SPL/U-Boot-proper 完整编译过一次 u-boot-next-dev 后,目录里面会 tpl 和 spl 两个文件夹。 SoC Boot Stage(sram 阶段): |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1906 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2382 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5175 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 20:51 , Processed in 0.500279 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号