Skip to content

Commit 1f6d62a

Browse files
authored
Merge pull request #1684 from cesanta/nucleo-f746zg-baremetal
Workaround for aliased weak symbol override issue
2 parents d565faa + 3cd4fd2 commit 1f6d62a

File tree

3 files changed

+13
-18
lines changed

3 files changed

+13
-18
lines changed

examples/stm32/nucleo-f746zg-baremetal/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ which implements the following:
99
- Interrupt-driven [mip_driver_stm32.h](../../../drivers/mip_driver_stm32.h) ethernet driver
1010
- Blue LED blinky, based on SysTick interrupt
1111
- User button handler, turns off/on green LED, based on EXTI, interrupt-driven
12-
- Catch-all fault handler that blinks red LED
12+
- HardFault handler that blinks red LED
1313
- Debug log on UART3 (st-link)
1414

1515
## Requirements
@@ -24,13 +24,13 @@ Plugin your Nucleo board into USB, and attach an Ethernet cable.
2424
To build and flash:
2525

2626
```sh
27-
make clean flash
27+
$ make clean flash
2828
```
2929

30-
To see debug log, use any serial monitor program like `cu`:
30+
To see debug log, use any serial monitor program like `picocom` at 115200 bps and configure it to insert carriage returns after line feeds:
3131

3232
```sh
33-
cu -l /dev/ttyACM0 -s 115200
33+
$ picocom /dev/ttyACM0 -i -b 115200 --imap=lfcrlf
3434
```
3535

3636
## Benchmark

examples/stm32/nucleo-f746zg-baremetal/boot.c

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,8 @@ void __attribute__((weak)) DefaultIRQHandler(void) {
2121
for (;;) (void) 0;
2222
}
2323

24-
void __attribute__((weak)) EXTI_IRQHandler(void) {
25-
for (;;) (void) 0;
26-
}
27-
2824
#define WEAK_ALIAS __attribute__((weak, alias("DefaultIRQHandler")))
2925

30-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI0_IRQHandler(void);
31-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI1_IRQHandler(void);
32-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI2_IRQHandler(void);
33-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI3_IRQHandler(void);
34-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI4_IRQHandler(void);
35-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI9_5_IRQHandler(void);
36-
__attribute__((alias("EXTI_IRQHandler"))) void EXTI15_10_IRQHandler(void);
37-
3826
WEAK_ALIAS void NMI_Handler(void);
3927
WEAK_ALIAS void HardFault_Handler(void);
4028
WEAK_ALIAS void MemManage_Handler(void);
@@ -51,6 +39,13 @@ WEAK_ALIAS void TAMP_STAMP_IRQHandler(void);
5139
WEAK_ALIAS void RTC_WKUP_IRQHandler(void);
5240
WEAK_ALIAS void FLASH_IRQHandler(void);
5341
WEAK_ALIAS void RCC_IRQHandler(void);
42+
WEAK_ALIAS void EXTI0_IRQHandler(void);
43+
WEAK_ALIAS void EXTI1_IRQHandler(void);
44+
WEAK_ALIAS void EXTI2_IRQHandler(void);
45+
WEAK_ALIAS void EXTI3_IRQHandler(void);
46+
WEAK_ALIAS void EXTI4_IRQHandler(void);
47+
WEAK_ALIAS void EXTI9_5_IRQHandler(void);
48+
WEAK_ALIAS void EXTI15_10_IRQHandler(void);
5449
WEAK_ALIAS void DMA1_Stream0_IRQHandler(void);
5550
WEAK_ALIAS void DMA1_Stream1_IRQHandler(void);
5651
WEAK_ALIAS void DMA1_Stream2_IRQHandler(void);

examples/stm32/nucleo-f746zg-baremetal/main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ uint64_t mg_millis(void) { // Declare our own uptime function
2121
return s_ticks; // Return number of milliseconds since boot
2222
}
2323

24-
void DefaultIRQHandler(void) { // Catch-all fault handler
24+
void HardFault_Handler(void) { // Escalated fault handler
2525
gpio_output(LED3); // Setup red LED
2626
for (;;) spin(2999999), gpio_toggle(LED3); // Blink LED infinitely
2727
}
@@ -30,7 +30,7 @@ void SysTick_Handler(void) { // SyStick IRQ handler, triggered every 1ms
3030
s_ticks++;
3131
}
3232

33-
void EXTI_IRQHandler(void) {
33+
void EXTI15_10_IRQHandler(void) { // External interrupt handler
3434
s_exti++;
3535
if (EXTI->PR & BIT(PINNO(BTN1))) EXTI->PR = BIT(PINNO(BTN1));
3636
gpio_write(LED1, gpio_read(BTN1)); // No debounce. Turn LED if button pressed

0 commit comments

Comments
 (0)