pico-bootrom
访问 bootrom 中的函数和数据。
详细描述
此头文件可由汇编代码包含。
宏
- `#define [ROM_TABLE_CODE](c1, c2) ((c1) | ((c2)
函数
static uint32_t rom_table_code (uint8_t c1, uint8_t c2): 根据两个 ASCII 字符返回 bootrom 查找码。void * rom_func_lookup (uint32_t code)
通过代码查找 bootrom 函数。
void * rom_data_lookup (uint32_t code)
通过代码查找 bootrom 数据地址。
bool rom_funcs_lookup (uint32_t *table, unsigned int count)
查找多个 bootrom 函数地址的辅助函数。
static __force_inline void * rom_func_lookup_inline (uint32_t code)
通过代码查找 bootrom 函数。此方法被强制内联到调用者中,用于对 FLASH/RAM 敏感的代码。
static __force_inline void * rom_data_lookup_inline (uint32_t code)
通过代码查找 bootrom 数据地址。此方法被强制内联到调用者中,用于对 FLASH/RAM 敏感的代码。
void rom_reset_usb_boot (uint32_t usb_activity_gpio_pin_mask, uint32_t disable_interface_mask): 将设备重启至 BOOTSEL 模式。void rom_reset_usb_boot_extra (int usb_activity_gpio_pin, uint32_t disable_interface_mask, bool usb_activity_gpio_pin_active_low): 将设备重启至 BOOTSEL 模式。static void rom_connect_internal_flash (void): 将 SSI/QMI 连接到 QSPI 引脚。static void rom_flash_exit_xip (void): 将 QSPI 设备从 XIP 状态恢复到串行命令状态。static void rom_flash_range_erase (uint32_t addr, size_t count, uint32_t block_size, uint8_t block_cmd): 擦除 flash 中的字节。static void rom_flash_range_program (uint32_t addr, const uint8_t *data, size_t count)
向 flash 写入字节。static void rom_flash_flush_cache (void): 刷新 XIP 缓存。static void rom_flash_enter_cmd_xip (void): 使用标准命令配置 SSI/QMI。static int rom_reboot (uint32_t flags, uint32_t delay_ms, uint32_t p0, uint32_t p1)RP2350
使用看门狗重启。
static void rom_bootrom_state_reset (uint32_t flags) RP2350
重置 bootrom 状态。
static void rom_flash_reset_address_trans (void) RP2350
重置地址转换。
static void rom_flash_select_xip_read_mode (bootrom_xip_mode_t mode, uint8_t clkdiv) RP2350
以 XIP 读取模式配置 QMI。
static int rom_flash_op (cflash_flags_t flags, uintptr_t addr, uint32_t size_bytes, uint8_t *buf) RP2350
执行 flash 读取、擦除或写入操作。
static int rom_func_otp_access (uint8_t *buf, uint32_t buf_len, otp_cmd_t cmd) RP2350
将缓冲区数据写入 OTP,或从 OTP 读取数据到缓冲区。
static int rom_get_partition_table_info (uint32_t *out_buffer, uint32_t out_buffer_word_size, uint32_t partition_and_flags) RP2350
用分区表中的信息填充缓冲区。
static int rom_load_partition_table (uint8_t *workarea_base, uint32_t workarea_size, bool force_reload) RP2350
从 flash 加载当前分区表(如果存在)。
static int rom_pick_ab_partition (uint8_t *workarea_base, uint32_t workarea_size, uint partition_a_num, uint32_t flash_update_boot_window_base) RP2350
从 A/B 对中选择一个分区。
int rom_pick_ab_partition_during_update (uint32_t *workarea_base, uint32_t workarea_size, uint partition_a_num) RP2350
在不干扰任何正在进行的 Flash 更新启动或 TBYB 启动的情况下选择 A/B 分区。
static int rom_get_b_partition (uint pi_a) RP2350
获取 B 分区。
static int rom_get_uf2_target_partition (uint8_t **workarea_base, uint32_t workarea_size, uint32_t family_id, resident_partition_t **partition_out) RP2350
获取 UF2 目标分区。
static intptr_t rom_flash_runtime_to_storage_addr (uintptr_t flash_runtime_addr) RP2350