← index #16537PR #4315
Related · high · value 0.679
QUERY · ISSUE

mboot fails to build

openby zeroby0opened 2025-01-07updated 2026-03-18
bugport-stm32needs-info

Port, board and/or hardware

ARDUINO_PORTENTA_H7

MicroPython version

git describe --dirty: v1.24.0-181-g495ce91ca; Building for ARDUINO_PORTENTA_H7.

But the board says MicroPython v1.25.0-preview.180.g495ce91ca on 2025-01-07; Arduino Portenta H7 with STM32H747 when I flash mpython (it already has mboot I guess).

I've also tried this for tag v1.24.0 and the same error occurs.

Reproduction

Following build instructions from here: https://github.com/micropython/micropython/tree/master/ports/stm32#build-instructions

git clone https://github.com/micropython/micropython.git
cd micropython/
make -C mpy-cross
cd ports/stm32/
make BOARD=ARDUINO_PORTENTA_H7 submodules
make BOARD=ARDUINO_PORTENTA_H7
make -C mboot BOARD=ARDUINO_PORTENTA_H7

Expected behaviour

mboot builds

Observed behaviour

....
....
CC ../../../lib/uzlib/header.c
CC ../../../lib/uzlib/tinflate.c
CC adc.c
CC main.c
main.c: In function 'build_flash_layout_str':
main.c:449:40: error: 'FLASH_LAYOUT_TEMPLATE' undeclared (first use in this function); did you mean 'FLASH_LAYOUT_STR_ALLOC'?
  449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
      |                                        ^~~~~~~~~~~~~~~~~~~~~
main.c:453:18: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
  453 |     size_t len = FLASH_LAYOUT_STR_ALLOC - 1;
      |                  ^~~~~~~~~~~~~~~~~~~~~~
main.c:449:40: note: each undeclared identifier is reported only once for each function it appears in
  449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
      |                                        ^~~~~~~~~~~~~~~~~~~~~
main.c:453:18: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
  453 |     size_t len = FLASH_LAYOUT_STR_ALLOC - 1;
      |                  ^~~~~~~~~~~~~~~~~~~~~~
main.c: In function 'pyb_usbdd_StrDescriptor':
main.c:449:40: error: 'FLASH_LAYOUT_TEMPLATE' undeclared (first use in this function); did you mean 'FLASH_LAYOUT_STR_ALLOC'?
  449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
      |                                        ^~~~~~~~~~~~~~~~~~~~~
main.c:1191:26: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
 1191 |                 char buf[FLASH_LAYOUT_STR_ALLOC];
      |                          ^~~~~~~~~~~~~~~~~~~~~~
main.c:1191:22: error: unused variable 'buf' [-Werror=unused-variable]
 1191 |                 char buf[FLASH_LAYOUT_STR_ALLOC];
      |                      ^~~
cc1: all warnings being treated as errors
make: *** [Makefile:295: build-ARDUINO_PORTENTA_H7/main.o] Error 1
make: Leaving directory '........./micropython/ports/stm32/mboot'

Additional Information

Link to offending line in main.c for your convenience: https://github.com/micropython/micropython/blob/master/ports/stm32/mboot/main.c#L449

Code of Conduct

Yes, I agree

CANDIDATE · PULL REQUEST

ports/stm32/mboot: Add missing include for irq.h

closedby IAmCoderopened 2018-11-21updated 2018-11-26

I was not able to build mboot. Received the following errors when building mboot for the PYB or STM32 boards, adding the include in the PR fixed it:

/ports/stm32/mboot$ make BOARD=PYBV11
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
CC ../../../ports/stm32/flashbdev.c
../../../ports/stm32/flashbdev.c: In function 'flash_bdev_ioctl':
../../../ports/stm32/flashbdev.c:225:32: error: implicit declaration of function 'raise_irq_pri' [-Werror=implicit-function-declaration]
             uint32_t basepri = raise_irq_pri(IRQ_PRI_FLASH); // prevent cache flushing and USB access
                                ^~~~~~~~~~~~~
../../../ports/stm32/flashbdev.c:225:46: error: 'IRQ_PRI_FLASH' undeclared (first use in this function); did you mean 'I2C_CR2_LAST'?
             uint32_t basepri = raise_irq_pri(IRQ_PRI_FLASH); // prevent cache flushing and USB access
                                              ^~~~~~~~~~~~~
                                              I2C_CR2_LAST
../../../ports/stm32/flashbdev.c:225:46: note: each undeclared identifier is reported only once for each function it appears in
../../../ports/stm32/flashbdev.c:232:13: error: implicit declaration of function 'restore_irq_pri' [-Werror=implicit-function-declaration]
             restore_irq_pri(basepri);
             ^~~~~~~~~~~~~~~
../../../ports/stm32/flashbdev.c: In function 'flash_bdev_writeblock':
../../../ports/stm32/flashbdev.c:364:38: error: 'IRQ_PRI_FLASH' undeclared (first use in this function); did you mean 'I2C_CR2_LAST'?
     uint32_t basepri = raise_irq_pri(IRQ_PRI_FLASH); // prevent cache flushing and USB access
                                      ^~~~~~~~~~~~~
                                      I2C_CR2_LAST
cc1: all warnings being treated as errors
Makefile:166: recipe for target 'build-PYBV11/ports/stm32/flashbdev.o' failed
make: *** [build-PYBV11/ports/stm32/flashbdev.o] Error 1

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied