Skip to content
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

mcuboot supports the stm32 external flash in XiP mode #2154

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

FRASTM
Copy link

@FRASTM FRASTM commented Dec 18, 2024

New version of the old PR #1891

Adding the stm32h7s3l8 nucleo board

Following zephyrproject-rtos/zephyr#76305

Build the application with sysbuild for the nucleo_h7S3L8 :

  1. `west build -p auto -b nucleo_h7s3l8 samples/boards/st/hello_world_xip --sysbuild -- -DSB_CONFIG_BOOTLOADER_MCUBOOT=y -DCONFIG_FLASH_BASE_ADDRESS=0x70000000
  2. then, flash mcuboot at address 0x8000000 and signed hello_world_xip application at 0x70000000 (where i can read the magic nb)

With CONFIG_STM32_MEMMAP flag get NOR flash 32 bytes header
Read the NOR flash to get header of the image.
The FLASH_DEVICE is now the external NOR defined by
the board device tree to be the first qspi/ospi/xspi instance
(not necessarily zephyr, flash-controller)

Signed-off-by: Francois Ramu <francois.ramu@st.com>
@FRASTM
Copy link
Author

FRASTM commented Dec 18, 2024

requires the zephyrproject-rtos/zephyr#82275 which introduces the nucleo_h7s3l8 target
The application running in the external flash is a samples/hello_world available in the branch https://github.com/FRASTM/zephyr/tree/xip_h7s3

@de-nordic de-nordic added area: zephyr Affects the Zephyr port STM Changes related to STM platforms labels Dec 18, 2024
@JarmouniA
Copy link

JarmouniA commented Jan 17, 2025

@FRASTM Any plans to move forward with this PR? some CI issues to be fixed (Primarily caused by missing "Signed-off-by: Francois RAMU francois.ramu@st.com" in some commits)

Copy link
Collaborator

@nordicjm nordicjm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same for all .dts files, otherwise you can't build a zephyr application for them

*/
/ {
chosen {
zephyr,flash = &flash0;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be in the board dts in zephyr

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is in each board dts for zephyr, so I think I can remove it from each overlay

@FRASTM
Copy link
Author

FRASTM commented Jan 23, 2025

correct sign-off
removing chosen zephyr,flash = &flash0; from the overlay as it is in the board DTS for zephyr


/ {
chosen {
zephyr,flash = &flash0;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this whole file shouldn't be needed since flash is already set here: https://github.com/zephyrproject-rtos/zephyr/blob/main/boards/st/nucleo_h7s3l8/nucleo_h7s3l8.dts#L22 and code partition will be applied automatically via app.overlay

boot/zephyr/boards/nucleo_h7s3l8.overlay Outdated Show resolved Hide resolved
status = "okay";

partitions {
compatible = "fixed-partitions";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be in the upstream zephyr board so it's visible to everything

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The xspi1 node is not enabled in the zephyr boards/st/stm32h7s78_dk/
then moving the overlay from mcuboot to zephyr board DTS will create a dependency with another next PR in zephyr (a PR to add the xspi1 node)

boot/zephyr/boards/stm32h7s78_dk.overlay Outdated Show resolved Hide resolved
boot/zephyr/boards/b_u585i_iot02a.overlay Outdated Show resolved Hide resolved
Define the stm32 disco board configuration to set
the STM32 XIP mode that will enable the MemoryMapped mode.
See Kconfig of the stm32 soc.
There is a app.overlay to Choose the mcu_boot partition
where to build ../bootloader/mcuboot/boot/zephyr

Signed-off-by: Francois Ramu <francois.ramu@st.com>
Define the stm32 disco board configuration to set
the STM32 XIP mode that will enable the MemoryMapped mode.
See Kconfig of the stm32 soc.
There is a app.overlay to Choose the mcu_boot partition
where to build ../bootloader/mcuboot/boot/zephyr

Signed-off-by: Francois Ramu <francois.ramu@st.com>
Define the overlay for the stm32h7s78 disco kit xpsi peripheral

Signed-off-by: Francois Ramu <francois.ramu@st.com>
Define the stm32 nucleo board configuration to set
the STM32 XIP mode that will enable the MemoryMapped mode.
See Kconfig of the stm32 soc.
There is app.overlay to Choose the mcu_boot partition
where to build ../bootloader/mcuboot/boot/zephyr

Signed-off-by: Francois Ramu <francois.ramu@st.com>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@FRASTM I had to add CONFIG_BOOT_MAX_IMG_SECTORS_AUTO=n CONFIG_BOOT_MAX_IMG_SECTORS=256 as well to get it working.
With the following memory layout in board dts:

/* 128KB sector size */
&flash0 {
	partitions {
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(128)>;
		};
	};
};

/* Sector erase 64KB uniform granularity */
/* Subsector erase 4KB, 32KB granularity */
&mt25ql512ab1 {
        status = "okay";
	partitions {
                slot0_partition: partition@0 {
			label = "image-0";
			reg = <0x00000000 DT_SIZE_K(2048)>;
		};
		slot1_partition: partition@200000 {
			label = "image-1";
			reg = <0x00200000 DT_SIZE_K(2048)>;
		};
		storage_partition: partition@400000 {
			label = "storage";
			reg = <0x00400000 DT_SIZE_K(128)>;
		};
        };
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: zephyr Affects the Zephyr port STM Changes related to STM platforms
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants