16#include "boot/boot_blocks.h"
17#include "system_rp2350.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)();
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(MemoryManagement_Handler, Default_Handler)
49WEAK_ALIAS_FUNC(BusFault_Handler, Default_Handler)
50WEAK_ALIAS_FUNC(UsageFault_Handler, Default_Handler)
51WEAK_ALIAS_FUNC(SecureFault_Handler, Default_Handler)
52WEAK_ALIAS_FUNC(SVC_Handler, Default_Handler)
53WEAK_ALIAS_FUNC(DebugMonitor_Handler, Default_Handler)
54WEAK_ALIAS_FUNC(PendSV_Handler, Default_Handler)
55WEAK_ALIAS_FUNC(SysTick_Handler, Default_Handler)
59WEAK_ALIAS_FUNC(TIMER0_IRQ_0_Handler, Default_Handler)
60WEAK_ALIAS_FUNC(TIMER0_IRQ_1_Handler, Default_Handler)
61WEAK_ALIAS_FUNC(TIMER0_IRQ_2_Handler, Default_Handler)
62WEAK_ALIAS_FUNC(TIMER0_IRQ_3_Handler, Default_Handler)
63WEAK_ALIAS_FUNC(TIMER1_IRQ_0_Handler, Default_Handler)
64WEAK_ALIAS_FUNC(TIMER1_IRQ_1_Handler, Default_Handler)
65WEAK_ALIAS_FUNC(TIMER1_IRQ_2_Handler, Default_Handler)
66WEAK_ALIAS_FUNC(TIMER1_IRQ_3_Handler, Default_Handler)
67WEAK_ALIAS_FUNC(PWM_IRQ_WRAP_0_Handler, Default_Handler)
68WEAK_ALIAS_FUNC(PWM_IRQ_WRAP_1_Handler, Default_Handler)
69WEAK_ALIAS_FUNC(DMA_IRQ_0_Handler, Default_Handler)
70WEAK_ALIAS_FUNC(DMA_IRQ_1_Handler, Default_Handler)
71WEAK_ALIAS_FUNC(DMA_IRQ_2_Handler, Default_Handler)
72WEAK_ALIAS_FUNC(DMA_IRQ_3_Handler, Default_Handler)
73WEAK_ALIAS_FUNC(USBCTRL_IRQ_Handler, Default_Handler)
74WEAK_ALIAS_FUNC(PIO0_IRQ_0_Handler, Default_Handler)
75WEAK_ALIAS_FUNC(PIO0_IRQ_1_Handler, Default_Handler)
76WEAK_ALIAS_FUNC(PIO1_IRQ_0_Handler, Default_Handler)
77WEAK_ALIAS_FUNC(PIO1_IRQ_1_Handler, Default_Handler)
78WEAK_ALIAS_FUNC(PIO2_IRQ_0_Handler, Default_Handler)
79WEAK_ALIAS_FUNC(PIO2_IRQ_1_Handler, Default_Handler)
80WEAK_ALIAS_FUNC(IO_IRQ_BANK0_Handler, Default_Handler)
81WEAK_ALIAS_FUNC(IO_IRQ_BANK0_NS_Handler, Default_Handler)
82WEAK_ALIAS_FUNC(IO_IRQ_QSPI_Handler, Default_Handler)
83WEAK_ALIAS_FUNC(IO_IRQ_QSPI_NS_Handler, Default_Handler)
84WEAK_ALIAS_FUNC(SIO_IRQ_FIFO_Handler, Default_Handler)
85WEAK_ALIAS_FUNC(SIO_IRQ_BELL_Handler, Default_Handler)
86WEAK_ALIAS_FUNC(SIO_IRQ_FIFO_NS_Handler, Default_Handler)
87WEAK_ALIAS_FUNC(SIO_IRQ_BELL_NS_Handler, Default_Handler)
88WEAK_ALIAS_FUNC(SIO_IRQ_MTIMECMP_Handler, Default_Handler)
89WEAK_ALIAS_FUNC(CLOCKS_IRQ_Handler, Default_Handler)
90WEAK_ALIAS_FUNC(SPI0_IRQ_Handler, Default_Handler)
91WEAK_ALIAS_FUNC(SPI1_IRQ_Handler, Default_Handler)
92WEAK_ALIAS_FUNC(UART0_IRQ_Handler, Default_Handler)
93WEAK_ALIAS_FUNC(UART1_IRQ_Handler, Default_Handler)
94WEAK_ALIAS_FUNC(ADC_IRQ_FIFO_Handler, Default_Handler)
95WEAK_ALIAS_FUNC(I2C0_IRQ_Handler, Default_Handler)
96WEAK_ALIAS_FUNC(I2C1_IRQ_Handler, Default_Handler)
97WEAK_ALIAS_FUNC(OTP_IRQ_Handler, Default_Handler)
98WEAK_ALIAS_FUNC(TRNG_IRQ_Handler, Default_Handler)
99WEAK_ALIAS_FUNC(PLL_SYS_IRQ_Handler, Default_Handler)
100WEAK_ALIAS_FUNC(PLL_USB_IRQ_Handler, Default_Handler)
101WEAK_ALIAS_FUNC(POWMAN_IRQ_POW_Handler, Default_Handler)
102WEAK_ALIAS_FUNC(POWMAN_IRQ_TIMER_Handler, Default_Handler)
105void (*
const isr_vector[])(void)
__attribute__((section(
".isr_vector"), used)) = {
111 MemoryManagement_Handler,
119 DebugMonitor_Handler,
124 TIMER0_IRQ_0_Handler,
125 TIMER0_IRQ_1_Handler,
126 TIMER0_IRQ_2_Handler,
127 TIMER0_IRQ_3_Handler,
128 TIMER1_IRQ_0_Handler,
129 TIMER1_IRQ_1_Handler,
130 TIMER1_IRQ_2_Handler,
131 TIMER1_IRQ_3_Handler,
132 PWM_IRQ_WRAP_0_Handler,
133 PWM_IRQ_WRAP_1_Handler,
145 IO_IRQ_BANK0_Handler,
146 IO_IRQ_BANK0_NS_Handler,
148 IO_IRQ_QSPI_NS_Handler,
149 SIO_IRQ_FIFO_Handler,
150 SIO_IRQ_BELL_Handler,
151 SIO_IRQ_FIFO_NS_Handler,
152 SIO_IRQ_BELL_NS_Handler,
153 SIO_IRQ_MTIMECMP_Handler,
159 ADC_IRQ_FIFO_Handler,
166 POWMAN_IRQ_POW_Handler,
167 POWMAN_IRQ_TIMER_Handler
172 constexpr blocks<0> start;
173 constexpr auto header = HEADER (start);
174 constexpr auto image = IMAGE_DEF (header,
175 image_type::TYPE_EXE,
178 exe_chip::CHIP_RP2350);
179 constexpr auto last = LAST_ITEM (image, image.size() - header.size());
180 constexpr auto link = LINK (last, 0);
181 constexpr auto footer = FOOTER (link);
185const auto boot_blocks
__attribute__((section(
".boot_blocks"), used)) = BLOCKS::footer;
188void Reset_Handler(
void) {
198void Default_Handler(
void) {
204WEAK_ALIAS_INT_FUNC( _read, return_0 );
205WEAK_ALIAS_INT_FUNC( _write, return_0 );
206WEAK_ALIAS_INT_FUNC( _open, return_0 );
207WEAK_ALIAS_INT_FUNC( _close, return_0 );
208WEAK_ALIAS_INT_FUNC( _link, return_0 );
209WEAK_ALIAS_INT_FUNC( _unlink, return_0 );
210WEAK_ALIAS_INT_FUNC( _stat, return_0 );
211WEAK_ALIAS_INT_FUNC( _fstat, return_0 );
212WEAK_ALIAS_INT_FUNC( _lseek, return_0 );
213WEAK_ALIAS_INT_FUNC( _isatty, return_0 );
214WEAK_ALIAS_INT_FUNC( _kill, return_0 );
215WEAK_ALIAS_INT_FUNC( _getpid, return_0 );
__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)
Initializes data and bss sections.
void __attribute__((noreturn))(*rom_reset_usb_boot_fn)(uint32_t
Reboot the device into BOOTSEL mode.