Skip to content

Conversation

@titouanc
Copy link
Owner

@titouanc titouanc commented Jan 11, 2025

  • st: stm32h7rs: add xspi peripherals
  • board: st: stm32h7s78-dk: add support for on-board flash on xspi2

@titouanc titouanc changed the base branch from main to vl53l0x-interrupt-mode January 11, 2025 11:55
@titouanc titouanc changed the base branch from vl53l0x-interrupt-mode to main January 11, 2025 11:56
@titouanc
Copy link
Owner Author

titouanc commented Jan 11, 2025

This currently does not build. It seems that the STM32 HAL for stm32h7rsxx XSPI is incompatible with the Zephyr stm32 xspi flash driver.

For example, with west build -b stm32h7s78_dk zephyr/samples/drivers/flash_shell:

FAILED: zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_stm32_xspi.c.obj 
/opt/zephyr-sdk-0.17.0/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc -DCORE_CM7 -DHSE_VALUE=24000000 -DKERNEL -DK_HEAP_MEM_POOL_SIZE=0 -DPICOLIBC_DOUBLE_PRINTF_SCANF -DSTM32H7S7xx -DUSE_FULL_LL_DRIVER -DUSE_HAL_DRIVER -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR_SUPERVISOR__ -D__ZEPHYR__=1 -I/home/titou/Code/midizephyr/build/zephyr/include/generated/zephyr -I/home/titou/Code/midizephyr/zephyr/include -I/home/titou/Code/midizephyr/build/zephyr/include/generated -I/home/titou/Code/midizephyr/zephyr/soc/st/stm32 -I/home/titou/Code/midizephyr/zephyr/lib/posix/options/getopt -I/home/titou/Code/midizephyr/zephyr/soc/st/stm32/common/. -I/home/titou/Code/midizephyr/zephyr/drivers -I/home/titou/Code/midizephyr/zephyr/soc/st/stm32/stm32h7rsx/. -I/home/titou/Code/midizephyr/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/titou/Code/midizephyr/modules/hal/cmsis/CMSIS/Core/Include -I/home/titou/Code/midizephyr/zephyr/modules/cmsis/. -I/home/titou/Code/midizephyr/modules/hal/stm32/stm32cube/stm32h7rsxx/soc -I/home/titou/Code/midizephyr/modules/hal/stm32/stm32cube/stm32h7rsxx/drivers/include -I/home/titou/Code/midizephyr/modules/hal/stm32/stm32cube/common_ll/include -isystem /home/titou/Code/midizephyr/zephyr/lib/libc/common/include -Wshadow -fno-strict-aliasing -Os -imacros /home/titou/Code/midizephyr/build/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/opt/zephyr-sdk-0.17.0/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/titou/Code/midizephyr/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/titou/Code/midizephyr/zephyr/samples/drivers/flash_shell=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/titou/Code/midizephyr/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/titou/Code/midizephyr=WEST_TOPDIR -ffunction-sections -fdata-sections -specs=picolibc.specs -D_POSIX_THREADS -std=c99 -MD -MT zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_stm32_xspi.c.obj -MF zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_stm32_xspi.c.obj.d -o zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_stm32_xspi.c.obj -c /home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c: In function 'xspi_prepare_cmd':
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:193:18: error: 'XSPI_RegularCmdTypeDef' has no member named 'SIOOMode'
  193 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                  ^~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:193:29: error: 'HAL_XSPI_SIOO_INST_EVERY_CMD' undeclared (first use in this function)
  193 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:193:29: note: each undeclared identifier is reported only once for each function it appears in
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:193:29: warning: excess elements in struct initializer
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:193:29: note: (near initialization for 'cmd_tmp')
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c: In function 'stm32_xspi_mem_reset':
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:776:18: error: 'XSPI_RegularCmdTypeDef' has no member named 'SIOOMode'
  776 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                  ^~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:776:29: error: 'HAL_XSPI_SIOO_INST_EVERY_CMD' undeclared (first use in this function)
  776 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:776:29: warning: excess elements in struct initializer
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:776:29: note: (near initialization for 's_command')
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c: In function 'flash_stm32_xspi_erase':
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:1024:18: error: 'XSPI_RegularCmdTypeDef' has no member named 'SIOOMode'
 1024 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                  ^~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:1024:29: error: 'HAL_XSPI_SIOO_INST_EVERY_CMD' undeclared (first use in this function)
 1024 |                 .SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD,
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:1024:29: warning: excess elements in struct initializer
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:1024:29: note: (near initialization for 'cmd_erase')
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c: In function 'flash_stm32_xspi_init':
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2127:29: error: 'XSPI_InitTypeDef' has no member named 'DelayBlockBypass'
 2127 |         dev_data->hxspi.Init.DelayBlockBypass = HAL_XSPI_DELAY_BLOCK_ON;
      |                             ^
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2127:49: error: 'HAL_XSPI_DELAY_BLOCK_ON' undeclared (first use in this function)
 2127 |         dev_data->hxspi.Init.DelayBlockBypass = HAL_XSPI_DELAY_BLOCK_ON;
      |                                                 ^~~~~~~~~~~~~~~~~~~~~~~
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2160:9: error: unknown type name 'HAL_XSPI_DLYB_CfgTypeDef'; did you mean 'LL_DLYB_CfgTypeDef'?
 2160 |         HAL_XSPI_DLYB_CfgTypeDef xspi_delay_block_cfg = {0};
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
      |         LL_DLYB_CfgTypeDef
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2162:15: warning: implicit declaration of function 'HAL_XSPI_DLYB_GetClockPeriod'; did you mean 'LL_DLYB_GetClockPeriod'? [-Wimplicit-function-declaration]
 2162 |         (void)HAL_XSPI_DLYB_GetClockPeriod(&dev_data->hxspi, &xspi_delay_block_cfg);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               LL_DLYB_GetClockPeriod
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2164:29: error: request for member 'PhaseSel' in something not a structure or union
 2164 |         xspi_delay_block_cfg.PhaseSel /= 4;
      |                             ^
/home/titou/Code/midizephyr/zephyr/drivers/flash/flash_stm32_xspi.c:2166:13: warning: implicit declaration of function 'HAL_XSPI_DLYB_SetConfig'; did you mean 'HAL_XSPIM_Config'? [-Wimplicit-function-declaration]
 2166 |         if (HAL_XSPI_DLYB_SetConfig(&dev_data->hxspi, &xspi_delay_block_cfg) != HAL_OK) {
      |             ^~~~~~~~~~~~~~~~~~~~~~~
      |             HAL_XSPIM_Config
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /usr/bin/cmake --build /home/titou/Code/midizephyr/build

STM32 HAL is currently in this revision (from west update):

commit 37842371f5ef0078ad32f16e5059c1df58b51892 (HEAD, manifest-rev)
Author: Fabrice DJIATSA <[email protected]>
Date:   Wed Dec 4 14:45:22 2024 +0100

    dts:  update readme
    
    update open pin data commit sha1
    
    Signed-off-by: Fabrice DJIATSA <[email protected]>

@titouanc titouanc force-pushed the add-xspiflash-stm32h7s78dk branch 2 times, most recently from 97db902 to fefa8c5 Compare March 14, 2025 11:37
@titouanc titouanc changed the base branch from main to master March 14, 2025 14:40
@titouanc titouanc changed the base branch from master to main March 14, 2025 14:40
titouanc added 10 commits April 2, 2025 15:52
Add entries in the device tree for the xspi1 and xspi2 controllers.

Signed-off-by: Titouan Christophe <[email protected]>
Add device tree entry for the 1Gbit octo-spi flash on the board,
wired to the xspi2 peripheral.

Signed-off-by: Titouan Christophe <[email protected]>
Signed-off-by: Titouan Christophe <[email protected]>
Signed-off-by: Titouan Christophe <[email protected]>
Signed-off-by: Titouan Christophe <[email protected]>
Signed-off-by: Titouan Christophe <[email protected]>
Signed-off-by: Titouan Christophe <[email protected]>
@titouanc titouanc force-pushed the add-xspiflash-stm32h7s78dk branch from 893de7e to 7538026 Compare April 2, 2025 14:05
@titouanc
Copy link
Owner Author

titouanc commented Apr 2, 2025

See zephyrproject-rtos#88052

@titouanc titouanc closed this Jun 26, 2025
@titouanc titouanc deleted the add-xspiflash-stm32h7s78dk branch June 26, 2025 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants