Rockchip Developer Guide SD Boot
User Manual:
Open the PDF directly: View PDF .
Page Count: 14
Download | ![]() |
Open PDF In Browser | View PDF |
Rockchip SD Card Boot Reference 发布版本:1.0 作者邮箱:jason.zhu@rock-chips.com 日期:2018.07 文件密级:内部资料 前言 概述 本文主要介绍Rockchip对SD卡的几种使用,包括制作固件,制作各种SD功能卡,固件在SD卡内的分布以及boot的 流程,工程师可以依据此文档来排查使用SD卡启动过程出现的问题。 读者对象 本文档(本指南)主要适用于以下工程师: 技术支持工程师 软件开发工程师 产品版本 修订记录 日期 版本 作者 修改说明 2018-07-17 V1.0 朱志展、刘翊 初始版本 Rockchip SD Card Boot Reference 1. SD卡简介 2. update.img制作 3. SD卡使用及工具打包说明 3.1 常规SD卡 3.2 SD升级卡 3.3 SD启动卡 3.4 SD修复卡 4. 固件内的标志说明 5. 整体流程分析 5.1 pre-loader启动流程 5.2 U-Boot升级卡及启动卡流程 5.3 recovery及PCBA说明 6. 注意事项 卡简介 1. SD Rockchip现将SD卡划分为常规SD卡,SD升级卡,SD启动卡,SD修复卡。可以通过瑞芯微创建升级磁盘工具将 update.img下载到SD卡内,制作不同的卡类型。 卡类型 功能 常规SD卡 普通的存储设备 SD升级卡 设备从SD卡内启动到recovery,由recovery负责把sd内固件更新到设备存储 SD启动卡 设备直接从SD卡启动 SD修复卡 从pre-loader开始拷贝SD卡内的固件到设备存储 2. update.img 制作 update.img为Rockchip提供整套固件的一个合集,它不仅包含了完整固件,还包括固件完整性校验等一些数据。 update.img可以使得用户非常方便地更新整套固件。 Rockchip提供了专门的工具来制作update.img,如果使用Rockchip sdk,可以进入 RKTools/linux/Linux_Pack_Firmware/rockdev/ 目录,如下: 我们可以通过修改package-file来打包需要生成的update.img。package-file文件内容如下: 1 # NAME 2 # Relative path 3 #HWDEF 4 package-file 5 bootloader Image/MiniLoaderAll.bin 6 parameter Image/parameter.txt 7 uboot Image/uboot.img 8 trust Image/trust.img 9 HWDEF package-file misc Image/misc.img 10 resource Image/resource.img 11 kernel Image/kernel.img 12 boot Image/boot.img 13 #recovery Image/recovery.img 14 #system Image/system.img 15 #vendor Image/vendor.img 16 #oem Image/oem.img 17 # baseparamer 18 # 要写入backup分区的文件就是自身(update.img) 19 # SELF 是关键字,表示升级文件(update.img)自身 20 # 在生成升级文件时,不加入SELF文件的内容,但在头部信息中有记录 21 # 在解包升级文件时,不解包SELF文件的内容。 22 # RESERVED不打包backup 23 backup 24 update-script update-script 25 recover-script recover-script Image/baseparamer.img backupimage/backup.img 添加文件时,写入文件名及固件地址。如果是不需要打包某个固件,则在固件名前面加“#”屏蔽掉即可。 点击运行 mkupdate.bat即可生成update.img。 卡使用及工具打包说明 3. SD 3.1 常规SD卡 普通SD卡与PC使用完全一样,可以在U-Boot和Kernel系统中作为普通的存储空间使用,无需工具对SD卡做任何操 作。 3.2 SD 升级卡 SD卡升级卡是通过RK的工具制作,实现通过SD卡对本地存储(如eMMC,nand flash)内系统的升级。SD卡升级是可 以脱离PC机或网络的一种固件升级方法。具体是将SD卡启动代码写到SD卡的保留区,然后将固件拷贝到SD卡可见分 区上,主控从SD卡启动时,SD卡启动代码和升级代码将固件烧写到本地主存储中。同时SD升级卡支持PCBA测试和 Demo文件的拷贝。SD升级卡的这些功能可以使固件升级做到脱离PC机进行,提高生产效率。 制作SD升级卡流程如下: 操作步骤如下: 1. 选择可移动磁盘设备 2. 选择功能模式为固件升级 3. 选择需要升级的固件 4. 点击开始创建 具体配置可以参考上图设置。 再次制作: 已经制作好的升级用SD卡,如果只需要更新固件和demo文件时,可以按 下面步骤来完成: 1. 拷贝固件到SD卡根目录,并重命名为sdupdate.img 2. 拷贝demo文件到SD卡根目录下的Demo目录中 需要配置CONFIG_RKPARM_PARTITION) SD引导升级卡格式(非GPT,目前不支持GPT,所以U-Boot 3.3 SD 偏移 数据段 扇区0 MBR(启动标志置0) 扇区64-4M IDBLOCK 4M-8M Parameter 8M-12M uboot 12M-16M trust ...... misc ...... resource ...... kernel ...... recovery 剩下空间 Fat32存放update.img 启动卡 SD启动卡是通过RK的工具制作,实现设备系统直接从SD卡启动,极大的方便用户更新启动新编译的固件而不用非常 麻烦地烧写固件到设备存储内。其具体实现是将固件烧写到SD卡中,把SD卡当作主存储使用。主控从SD卡启动时, 固件以及临时文件都存放在SD卡上,有没有本地主存储都可以正常工作。目前主要用于设备系统从SD卡启动,或用 注意:PCBA测试只是recovery下面的一个功能项,可用于升级卡与启动卡。 制作启动卡流程如下: 于PCBA测试。 1. 选择可移动磁盘设备 2. 选择功能模式为SD启动 3. 选择需要升级的固件 4. 点击开始创建 具体配置可以参考上图设置。 SD引导启动卡格式(非GPT) 偏移 数据段 扇区0 MBR 扇区64-4M IDBLOCK(启动标志置1) 4M-8M Parameter 8M-12M uboot 12M-16M trust ...... misc ...... resource ...... boot ...... kernel ...... recovery ...... system ...... user SD引导启动卡格式(GPT) 3.4 SD 偏移 数据段 扇区0 MBR 扇区1-34 GPT分区表 扇区64-4M IDBLOCK(启动标志置1) ...... uboot ...... Boot ...... trust ...... resource ...... kernel ...... recovery ...... system ...... vendor ...... oem ...... user 最后33扇区 备份GPT 修复卡 SD卡运行功能,类似于SD卡升级功能,但固件升级发生pre-loader(miniloader)的SD卡升级代码。首先工具会将 启动代码写到SD卡的保留区,然后将固件拷贝到SD卡可见分区上,主控从SD卡启动时,SD卡升级代码将固件升级到 本地主存储中。主要用于设备固件损坏,SD卡可以修复设备。 制作修复卡流程如下: 1. 选择可移动磁盘设备 2. 选择功能模式为SD启动和修复 3. 选择需要升级的固件 4. 点击开始创建 具体配置可以参考上图设置。 SD修复卡格式(非GPT) 偏移 数据段 扇区0 MBR 扇区64-4M IDBLOCK(启动标志置2) 4M-8M Parameter 8M-12M uboot 12M-16M trust ...... misc ...... resource ...... boot ...... kernel ...... recovery ...... system ...... user SD修复卡格式(GPT) 4. 偏移 数据段 扇区0 MBR 扇区1-34 GPT分区表 扇区64-4M IDBLOCK(启动标志置2) ...... uboot ...... Boot ...... trust ...... resource ...... kernel ...... recovery ...... system ...... vendor ...... oem ...... user 最后33扇区 备份GPT 固件内的标志说明 SD卡作为各种不同功能的卡,会在sd卡内做一些标志。 在SD卡的第64扇区处,起始标志若为(magic number)为0xFCDC8C3B,则为一些特殊卡,会从SD卡内读取固 件,启动设备。如果不是,则作为普通SD卡看待。在第(64扇区 + 616bytes)地方,存放各种卡的标志。目前有三 种类型: 标志 卡类型 0 升级卡或PCBA测试卡 1 启动卡 2 修复卡 5. 整体流程分析 SD卡的boot流程可分为pre-loader启动流程与uboot启动流程,这两个流程都需要加载检测SD卡及SD卡内IDB Block 内Startup Flag标志,并且会依据这些标志执行不同的功能。流程如下: 5.1 pre-loader 启动流程 maskrom首先先找到一份可用的miniloader固件(可以从TRM确定Maskrom支持的启动存储介质和优先顺序, maskrom会依次扫描可用存储里的固件),然后跳转到miniloader。miniloader重新查找存储设备,如果检测到SD 卡,检测SD卡是否包含IDB格式固件。如果是,再判断卡标志。如果SD卡可用且标志位为 '0' 或 ‘1’,则从SD卡内读 取U-Boot固件,加载启动U-Boot。如果标志为‘2’,则进入修复卡流程,在loader下更新固件。正常启动流程为扫描 其他存储,加载启动下级loader。 5.2 U-Boot Start 升级卡及启动卡流程 Start Uboot 查找存储设备 是否有SD卡? no yes 64扇区 起始标志 是否为 0xFCDC8C3B? no yes 64扇区 + 616bytes标志 为0? no 重新检测 所有存储 设备 yes 当前设备 设置为SD卡 只有SD卡? no cmdline添加 storagemedia=sd 并从sd卡读取固件 yes cmdline添加 sdfwupdate标志 没有检测 到存储设备 启动kernel MISC分区 标志进入 recovery 加载recovery, 进入recovery模式 End 升级卡:U-Boot重新查找存储设备,如果检测到SD卡,检测SD卡是否包含IDB格式固件。如果是,再判断偏卡标志 是否为0,传递给kernel的cmdline添加'sdfwupdate'。最后读取SD卡的misc分区,读取卡启动模式,若为recovery 模式,加载启动recovery。 启动卡:U-Boot重新查找存储设备,如果检测到SD卡, 检测SD卡是否包含IDB格式固 件。如果是,再判断卡标志是否为1。最后读取SD卡的misc分区,读取卡启动模式,如果为recovery,加载启动 recovery。如果是normal模式,则加载启动kernel。 及PCBA说明 5.3 recovery 具体可参考《Rockchip Recovery用户操作指南V1.03.pdf》。 6. 注意事项 1. 非GPT格式,U-Boot需要配置CONFIG_RKPARM_PARTITION。 2. 在制作SD升级卡时,update.img必须包含MiniloaderAll.bin,parameter.txt,uboot.img,trust.img, misc.img,resource.img,recovery.img这些固件,否则烧写update.img会出现写入MBR失败的提示。
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.4 Linearized : No Creator : Typora Producer : Typora Create Date : 2019:02:18 08:59:45 Modify Date : 2019:02:18 08:59:45 Page Count : 14 Page Mode : UseOutlines Warning : [Minor] Ignored duplicate Info dictionaryEXIF Metadata provided by EXIF.tools