16#include "boot/boot_blocks.h"
17#include "system_rp2040.h"
25#define WEAK_FUNC(FUN) \
26void FUN(void) __attribute__ ((weak));
27#define WEAK_INT_FUNC(FUN) \
28int FUN() __attribute__ ((weak));
29#define WEAK_ALIAS_FUNC(FUN, FUN_ALIAS) \
30void FUN(void) __attribute__ ((weak, alias(#FUN_ALIAS)));
31#define WEAK_ALIAS_INT_FUNC(FUN, FUN_ALIAS) \
32int FUN() __attribute__ ((weak, alias(#FUN_ALIAS)));
35extern void reset_handler();
36extern uint32_t __StackTop;
38typedef void (*pFunc)(void);
41WEAK_FUNC(Default_Handler)
42WEAK_FUNC(Reset_Handler)
43WEAK_INT_FUNC(return_0)
46WEAK_ALIAS_FUNC(NMI_Handler, Default_Handler)
47WEAK_ALIAS_FUNC(HardFault_Handler, Default_Handler)
48WEAK_ALIAS_FUNC(SVC_Handler, Default_Handler)
49WEAK_ALIAS_FUNC(PendSV_Handler, Default_Handler)
50WEAK_ALIAS_FUNC(SysTick_Handler, Default_Handler)
53WEAK_ALIAS_FUNC(TIMER_IRQ_0_Handler, Default_Handler)
54WEAK_ALIAS_FUNC(TIMER_IRQ_1_Handler, Default_Handler)
55WEAK_ALIAS_FUNC(TIMER_IRQ_2_Handler, Default_Handler)
56WEAK_ALIAS_FUNC(TIMER_IRQ_3_Handler, Default_Handler)
57WEAK_ALIAS_FUNC(PWM_IRQ_WRAP_Handler, Default_Handler)
58WEAK_ALIAS_FUNC(USBCTRL_IRQ_Handler, Default_Handler)
59WEAK_ALIAS_FUNC(XIP_IRQ_Handler, Default_Handler)
60WEAK_ALIAS_FUNC(PIO0_IRQ_0_Handler, Default_Handler)
61WEAK_ALIAS_FUNC(PIO0_IRQ_1_Handler, Default_Handler)
62WEAK_ALIAS_FUNC(PIO1_IRQ_0_Handler, Default_Handler)
63WEAK_ALIAS_FUNC(PIO1_IRQ_1_Handler, Default_Handler)
64WEAK_ALIAS_FUNC(DMA_IRQ_0_Handler, Default_Handler)
65WEAK_ALIAS_FUNC(DMA_IRQ_1_Handler, Default_Handler)
66WEAK_ALIAS_FUNC(IO_IRQ_BANK0_Handler, Default_Handler)
67WEAK_ALIAS_FUNC(IO_IRQ_QSPI_Handler, Default_Handler)
68WEAK_ALIAS_FUNC(SIO_IRQ_PROC0_Handler, Default_Handler)
69WEAK_ALIAS_FUNC(SIO_IRQ_PROC1_Handler, Default_Handler)
70WEAK_ALIAS_FUNC(CLOCKS_IRQ_Handler, Default_Handler)
71WEAK_ALIAS_FUNC(SPI0_IRQ_Handler, Default_Handler)
72WEAK_ALIAS_FUNC(SPI1_IRQ_Handler, Default_Handler)
73WEAK_ALIAS_FUNC(UART0_IRQ_Handler, Default_Handler)
74WEAK_ALIAS_FUNC(UART1_IRQ_Handler, Default_Handler)
75WEAK_ALIAS_FUNC(ADC_IRQ_FIFO_Handler, Default_Handler)
76WEAK_ALIAS_FUNC(I2C0_IRQ_Handler, Default_Handler)
77WEAK_ALIAS_FUNC(I2C1_IRQ_Handler, Default_Handler)
78WEAK_ALIAS_FUNC(RTC_IRQ_Handler, Default_Handler)
81void (*
const isr_vector[])(void)
__attribute__((section(
".isr_vector"), used)) = {
104 PWM_IRQ_WRAP_Handler,
113 IO_IRQ_BANK0_Handler,
115 SIO_IRQ_PROC0_Handler,
116 SIO_IRQ_PROC1_Handler,
122 ADC_IRQ_FIFO_Handler,
133 constexpr blocks<0> start;
134 constexpr auto header = HEADER (start);
135 constexpr auto image = IMAGE_DEF (header,
136 image_type::TYPE_EXE,
137 exe_security::UNSPECIFIED,
139 exe_chip::CHIP_RP2040);
140 constexpr auto version = VERSION (image, MAJOR_VER, MINOR_VER);
141 constexpr auto last = LAST_ITEM (version, version.size() - header.size());
142 constexpr auto link = LINK (last, 0);
143 constexpr auto footer = FOOTER (link);
147const auto boot_blocks
__attribute__((section(
".boot_blocks"), used)) = BLOCKS::footer;
151void Reset_Handler(
void) {
161void Default_Handler(
void) {
167WEAK_ALIAS_INT_FUNC( _read, return_0 );
168WEAK_ALIAS_INT_FUNC( _write, return_0 );
169WEAK_ALIAS_INT_FUNC( _open, return_0 );
170WEAK_ALIAS_INT_FUNC( _close, return_0 );
171WEAK_ALIAS_INT_FUNC( _link, return_0 );
172WEAK_ALIAS_INT_FUNC( _unlink, return_0 );
173WEAK_ALIAS_INT_FUNC( _stat, return_0 );
174WEAK_ALIAS_INT_FUNC( _fstat, return_0 );
175WEAK_ALIAS_INT_FUNC( _lseek, return_0 );
176WEAK_ALIAS_INT_FUNC( _isatty, return_0 );
177WEAK_ALIAS_INT_FUNC( _kill, return_0 );
178WEAK_ALIAS_INT_FUNC( _getpid, return_0 );
__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)
Initializes data and bss sections.
CMSIS-Core(M) Device Peripheral Access Layer Header File for Device RP2040.
void __attribute__((noreturn))(*rom_reset_usb_boot_fn)(uint32_t
Reboot the device into BOOTSEL mode.