bootrom.h File Reference
#include "pico.h"
Include dependency graph for bootrom.h:

Go to the source code of this file.

Macros

#define ROM_FUNC_POPCOUNT32   ROM_TABLE_CODE('P', '3')
 
#define ROM_FUNC_REVERSE32   ROM_TABLE_CODE('R', '3')
 
#define ROM_FUNC_CLZ32   ROM_TABLE_CODE('L', '3')
 
#define ROM_FUNC_CTZ32   ROM_TABLE_CODE('T', '3')
 
#define ROM_FUNC_MEMSET   ROM_TABLE_CODE('M', 'S')
 
#define ROM_FUNC_MEMSET4   ROM_TABLE_CODE('S', '4')
 
#define ROM_FUNC_MEMCPY   ROM_TABLE_CODE('M', 'C')
 
#define ROM_FUNC_MEMCPY44   ROM_TABLE_CODE('C', '4')
 
#define ROM_FUNC_RESET_USB_BOOT   ROM_TABLE_CODE('U', 'B')
 
#define ROM_FUNC_CONNECT_INTERNAL_FLASH   ROM_TABLE_CODE('I', 'F')
 
#define ROM_FUNC_FLASH_EXIT_XIP   ROM_TABLE_CODE('E', 'X')
 
#define ROM_FUNC_FLASH_RANGE_ERASE   ROM_TABLE_CODE('R', 'E')
 
#define ROM_FUNC_FLASH_RANGE_PROGRAM   ROM_TABLE_CODE('R', 'P')
 
#define ROM_FUNC_FLASH_FLUSH_CACHE   ROM_TABLE_CODE('F', 'C')
 
#define ROM_FUNC_FLASH_ENTER_CMD_XIP   ROM_TABLE_CODE('C', 'X')
 
#define ROM_TABLE_CODE(c1, c2)   ((c1) | ((c2) << 8))
 Return a bootrom lookup code based on two ASCII charactersThese codes are uses to lookup data or function addresses in the bootrom. More...
 
#define rom_hword_as_ptr(rom_address)   (void *)(uintptr_t)(*(uint16_t *)(uintptr_t)(rom_address))
 

Typedefs

typedef uint32_t(* rom_popcount32_fn) (uint32_t)
 
typedef uint32_t(* rom_reverse32_fn) (uint32_t)
 
typedef uint32_t(* rom_clz32_fn) (uint32_t)
 
typedef uint32_t(* rom_ctz32_fn) (uint32_t)
 
typedef uint8_t *(* rom_memset_fn) (uint8_t *, uint8_t, uint32_t)
 
typedef uint32_t *(* rom_memset4_fn) (uint32_t *, uint8_t, uint32_t)
 
typedef uint32_t *(* rom_memcpy_fn) (uint8_t *, const uint8_t *, uint32_t)
 
typedef uint32_t *(* rom_memcpy44_fn) (uint32_t *, const uint32_t *, uint32_t)
 
typedef void(* rom_reset_usb_boot_fn) (uint32_t, uint32_t)
 
typedef rom_reset_usb_boot_fn reset_usb_boot_fn
 
typedef void(* rom_connect_internal_flash_fn) (void)
 
typedef void(* rom_flash_exit_xip_fn) (void)
 
typedef void(* rom_flash_range_erase_fn) (uint32_t, size_t, uint32_t, uint8_t)
 
typedef void(* rom_flash_range_program_fn) (uint32_t, const uint8_t *, size_t)
 
typedef void(* rom_flash_flush_cache_fn) (void)
 
typedef void(* rom_flash_enter_cmd_xip_fn) (void)
 
typedef void *(* rom_table_lookup_fn) (uint16_t *table, uint32_t code)
 

Functions

static uint32_t rom_table_code (uint8_t c1, uint8_t c2)
 Return a bootrom lookup code based on two ASCII charactersThese codes are uses to lookup data or function addresses in the bootrom. More...
 
void * rom_func_lookup (uint32_t code)
 Lookup a bootrom function by code. More...
 
void * rom_data_lookup (uint32_t code)
 Lookup a bootrom address by code. More...
 
bool rom_funcs_lookup (uint32_t *table, unsigned int count)
 Helper function to lookup the addresses of multiple bootrom functionsThis method looks up the 'codes' in the table, and convert each table entry to the looked up function pointer, if there is a function for that code in the bootrom. More...
 
static __force_inline void * rom_func_lookup_inline (uint32_t code)
 Lookup a bootrom function by code. This method is forcibly inlined into the caller for FLASH/RAM sensitive code usage. More...
 
static void reset_usb_boot (uint32_t usb_activity_gpio_pin_mask, uint32_t disable_interface_mask)
 Reboot the device into BOOTSEL modeThis function reboots the device into the BOOTSEL mode ('usb boot"). More...