RT600 BootROM RM解析 (7)
RT600 RM CH41:RT6xx 非安全BootROM (7)
如何通过runBootloader调用ROM API!
41.11 调用 ROM 的 API
ROM 提供了一个 runBootloader
API,用户应用程序可通过该 API 使用指定的boot参数调用 ROM。runBootloader
API 的 ROM 地址如图 231 所示。

runBootloader
的原型如下。用户应用程序可传递一个包含引导模式选项的参数:
1 | void runBootloader (void *arg) |
用户应用程序boot模式选项的定义如下:
1 | typedef struct _user_app_boot_invoke_option |
user_app_boot_invoke_option_t
的描述如下表 1105 所示。
表 1105. 用户应用程序引导选项
偏移字段 | [31:24] TAG | 描述 |
---|---|---|
[31:24] | TAG | 必须为 ‘0xEB’ |
[23:20] | 引导模式 | 0:主引导模式 1:ISP 引导 |
[19:16] | 引导接口 | 0:USART 1:I2C 2:SPI 3:USB HID 4:FlexSPI 7:SD 8:MMC |
[15:12] | 引导实例 | 0 或 1;仅当引导接口为 SD 或 MMC 时使用该实例,其他接口忽略 |
[11:08] | FlexSPI 引导镜像索引 | 适用于 FlexSPI NOR 闪存的 FlexSPI 引导镜像索引 |
[07:00] | 保留 | 保留 |
用户应用程序可使用的详细引导选项组合如下表 1106 所示。
表 1106. 用户应用程序可使用的详细引导选项
Tag [31:24] | 引导模式 [23:20] | 接口 [19:16] | 实例 [15:12] | FlexSPI 引导镜像索引 | 保留 [07:00] | 组合 | 引导操作 |
---|---|---|---|---|---|---|---|
0xEB | 0 | 0 | X | X | X | 0xEB00XXXX | 串行主引导:USART |
0xEB | 1 | 1 | X | X | X | 0xEB01XXXX | 串行主引导:I2C |
0xEB | 1 | 2 | X | X | X | 0xEB02XXXX | 串行主引导:SPI |
0xEB | 1 | 3 | X | X | X | 0xEB03XXXX | 串行主引导:USB HID |
0xEB | 0 | 4 | 0 | X | X | 0xEB04X0XX | 主引导:FlexSPI:引导镜像 0 |
0xEB | 0 | 4 | 1 | X | X | 0xEB04X1XX | 主引导:FlexSPI:引导镜像 1 |
0xEB | 0 | 7 | 0 | X | X | 0xEB070XXX | 主引导:SD(实例 0) |
0xEB | 0 | 7 | 1 | X | X | 0xEB071XXX | 主引导:SD(实例 1) |
0xEB | 0 | 8 | 0 | X | X | 0xEB080XXX | 主引导:MMC(实例 0) |
0xEB | 0 | 8 | 1 | X | X | 0xEB081XXX | 主引导:MMC(实例 1) |
0xEB | 1 | 0 | X | X | X | 0xEB10XXXX | ISP 引导:USART |
0xEB | 1 | 1 | X | X | X | 0xEB11XXXX | ISP 引导:I2C |
0xEB | 1 | 2 | X | X | X | 0xEB12XXXX | ISP 引导:SPI |
0xEB | 1 | 3 | X | X | X | 0xEB13XXXX | ISP 引导:HID |
以下示例展示了用户应用程序如何使用该 API 调用 ROM。 示例 1:
1 | user_app_boot_invoke_option_t boot_options = {0}; |
示例 2:
1 | user_app_boot_invoke_option_t boot_options = {0}; |
41.12 附录
本章引用的补充信息。 表 1107. Get property
属性标签 | 标签详细信息 |
---|---|
kPropertyTag_BootloaderVersion = 0x01 | 引导程序版本 |
kPropertyTag_AvailablePeripherals = 0x02 | ISP 模式可用外设 |
kPropertyTag_AvailableCommands = 0x07 | ISP 模式可用命令 |
kPropertyTag_MaxPacketSize = 0x0B | 每次传输的 ISP 最大数据包大小 |
kPropertyTag_RAMSizeInBytes = 0x0F | 设备 RAM 大小(字节) |
kPropertyTag_SystemDeviceId = 0x10 | 设备系统设备 ID |
kPropertyTag_SecurityState = 0x11 | 设备安全状态 |
kPropertyTag_UniqueDeviceId = 0x12 | 唯一设备 ID |
kPropertyTag_TargetVersion = 0x18 | 目标版本号,返回芯片版本和 ROM 版本,该属性的描述见下文注释 |
kPropertyTag_ExternalMemoryAttributes = 0x19 | 外部存储器属性 |
注释:目标版本属性: 针对属性 ID
0x18
,ROM 引导程序返回的目标版本号由三个字段组成,以 “.” 分隔,目标版本以字母 “T” 为前缀,格式为 T < 主版本。次版本。修订版 >;例如 T2.0.2。 主版本和次版本对应芯片版本的主值和次值,修订版字段对应引导 ROM 的修订版。如果芯片未应用 ROM 补丁,则 ROM 在修订版字段返回 “0”,否则返回有效的 ROM 补丁版本。
表 1108. Set property
属性标签 | 标签详细信息 |
---|---|
kPropertyTag_IrqNotifierPin = 0x1C | 进入 ISP 模式中断服务程序时设置引脚通知器 |
RT600 BootROM RM解析 (7)
https://dustofstars.github.io/NXP/RT600/BootROM/rt600-bootrom-rm解析-7/