完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
RK3399启动
1.RK3399上电后,会从0xffff0000获取romcode并运行; 2.然后依次从Nor Flash、Nand Flash、eMMC、SD/MMC获取ID BLOCK,ID BLOCK正确则启动,都不正确则从USB端口下载; 3.如果emmc启动,则先读取SDRAM(DDR)初始化代码到内部SRAM,然后初始化DDR,再将emmc上的代码(剩下的用户代码)复制到DDR运行; 4.如果从USB下载,则先获取DDR初始化代码,下载到内部SRAM中,然后运行代码初始化DDR,再获取loader代码(用户代码),放到DDR中并运行; 5.无论是何种方式,都需要DDR的初始化代码,结合前面RK3288的经验,就是向自己写的代码加上"头部信息",这个"头部信息"就包含DDR初始化操作; 2.1 官方启动分析 如何分析一款芯片的启动方式? 前面的一篇博客iMX6ULL上手体验,里面已经分析过了,大致就是先用厂家提供的资料,配置相关环境、编译、烧写,运行起来。然后就有了U-boot源码,从U-boot就可以几乎提取出所有的裸机代码,本文也是这样做的。 分析U-Boot的编译流程,可以看到如下内容: ./tools/boot_merger ./tools/rk_tools/RKBOOT/RK3399MINIALL.ini out:rk3399_loader_v1.09.109.bin fix opt:rk3399_loader_v1.09.109.bin merge success(rk3399_loader_v1.09.109.bin) ./tools/trust_merger ./tools/rk_tools/RKTRUST/RK3399TRUST.ini out:trust.img merge success(trust.img) ./tools/loaderimage --pack --uboot u-boot.bin uboot.img pack input u-boot.bin pack file size: 315128 crc = 0xb4d13cd6 uboot version: U-Boot 2014.10-RK3399-06 (Aug 16 2018 - 04:00:27) pack uboot.img success! /work/firefly-rk3399 Firefly-RK3399 make images finish! 可以看出这里使用了三个工具,产生了三个文件: ①:使用boot_merger,参数为RK3399MINIALL.ini,得到loader文件rk3399_loader_v1.09.109.bin,打开RK3399MINIALL.ini内容为: [CHIP_NAME] NAME=RK330C [VERSION] MAJOR=1 MINOR=09 [CODE471_OPTION] NUM=1 Path1=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.09.bin Sleep=1 [CODE472_OPTION] NUM=1 Path1=tools/rk_tools/bin/rk33/rk3399_u***plug_v1.09.bin [LOADER_OPTION] NUM=2 LOADER1=FlashData LOADER2=FlashBoot FlashData=tools/rk_tools/bin/rk33/rk3399_ddr_800MHz_v1.09.bin FlashBoot=tools/rk_tools/bin/rk33/rk3399_miniloader_v1.09.bin [OUTPUT] PATH=rk3399_loader_v1.09.109.bin 得知依赖的文件有:DDR相关的rk3399_ddr_800MHz_v1.09.bin、USB相关的rk3399_u***plug_v1.09.bin、miniloader(瑞芯微修改的一个bootloader)相关的rk3399_miniloader_v1.09.bin。 boot_merger将这三个bin文件最后合并成rk3399_loader_v1.09.109.bin。 ②:使用trust_merger,参数为RK3399TRUST.ini,生成trust.img; ③:使用loaderimage将u-boot.bin变成uboot.img; 最后使用Android Tools,烧写rk3399_loader_v1.09.109.bin、trust.img和uboot.img即可启动U-Boot。 对以上过程进行分析,再加上实验测试和结合RK3288的经验,得出裸机启动文件的制作结论如下: 使用boot_merger将rk3399_ddr_800MHz_v1.09.bin、rk3399_u***plug_v1.09.bin和自己的裸机文件rk3399.bin合并出新文件即可。 2.2 制作裸机启动文件 经过分析和测试,现实现了emmc和TF卡启动裸机程序,并把整个过程整理了一个工程模板。 工程模板见GitHub,里面包含两个文件夹和两个文件。 code文件夹存放裸机源码; tools存放制作“头部”的工具和配置文件; rk3399_hardware_tool.sh是一个shell脚本,用于自动生成加“头部”后的裸机文件; README.txt是操作说明; 以后只需要先进入code文件夹修改裸机源码,然后执行make生成rk399.bin,再退出到工程目录下,执行脚本rk3399_hardware_tool.sh即可生成rk3288_emmc.bin和rk3288_sd.bin; rk3288_emmc.bin用于emmc启动:Windows下使用AndroidTool.exe,开发板进入MaskRom模式,烧入Loader位置; rk3288_sd.bin用于SD卡启动:Linux下,插上SD卡,执行sudo dd if=rk3399_sd.bin of=/dev/sdb seek=$(((0x000040)))(其中/dev/sdb为SD卡) |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1767 浏览 0 评论
2288 浏览 1 评论
1955 浏览 1 评论
3294 浏览 1 评论
4095 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-14 12:35 , Processed in 0.404686 second(s), Total 44, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号