RT600 BootROM RM解析 (7)

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef struct _user_app_boot_invoke_option 
{
union{
struct
{
uint32_t reserved : 8;
uint32_t boot_image_index : 4;
uint32_t instance : 4;
uint32_t boot_interface : 4;
uint32_t mode : 4;
uint32_t tag : 8;
}B;
uint32_t U;
}option;
} user_app_boot_invoke_option_t;

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
2
3
4
5
user_app_boot_invoke_option_t boot_options = {0};  
boot_options.option.B.tag = 0xeb;
boot_options.option.B.mode = 0x1;
boot_options.option.B.boot_interface = 0x2;
runBootloader((void*)&boot_options); // 调用此函数后,系统将复位并以SPI接口进入ISP模式运行

示例 2:

1
2
3
4
5
6
user_app_boot_invoke_option_t boot_options = {0};  
boot_options.option.B.tag = 0xeb;
boot_options.option.B.mode = 0x0;
boot_options.option.B.boot_interface = 0x4;
boot_options.option.B.boot_image_index = 0x0;
runBootloader((void*)&boot_options); // 调用此函数后,系统将复位并通过FLEXSPI接口引导镜像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 模式中断服务程序时设置引脚通知器
作者

Gavin

发布于

2025-05-20

更新于

2025-05-20

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×