-
Notifications
You must be signed in to change notification settings - Fork 8k
STM32 OSPI NOR: run application from external flash memory #93032
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
d02c1a8
to
f4991ef
Compare
MCUboot mode should not be set on MCUboot side in my opinion, it should be set on Zephyr side using Sysbuild (SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP) at the board or app level so that the setting is propagated properly to both MCUboot and App builds. |
Define the partition of the external octo NOR in the b_u858i_iot02a.dts to avoid conflict with the partitioning of the b_u858i_iot02a_ns.dts. |
fixing compliance issues |
4028e70
to
a08697f
Compare
Creating a variant (only) for the b_u585i_iot02a disco kit : b_u585i_iot02a/stm32u585xx/xip
|
rebase on 87917a1 |
84e4be6
to
30f5ca9
Compare
changing the name of the variant to "ext_flash_app" |
rebase
Do you mean that .conf file in the mcuboot do not need to set
|
Yes, it doesn't.
zephyr/soc/espressif/Kconfig.sysbuild Line 5 in 47b07e5
|
Rebase on 47b07e5 |
|
waiting for the #93762 to report all modifications to stm32 ospi flash and then stm32 flash qspi drivers |
rebase on 727c15a |
boards/st/b_u585i_iot02a/b_u585i_iot02a_stm32u585xx_ext_flash_app.yaml
Outdated
Show resolved
Hide resolved
zephyr,console = &usart1; | ||
zephyr,shell-uart = &usart1; | ||
zephyr,sram = &sram0; | ||
zephyr,flash = &flash0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the purpose of zephyr,flash
here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it indicates where to download the application
With this, mcuboot is downloaded in the (internal) flash (like any other samples/basic application).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be in MCUboot overlay, please see #97037 and mcu-tools/mcuboot#2479
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing
chosen {
zephyr,flash = &flash0;
}
and the samples/hello_world/ cannot build anymore
section `rom_start' will not fit in region `FLASH'
region `FLASH' overflowed by 17616 bytes
It should, though, without any mcuboot
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ext_flash_app
variant is only meant to be used with MCUboot, and its zephyr,flash
should point to external Flash, this way no overlay with be needed at the user app level.
boards/st/b_u585i_iot02a/b_u585i_iot02a_stm32u585xx_ext_flash_app.dts
Outdated
Show resolved
Hide resolved
boards/st/b_u585i_iot02a/b_u585i_iot02a_stm32u585xx_ext_flash_app.yaml
Outdated
Show resolved
Hide resolved
a2e5177
to
ee425a8
Compare
Create a new variant to execute in place on the external octoSPI flash NOR of the b_u585i_iot02a disco kit The flash size in the yaml corresponds to the the slot0 of that external NOR memory. Signed-off-by: Francois Ramu <[email protected]>
Run the sample to execute in place on the external flash of the b_u585i_iot02a variant 'ext_flash_app' disco kit, with_boot application is built and linked for the external flash Signed-off-by: Francois Ramu <[email protected]>
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing Kconfig.sysbuild
at the board level, which shall contain at minimum
choice BOOTLOADER
default BOOTLOADER_MCUBOOT
endchoice
choice MCUBOOT_MODE
default MCUBOOT_MODE_DIRECT_XIP
endchoice
reg = <0x70000000 DT_SIZE_M(64)>; | ||
zephyr,memory-region = "EXTMEM"; | ||
/* The ATTR_MPU_EXTMEM attribut causing a MPU FAULT */ | ||
zephyr,memory-attr = <DT_MEM_ARM(ATTR_MPU_IO)>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
zephyr,memory-attr = <DT_MEM_ARM(ATTR_MPU_IO)>; | |
zephyr,memory-attr = <DT_MEM_ARM_MPU_FLASH>; |
IO is for memory-mapped devices.
board_runner_args(stm32cubeprogrammer "--extload=MX25LM51245G_STM32U585I-IOT02A.stldr") | ||
else() | ||
board_runner_args(stm32cubeprogrammer "--erase" "--port=swd" "--reset-mode=hw") | ||
if(CONFIG_STM32_MEMMAP OR (CONFIG_XIP AND CONFIG_BOOTLOADER_MCUBOOT)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if(CONFIG_STM32_MEMMAP OR (CONFIG_XIP AND CONFIG_BOOTLOADER_MCUBOOT)) | |
if(CONFIG_STM32_MEMMAP OR CONFIG_BOOTLOADER_MCUBOOT) |
RAM Load MCUboot mode can be used as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not needed, should be in ext_flash_app
variant DTS.
data-rate = <OSPI_DTR_TRANSFER>; | ||
four-byte-opcodes; | ||
status = "okay"; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
st,stm32-ospi-nor
binding shall include soc-nv-flash
binding, then ext Flash node should define write-block-size
and erase-block-size
properties, this way MCUboot MAX_IMG_SECTORS will be calculated automatically. See 1st commit of #97037.
- gnuarmemb | ||
ram: 786 | ||
flash: 416 | ||
vendor: st |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vendor: st | |
vendor: st | |
sysbuild: true |
to be refined according to the #97037 |
Following the stm32h5 run application in external flash memory XIP
This PR makes the samples/sysbuild/with_mcuboot --sysbuild running on a variant of the stm32u585 disco kit.
Requires the ./bootloader/mcuboot/bootzephyr/boards/b_u585i_iot02a_stm32u585xx_ext_flash_app.conf :
run the
west build -p -b b_u585i_iot02a/stm32u585xx/ext_flash_app samples/sysbuild/with_mcuboot --sysbuild
Requires boot/zephyr/boards/b_u585i_iot02a.conf