bootrom.h File Reference
#include "pico.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 characters. More...
 
#define rom_hword_as_ptr(rom_address)   (void *)(uintptr_t)(*(uint16_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 characters. 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 functions. More...
 
static __force_inline void * rom_func_lookup_inline (uint32_t code)
 Lookup a bootrom function by code. This method is forceably 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 mode. More...