From 4e61f85a6bf87f86a076113898917fe5e67ed5b9 Mon Sep 17 00:00:00 2001 From: Tomas Groth Christensen Date: Fri, 7 Feb 2025 15:41:59 +0100 Subject: [PATCH 1/2] boards: st: add initial support for the stm32h757i eval board Signed-off-by: Tomas Groth Christensen --- .../stm32h757i_eval_stm32h757xx_m7.conf | 6 + .../stm32h757i_eval_stm32h757xx_m7.conf | 10 + .../stm32h757i_eval_stm32h757xx_m7.defconfig | 21 ++ .../stm32h757i_eval_stm32h757xx_m7.overlay | 46 +++ boards/st/stm32h757i_eval/CMakeLists.txt | 9 + boards/st/stm32h757i_eval/Kconfig.defconfig | 18 ++ .../stm32h757i_eval/Kconfig.stm32h757i_eval | 8 + boards/st/stm32h757i_eval/board.cmake | 26 ++ boards/st/stm32h757i_eval/board.yml | 6 + boards/st/stm32h757i_eval/dc_ram.ld | 16 + .../doc/img/stm32h757i_eval.jpg | Bin 0 -> 49334 bytes boards/st/stm32h757i_eval/doc/index.rst | 298 ++++++++++++++++++ .../st/stm32h757i_eval/stm32h757i_eval.dtsi | 118 +++++++ .../stm32h757i_eval_stm32h757xx_m4.dts | 60 ++++ .../stm32h757i_eval_stm32h757xx_m4.yaml | 18 ++ .../stm32h757i_eval_stm32h757xx_m4_defconfig | 18 ++ .../stm32h757i_eval_stm32h757xx_m7.dts | 298 ++++++++++++++++++ .../stm32h757i_eval_stm32h757xx_m7.yaml | 18 ++ .../stm32h757i_eval_stm32h757xx_m7_defconfig | 22 ++ .../support/openocd_stm32h757i_eval_m4.cfg | 12 + .../support/openocd_stm32h757i_eval_m7.cfg | 42 +++ 21 files changed, 1070 insertions(+) create mode 100644 boards/shields/st_b_lcd40_dsi1_mb1166/boards/st_b_lcd40_dsi1_mb1166/stm32h757i_eval_stm32h757xx_m7.conf create mode 100644 boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.conf create mode 100644 boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig create mode 100644 boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.overlay create mode 100644 boards/st/stm32h757i_eval/CMakeLists.txt create mode 100644 boards/st/stm32h757i_eval/Kconfig.defconfig create mode 100644 boards/st/stm32h757i_eval/Kconfig.stm32h757i_eval create mode 100644 boards/st/stm32h757i_eval/board.cmake create mode 100644 boards/st/stm32h757i_eval/board.yml create mode 100644 boards/st/stm32h757i_eval/dc_ram.ld create mode 100644 boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg create mode 100644 boards/st/stm32h757i_eval/doc/index.rst create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval.dtsi create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.yaml create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4_defconfig create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.yaml create mode 100644 boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7_defconfig create mode 100644 boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m4.cfg create mode 100644 boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg diff --git a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/st_b_lcd40_dsi1_mb1166/stm32h757i_eval_stm32h757xx_m7.conf b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/st_b_lcd40_dsi1_mb1166/stm32h757i_eval_stm32h757xx_m7.conf new file mode 100644 index 000000000000..b8b9c9b7ee35 --- /dev/null +++ b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/st_b_lcd40_dsi1_mb1166/stm32h757i_eval_stm32h757xx_m7.conf @@ -0,0 +1,6 @@ +# Copyright (c) 2023 bytes at work AG +# Copyright (c) 2024 Erik Andersson +# SPDX-License-Identifier: Apache-2.0 + +# Initialize after LTDC and MIPI-DSI +CONFIG_DISPLAY_OTM8009A_INIT_PRIORITY=87 diff --git a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.conf b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.conf new file mode 100644 index 000000000000..2d7a5f6e4a3b --- /dev/null +++ b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.conf @@ -0,0 +1,10 @@ +# Copyright (c) 2023 bytes at work AG +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_MEMC=y +CONFIG_STM32_LTDC_ARGB8888=y +CONFIG_HEAP_MEM_POOL_SIZE=65536 +CONFIG_MAIN_STACK_SIZE=4096 + +CONFIG_INPUT_FT5336=y +CONFIG_LV_Z_POINTER_INPUT=y diff --git a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig new file mode 100644 index 000000000000..d13075b5743b --- /dev/null +++ b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig @@ -0,0 +1,21 @@ +# Copyright (c) 2024 Linumiz +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_STM32H757I_EVAL_STM32H757XX_M7 +if LVGL + +# Double frame buffer maintained by lvgl. +config STM32_LTDC_FB_NUM + default 0 + +config LV_Z_DOUBLE_VDB + default y + +config LV_Z_VDB_CUSTOM_SECTION + default y + +config LV_Z_FULL_REFRESH + default y + +endif #LVGL +endif # BOARD_STM32H757I_EVAL_STM32H757XX_M7 diff --git a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.overlay b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.overlay new file mode 100644 index 000000000000..7d96dd56e8db --- /dev/null +++ b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.overlay @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 bytes at work AG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&sdram2 { + /* Frame buffer memory when cached causes screen flickering. */ + zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>; +}; + +&zephyr_lcd_controller { + status = "okay"; + ext-sdram = <&sdram2>; + def-back-color-red = <0>; + def-back-color-green = <0>; + def-back-color-blue = <0>; +}; + +/* ltdc uses pll3_r as pixel clock */ +&pll3 { + status = "okay"; + clocks = <&clk_hse>; + div-m = <5>; + mul-n = <132>; + div-p = <2>; + div-q = <2>; + div-r = <24>; /* 27.5 MHz */ +}; + +&zephyr_mipi_dsi { + status = "okay"; + + /* DSI HOST dedicated PLL + * F_VCO = CLK_IN / pll-idf * 2 * pll-ndiv + * PHI = F_VCO / 2 / (1 << pll-odf) = lane_byte_clk + * = 25 MHz / 5 * 2 * 100 / 2 / (1<<0) / 8 = 62.5 MHz + */ + pll-ndiv = <100>; + pll-idf = <5>; + pll-odf = <0>; + + vs-active-high; + hs-active-high; + de-active-high; +}; diff --git a/boards/st/stm32h757i_eval/CMakeLists.txt b/boards/st/stm32h757i_eval/CMakeLists.txt new file mode 100644 index 000000000000..760172973896 --- /dev/null +++ b/boards/st/stm32h757i_eval/CMakeLists.txt @@ -0,0 +1,9 @@ +# +# Copyright 2023 BrainCo Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Add custom linker section to relocate framebuffers to PSRAM +zephyr_linker_sources_ifdef(CONFIG_LV_Z_VDB_CUSTOM_SECTION + SECTIONS dc_ram.ld) diff --git a/boards/st/stm32h757i_eval/Kconfig.defconfig b/boards/st/stm32h757i_eval/Kconfig.defconfig new file mode 100644 index 000000000000..3762144eab0d --- /dev/null +++ b/boards/st/stm32h757i_eval/Kconfig.defconfig @@ -0,0 +1,18 @@ +# STM32H757I EVAL board configuration + +# Copyright (c) 2019 Linaro Limited +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_STM32H757I_EVAL + +if NETWORKING + +config NET_L2_ETHERNET + default y + +endif # NETWORKING + +config DISK_DRIVER_SDMMC + default y if DISK_DRIVERS + +endif # BOARD_STM32H757I_EVAL diff --git a/boards/st/stm32h757i_eval/Kconfig.stm32h757i_eval b/boards/st/stm32h757i_eval/Kconfig.stm32h757i_eval new file mode 100644 index 000000000000..5b39882c1190 --- /dev/null +++ b/boards/st/stm32h757i_eval/Kconfig.stm32h757i_eval @@ -0,0 +1,8 @@ +# STM32H757I EVAL board configuration + +# Copyright (c) 2019 Linaro Limited +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_STM32H757I_EVAL + select SOC_STM32H757XX_M7 if BOARD_STM32H757I_EVAL_STM32H757XX_M7 + select SOC_STM32H757XX_M4 if BOARD_STM32H757I_EVAL_STM32H757XX_M4 diff --git a/boards/st/stm32h757i_eval/board.cmake b/boards/st/stm32h757i_eval/board.cmake new file mode 100644 index 000000000000..af2307e95bea --- /dev/null +++ b/boards/st/stm32h757i_eval/board.cmake @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2019 STMicroelectronics + +# keep first +if(CONFIG_STM32_MEMMAP) +board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") +# not supported for STM32H757I-EVAL (?) +#board_runner_args(stm32cubeprogrammer "--extload=MT25TL01G_STM32H757I-EVAL.stldr") +else() +board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") +endif() + +if(CONFIG_BOARD_STM32H757I_EVAL_STM32H757XX_M7) + board_runner_args(jlink "--device=STM32H757XI") + board_runner_args(openocd "--config=${BOARD_DIR}/support/openocd_stm32h757i_eval_m7.cfg") + board_runner_args(openocd --target-handle=_CHIPNAME.cpu0) +elseif(CONFIG_BOARD_STM32H757I_EVAL_STM32H757XX_M4) + board_runner_args(jlink "--device=STM32H757XI_M4") + board_runner_args(openocd "--config=${BOARD_DIR}/support/openocd_stm32h757i_eval_m4.cfg") + board_runner_args(openocd --target-handle=_CHIPNAME.cpu1) +endif() + +# keep first +include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/st/stm32h757i_eval/board.yml b/boards/st/stm32h757i_eval/board.yml new file mode 100644 index 000000000000..5f73c601f91d --- /dev/null +++ b/boards/st/stm32h757i_eval/board.yml @@ -0,0 +1,6 @@ +board: + name: stm32h757i_eval + full_name: STM32H757I Eval + vendor: st + socs: + - name: stm32h757xx diff --git a/boards/st/stm32h757i_eval/dc_ram.ld b/boards/st/stm32h757i_eval/dc_ram.ld new file mode 100644 index 000000000000..bd1565960d51 --- /dev/null +++ b/boards/st/stm32h757i_eval/dc_ram.ld @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023 BrainCo Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#if DT_NODE_HAS_STATUS(DT_NODELABEL(sdram2), okay) +GROUP_START(SDRAM2) + + SECTION_PROLOGUE(_STM32_SDRAM2_SECTION_NAME, (NOLOAD),) + { + *(.lvgl_buf) + } GROUP_LINK_IN(SDRAM2) + +GROUP_END(SDRAM2) +#endif diff --git a/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg b/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg new file mode 100644 index 0000000000000000000000000000000000000000..188731a6287691dbd00a8cfa1e4d6013dfa2db27 GIT binary patch literal 49334 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

ei);A;n0Oz_H{DTON^sYEL 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�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�nx?em&j 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 MyeRLvfAsJF+4e@trvLx| literal 0 HcmV?d00001 diff --git a/boards/st/stm32h757i_eval/doc/index.rst b/boards/st/stm32h757i_eval/doc/index.rst new file mode 100644 index 000000000000..f310e8c49551 --- /dev/null +++ b/boards/st/stm32h757i_eval/doc/index.rst @@ -0,0 +1,298 @@ +.. zephyr:board:: stm32h757i_eval + +Overview +******** + +The evaluation kit enables a wide diversity of applications taking benefit +from audio, multi-sensor support, graphics, security, video, +and high-speed connectivity features. + +The STM32H7X7I-eval board comes with both the STM32H757XI SoC and the STM32H747XI SoC. +But in the following documentation, we will focus on the STM32H757XI SoC, but both should work. + +The board includes an STM32H757XI SoC with a high-performance DSP, Arm Cortex-M7 + Cortex-M4 MCU, +with 2MBytes of Flash memory, 1MB RAM, 480 MHz CPU, Art Accelerator, L1 cache, external memory interface, +large set of peripherals, SMPS, and MIPI-DSI. + +Additionally, the board features: + +- On-board ST-LINK/V3E supporting USB reenumeration capability +- USB ST-LINK functions: virtual COM port, mass storage, debug port +- Flexible power-supply options: + + - ST-LINK USB VBUS, USB OTG HS connector, or external sources + +- 4” capacitive touch LCD display module with MIPI® DSI interface +- Ethernet compliant with IEEE802.3-2002 +- USB OTG HS and OTG FS +- I2C compatible serial interface +- RTC with rechargeable backup battery +- SAI audio DAC +- ST-MEMS digital microphones +- 8-Gbyte (or more) SDIO 3.0 interface microSD card +- 8 M×32bit SDRAM, 1 M×16bit SDRAM and 8 M×16bit NOR flash memory +- 1-Gbit twin Quad-SPI NOR flash memory or two 512-Mbit Quad-SPI NOR flash memories +- Potentiometer +- 4 color user LEDs +- Reset, wakeup, tamper, or key buttons +- Joystick with 4-direction control and selector + + +More information about the board can be found at the `STM32H757I-EVAL website`_. +More information about STM32H757XIH6 can be found here: + +- `STM32H757XI on www.st.com`_ +- `STM32H757xx reference manual`_ +- `STM32H757xx datasheet`_ + +Supported Features +================== + +The current Zephyr stm32h757i_eval board configuration supports the following hardware features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| FLASH | on-chip | flash memory | ++-----------+------------+-------------------------------------+ +| ETHERNET | on-chip | ethernet | ++-----------+------------+-------------------------------------+ +| RNG | on-chip | True Random number generator | ++-----------+------------+-------------------------------------+ +| FMC | on-chip | memc (SDRAM) | ++-----------+------------+-------------------------------------+ +| SPI | on-chip | spi | ++-----------+------------+-------------------------------------+ +| QSPI NOR | on-chip | off-chip flash | ++-----------+------------+-------------------------------------+ +| SDMMC | on-chip | disk access | ++-----------+------------+-------------------------------------+ +| IPM | on-chip | virtual mailbox based on HSEM | ++-----------+------------+-------------------------------------+ +| DISPLAY | on-chip | MIPI DSI Host with shield (MP1166) | +| | | st_b_lcd40_dsi1_mb1166 | ++-----------+------------+-------------------------------------+ + +Other hardware features are not yet supported on Zephyr porting. + +The default configuration per core can be found in the defconfig files: +:zephyr_file:`boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7_defconfig` and +:zephyr_file:`boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4_defconfig` + +Pin Mapping +=========== + +STM32H757I Discovery kit has 9 GPIO controllers. These controllers are responsible for pin muxing, +input/output, pull-up, etc. + +For more details please refer to `STM32H757I-EVAL website`_. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +- UART_1 TX/RX : PA9/PA10 (ST-Link Virtual Port Com) +- SDMMC_1 D0/D1/D2/D3/CK/CMD: PC8/PC9/PC10/PC11/PC12/PD2 +- LD1 : PK3 +- LD2 : PK4 +- LD3 : PK5 +- LD4 : PK6 +- W-UP : PA0 +- J-CENTER : PB0 +- J-DOWN : PB1 +- J-LEFT : PB2 +- J-RIGHT : PB3 +- J-UP : PB4 + +System Clock +============ + +The STM32H757I System Clock can be driven by an internal or external oscillator, +as well as by the main PLL clock. By default, the CPU1 (Cortex-M7) System clock +is driven by the PLL clock at 400MHz, and the CPU2 (Cortex-M4) System clock +is driven at 200MHz. PLL clock is feed by a 25MHz high speed external clock. + +Serial Port +=========== + +Default configuration assigns USART1 to the CPU1. The Zephyr console +output is assigned to UART1 which connected to the onboard ST-LINK/V3.0. Virtual +COM port interface. Default communication settings are 115200 8N1. + +Display +======= + +The STM32H757I Eval kit has a dedicated DSI LCD connector **CN15**, where +the MB1166 (B-LCD40-DSI1) display extension board can be mounted. Enable display +support in Zephyr by adding the shield ``st_b_lcd40_dsi1_mb1166`` or +``st_b_lcd40_dsi1_mb1166_a09`` to your build command, for example: + +.. zephyr-app-commands:: + :zephyr-app: samples/drivers/display + :board: stm32h757i_eval/stm32h757xx/m7 + :shield: st_b_lcd40_dsi1_mb1166 + :goals: build flash + +.. note:: + The shield comes in different hardware revisions, the MB1166-A09 + is utilizing a NT35510 panel controller and shall specifically + use ``st_b_lcd40_dsi1_mb1166_a09`` as SHIELD when building. + Prior versions are utilizing an OTM8009a controller and shall + use shield name without postfix, that is: ``st_b_lcd40_dsi1_mb1166``. + Shield version is printed on a sticker placed below the two bottom + mounting holes and has the format: MB1166-Axx. + +Resources sharing +================= + +The dual core nature of STM32H757 SoC requires sharing HW resources between the +two cores. This is done in 3 ways: + +- **Compilation**: Clock configuration is only accessible to M7 core. M4 core only + has access to bus clock activation and deactivation. +- **Static pre-compilation assignment**: Peripherals such as a UART are assigned in + devicetree before compilation. The user must ensure peripherals are not assigned + to both cores at the same time. +- **Run time protection**: Interrupt-controller and GPIO configurations could be + accessed by both cores at run time. Accesses are protected by a hardware semaphore + to avoid potential concurrent access issues. + +Programming and Debugging +************************* + +STM32H757I-EVAL board includes an ST-LINK/V3 embedded debug tool interface. + +Applications for the ``stm32h757i_disco`` board should be built per core target, +using either ``stm32h757i_eval/stm32h757xx/m7`` or ``stm32h757i_eval/stm32h757xx/m4`` +as the target. +See :ref:`build_an_application` for more information about application builds. + +.. note:: + + Check if the board's ST-LINK V3 has the newest FW version. It can be updated + using `STM32CubeProgrammer`_. + +.. note:: + + With OpenOCD, sometimes, flashing does not work. It is necessary to + erase the flash (with STM32CubeProgrammer for example) to make it work again. + Debugging with OpenOCD is currently working for this board only with Cortex M7, + not Cortex M4. + + +Flashing +======== + +Flashing operation will depend on the target to be flashed and the SoC +option bytes configuration. + +The board is configured to be flashed using west `STM32CubeProgrammer`_ runner +for both cores, so its :ref:`installation ` is required. +The target core is detected automatically. + +Alternatively, OpenOCD or JLink can also be used to flash the board using +the ``--runner`` (or ``-r``) option: + +.. code-block:: console + + $ west flash --runner openocd + $ west flash --runner jlink + +It is advised to use `STM32CubeProgrammer`_ to check and update option bytes +configuration. + +By default: + + - CPU1 (Cortex-M7) boot address is set to 0x80000000 (OB: BOOT_CM7_ADD0) + - CPU2 (Cortex-M4) boot address is set to 0x81000000 (OB: BOOT_CM4_ADD0) + +Also, default out of the box board configuration enables CM7 and CM4 boot when +board is powered (Option bytes BCM7 and BCM4 are checked). +It is possible to change Option Bytes so that CM7 boots first in stand alone, +and CM7 will wakeup CM4 after clock initialization. +Drivers are able to take into account both Option Bytes configurations +automatically. + +Zephyr flash configuration has been set to meet these default settings. + +Flashing an application to STM32H757I M7 Core +--------------------------------------------- + +First, connect the STM32H757I Eval kit to your host computer using +the USB port to prepare it for flashing. Then build and flash your application. + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: stm32h757i_eval/stm32h757xx/m7 + :goals: build flash + +Run a serial host program to connect with your board: + +.. code-block:: console + + $ minicom -D /dev/ttyACM0 + +You should see the following message on the console: + +.. code-block:: console + + Hello World! stm32h757i_disco + +.. note:: + Sometimes, flashing is not working. It is necessary to erase the flash + (with STM32CubeProgrammer for example) to make it work again. + +Similarly, you can build and flash samples on the M4 target. For this, please +take care of the resource sharing (UART port used for console for instance). + +Here is an example for the :zephyr:code-sample:`blinky` application on M4 core. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: stm32h757i_eval/stm32h757xx/m7 + :goals: build flash + +Debugging +========= + +You can debug an application on Cortex M7 side in the usual way. Here is an example +for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: stm32h757i_eval/stm32h757xx/m7 + :goals: debug + +Debugging a Zephyr application on Cortex M4 side with west is currently not available. +As a workaround, you can use `STM32CubeIDE`_. + +.. _STM32H757I-EVAL website: + https://www.st.com/en/evaluation-tools/stm32h757i-eval.html + +.. _STM32H757XI on www.st.com: + https://www.st.com/en/microcontrollers-microprocessors/stm32h757xi.html + +.. _STM32H757xx reference manual: + https://www.st.com/resource/en/reference_manual/rm0399-stm32h745755-and-stm32h747757-advanced-armbased-32bit-mcus-stmicroelectronics.pdf + +.. _STM32H757xx datasheet: + https://www.st.com/resource/en/datasheet/stm32h757xi.pdf + +.. _STM32CubeProgrammer: + https://www.st.com/en/development-tools/stm32cubeprog.html + +.. _DISCO_H747I modifications for Ethernet: + https://os.mbed.com/teams/ST/wiki/DISCO_H747I-modifications-for-Ethernet + +.. _STM32CubeIDE: + https://www.st.com/en/development-tools/stm32cubeide.html diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi b/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi new file mode 100644 index 000000000000..b517c6b371af --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2019 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +//#include "arduino_r3_connector.dtsi" +//#include "pmod_connector.dtsi" +#include + +/ { + leds { + compatible = "gpio-leds"; + green_led_1:led_1 { + gpios = <&gpiok 3 GPIO_ACTIVE_LOW>; + label = "User LD1"; + status = "disabled"; + }; + orange_led_2:led_2 { + gpios = <&gpiok 4 GPIO_ACTIVE_LOW>; + label = "User LD2"; + status = "disabled"; + }; + red_led_3:led_3 { + gpios = <&gpiok 5 GPIO_ACTIVE_LOW>; + label = "User LD3"; + status = "disabled"; + }; + blue_led_4:led_4 { + gpios = <&gpiok 6 GPIO_ACTIVE_LOW>; + label = "User LD4"; + status = "disabled"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + wake_up: button_1 { + label = "Wakeup"; + gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>; + status = "disabled"; + zephyr,code = ; + }; + tamper: button_2 { + label = "Tamper"; + gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; + status = "disabled"; + zephyr,code = ; + }; + joy_center: joystick_center { + label = "joystick center"; + gpios = <&gpiob 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "disabled"; + zephyr,code = ; + }; + joy_down: joystick_down { + label = "joystick down"; + gpios = <&gpiob 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "disabled"; + zephyr,code = ; + }; + joy_up: joystick_up { + label = "joystick up"; + gpios = <&gpiob 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "disabled"; + zephyr,code = ; + }; + joy_left: joystick_left { + label = "joystick left"; + gpios = <&gpiob 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "disabled"; + zephyr,code = ; + }; + joy_right: joystick_right { + label = "joystick right"; + gpios = <&gpiob 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + status = "disabled"; + zephyr,code = ; + }; + }; + + dsi_lcd_qsh_030: connector_dsi_lcd { + compatible = "st,dsi-lcd-qsh-030"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <4 0 &gpiob 14 0>, // TOUCH_INT + <35 0 &gpioe 5 0>, // SCLK/MCLK + <37 0 &gpioe 4 0>, // LRCLK + <39 0 &gpioe 6 0>, // I2S + <40 0 &gpiob 7 0>, // I2C4_SDA (=>I2C1_SDA) + <44 0 &gpiod 12 0>, // I2C4_SCL (=>I2C1_SCL) + <45 0 &gpioa 8 0>, // CEC_CLK + <47 0 &gpioa 15 0>, // CEC + <49 0 &gpioj 2 0>, // DSI_TE + <53 0 &gpioa 6 0>, // LCD_BL_CTRL + <57 0 &gpiof 10 0>; // DSI_RESET + }; +}; + +&rcc { + d1cpre = <1>; + hpre = <2>; + d1ppre = <2>; + d2ppre1 = <2>; + d2ppre2 = <2>; + d3ppre = <2>; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pb14 &usart1_rx_pb15>; + pinctrl-names = "default"; + current-speed = <115200>; +}; + +&mailbox { + status = "okay"; +}; diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts new file mode 100644 index 000000000000..fa6990388eed --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2019 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include "stm32h757i_eval.dtsi" + +/ { + model = "STMicroelectronics STM32H757I EVAL board"; + compatible = "st,stm32h757i-eval"; + + /* HW resources are split between CM7 and CM4 */ + chosen { + /* zephyr,console = &usart1; */ + /* zephyr,shell-uart = &usart1; */ + zephyr,sram = &sram1; + zephyr,flash = &flash1; + }; + + leds { + green_led_1:led_1 { + status = "okay"; + }; + orange_led_2:led_2 { + status = "okay"; + }; + red_led_3:led_3 { + status = "okay"; + }; + blue_led_4:led_4 { + status = "okay"; + }; + }; + + gpio_keys { + joy_center: joystick_center { + status = "okay"; + }; + }; + + aliases { + led0 = &green_led_1; + led1 = &orange_led_2; + led2 = &red_led_3; + led3 = &blue_led_4; + sw0 = &joy_center; + }; +}; + +&rcc { + clock-frequency = ; +}; + +&usart1 { + status = "okay"; +}; diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.yaml b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.yaml new file mode 100644 index 000000000000..c4f1095a6f0c --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.yaml @@ -0,0 +1,18 @@ +identifier: stm32h757i_eval/stm32h757xx/m4 +name: ST STM32H757I Eval (M4) +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 288 +flash: 1024 +supported: + - gpio +testing: + ignore_tags: + - mpu + - nfc + - net +vendor: st diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4_defconfig b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4_defconfig new file mode 100644 index 000000000000..fc25c23f302f --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4_defconfig @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2019 STMicroelectronics + +# Enable GPIO +CONFIG_GPIO=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Enable UART driver +CONFIG_SERIAL=y + +# By default CONSOLE is assigned to m7 +#CONFIG_CONSOLE=y +#CONFIG_UART_CONSOLE=y diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts new file mode 100644 index 000000000000..7ed113c17404 --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2019 Linaro Limited + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include +#include "stm32h757i_eval.dtsi" + + +/ { + model = "STMicroelectronics STM32H757I Eval board"; + compatible = "st,stm32h757i-eval"; + + /* HW resources are split between CM7 and CM4 */ + chosen { + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,flash-controller = &mt25ql512ab1; + }; + + sdram2: sdram@d0000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + device_type = "memory"; + reg = <0xd0000000 DT_SIZE_M(32)>; + zephyr,memory-region = "SDRAM2"; + zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM) )>; + }; + + ext_memory: memory@90000000 { + compatible = "zephyr,memory-region"; + reg = <0x90000000 DT_SIZE_M(64)>; /* 512 Mbits */ + zephyr,memory-region = "EXTMEM"; + /* The ATTR_MPU_EXTMEM attribut causing a MPU FAULT */ + zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_IO) )>; + }; + + leds { + green_led_1:led_1 { + status = "okay"; + }; + orange_led_2:led_2 { + status = "okay"; + }; + red_led_3:led_3 { + status = "okay"; + }; + blue_led_4:led_4 { + status = "okay"; + }; + }; + + gpio_keys { + wake_up: button_1 { + status = "okay"; + }; + tamper: button_2 { + status = "okay"; + }; + }; + + otghs_ulpi_phy: otghs_ulpis_phy { + compatible = "usb-ulpi-phy"; + #phy-cells = <0>; + }; + + aliases { + led0 = &green_led_1; + led1 = &orange_led_2; + led2 = &red_led_3; + led3 = &blue_led_4; + sw0 = &tamper; + }; +}; + +&clk_hse { + clock-frequency = ; + status = "okay"; +}; + +&clk_hsi48 { + status = "okay"; +}; + +&pll { + div-m = <5>; + mul-n = <160>; + div-p = <2>; + div-q = <4>; + div-r = <2>; + clocks = <&clk_hse>; + status = "okay"; +}; + +&pll2 { + div-m = <5>; + mul-n = <96>; + div-p = <2>; + div-q = <4>; + div-r = <10>; + clocks = <&clk_hse>; /* Assuming 25MHz HSE */ + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; +}; + +&usart1 { + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Set 2KB of storage at the end of first 1MB flash */ + storage_partition: partition@ff800 { + label = "storage"; + reg = <0x000ff800 DT_SIZE_K(2)>; + }; + }; +}; + +&mac { + /* + * From UM2411 Rev 4: + * With the default setting, the Ethernet feature is not working due + * of a pin conflict between ETH_MDC and SAI4_D1 of the MEMs digital + * microphone. + * Cf Ethernet section in board documentation for more information on + * the hw modification to be done to enable it. + */ + status = "okay"; + pinctrl-0 = <ð_ref_clk_pa1 + ð_crs_dv_pa7 + ð_rxd0_pc4 + ð_rxd1_pc5 + ð_tx_en_pg11 + ð_txd0_pg13 + ð_txd1_pg12>; + pinctrl-names = "default"; +}; + +&mdio { + status = "okay"; + pinctrl-0 = <ð_mdio_pa2 ð_mdc_pc1>; + pinctrl-names = "default"; + + ethernet-phy@0 { + compatible = "ethernet-phy"; + reg = <0x00>; + status = "okay"; + }; +}; + +&rng { + status = "okay"; +}; + +&fmc { + status = "okay"; + pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1 &fmc_nbl2_pi4 &fmc_nbl3_pi5 + &fmc_sdclk_pg8 &fmc_sdnwe_ph5 &fmc_sdcke1_ph7 + &fmc_sdne1_ph6 &fmc_sdnras_pf11 &fmc_sdncas_pg15 + &fmc_a0_pf0 &fmc_a1_pf1 &fmc_a2_pf2 &fmc_a3_pf3 &fmc_a4_pf4 + &fmc_a5_pf5 &fmc_a6_pf12 &fmc_a7_pf13 &fmc_a8_pf14 + &fmc_a9_pf15 &fmc_a10_pg0 &fmc_a11_pg1 &fmc_a12_pg2 + &fmc_a14_pg4 &fmc_a15_pg5 &fmc_d0_pd14 &fmc_d1_pd15 + &fmc_d2_pd0 &fmc_d3_pd1 &fmc_d4_pe7 &fmc_d5_pe8 &fmc_d6_pe9 + &fmc_d7_pe10 &fmc_d8_pe11 &fmc_d9_pe12 &fmc_d10_pe13 + &fmc_d11_pe14 &fmc_d12_pe15 &fmc_d13_pd8 &fmc_d14_pd9 + &fmc_d15_pd10 &fmc_d16_ph8 &fmc_d17_ph9 &fmc_d18_ph10 + &fmc_d19_ph11 &fmc_d20_ph12 &fmc_d21_ph13 &fmc_d22_ph14 + &fmc_d23_ph15 &fmc_d24_pi0 &fmc_d25_pi1 &fmc_d26_pi2 + &fmc_d27_pi3 &fmc_d28_pi6 &fmc_d29_pi7 &fmc_d30_pi9 + &fmc_d31_pi10>; + pinctrl-names = "default"; + + sdram { + status = "okay"; + + power-up-delay = <100>; + num-auto-refresh = <8>; + mode-register = <0x220>; + refresh-rate = <603>; + + bank@1 { + reg = <1>; + + st,sdram-control = ; + st,sdram-timing = <2 6 4 6 2 2 2>; + }; + }; +}; + +zephyr_udc0: &usbotg_hs { + pinctrl-0 = <&usb_otg_hs_ulpi_ck_pa5 + &usb_otg_hs_ulpi_d0_pa3 + &usb_otg_hs_ulpi_d1_pb0 + &usb_otg_hs_ulpi_d2_pb1 + &usb_otg_hs_ulpi_d3_pb10 + &usb_otg_hs_ulpi_d4_pb11 + &usb_otg_hs_ulpi_d5_pb12 + &usb_otg_hs_ulpi_d6_pb13 + &usb_otg_hs_ulpi_d7_pb5 + &usb_otg_hs_ulpi_stp_pc0 + &usb_otg_hs_ulpi_dir_pi11 + &usb_otg_hs_ulpi_nxt_ph4>; + pinctrl-names = "default"; + maximum-speed = "high-speed"; + /* Include the USB1ULPIEN clock enable bit */ + clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x06000000>, + <&rcc STM32_SRC_HSI48 USB_SEL(3)>; + phys = <&otghs_ulpi_phy>; + status = "okay"; +}; + +&sdmmc1 { + status = "okay"; + clocks = <&rcc STM32_CLOCK_BUS_AHB3 0x00010000>, + <&rcc STM32_SRC_PLL2_R SDMMC_SEL(1)>; + pinctrl-0 = <&sdmmc1_d0_pc8 &sdmmc1_d1_pc9 + &sdmmc1_d2_pc10 &sdmmc1_d3_pc11 + &sdmmc1_d4_pb8 &sdmmc1_d5_pb9 + &sdmmc1_d6_pc6 &sdmmc1_d7_pc7 + &sdmmc1_ck_pc12 &sdmmc1_cmd_pd2>; + pinctrl-names = "default"; + cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>; +}; + +&quadspi { + pinctrl-0 = <&quadspi_clk_pb2 &quadspi_bk1_ncs_pg6 + &quadspi_bk1_io0_pd11 &quadspi_bk1_io1_pf9 + &quadspi_bk1_io2_pf7 &quadspi_bk1_io3_pf6 + &quadspi_bk2_io0_ph2 &quadspi_bk2_io1_ph3 + &quadspi_bk2_io2_pg9 &quadspi_bk2_io3_pg14>; + pinctrl-names = "default"; + dual-flash; + status = "okay"; + + mt25ql512ab1: qspi-nor-flash-1@90000000 { + compatible = "st,stm32-qspi-nor"; + reg = <0x90000000 DT_SIZE_M(64)>; /* 512 Mbits */ + qspi-max-frequency = <72000000>; + spi-bus-width = <4>; + reset-cmd; + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + reg = <0x0 DT_SIZE_M(64)>; + }; + }; + }; + + mt25ql512ab2: qspi-nor-flash-2@90000000 { + compatible = "st,stm32-qspi-nor"; + reg = <0x90000000 DT_SIZE_M(64)>; /* 512 Mbits */ + qspi-max-frequency = <72000000>; + status = "okay"; + }; +}; + +//arduino_spi: &spi5 {}; + +/* alias used by display shields with touch control */ +qsh_030_i2c: &i2c4 { + pinctrl-0 = <&i2c4_scl_pd12 &i2c4_sda_pd13>; + pinctrl-names = "default"; + clock-frequency = ; + status = "okay"; +}; + +/* alias used by display shields */ +zephyr_mipi_dsi: &mipi_dsi {}; + +/* alias used by LCD display shields */ +zephyr_lcd_controller: <dc {}; diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.yaml b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.yaml new file mode 100644 index 000000000000..956e5dc0c4fb --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.yaml @@ -0,0 +1,18 @@ +identifier: stm32h757i_eval/stm32h757xx/m7 +name: ST STM32H757I Eval (M7) +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 2048 +flash: 1024 +supported: + - gpio + - spi + - netif:eth + - qspi + - memc + - usb_device +vendor: st diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7_defconfig b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7_defconfig new file mode 100644 index 000000000000..7339b469acc5 --- /dev/null +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7_defconfig @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2019 STMicroelectronics + +# Enable the internal SMPS regulator +CONFIG_POWER_SUPPLY_DIRECT_SMPS=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Disable following to assign serial ports to m4 core + +# Enable uart driver +CONFIG_SERIAL=y +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y diff --git a/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m4.cfg b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m4.cfg new file mode 100644 index 000000000000..ddceef92cb19 --- /dev/null +++ b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m4.cfg @@ -0,0 +1,12 @@ + +source [find interface/stlink.cfg] + +transport select hla_swd + +set DUAL_BANK 1 + +set DUAL_CORE 1 + +source [find target/stm32h7x.cfg] + +reset_config srst_only srst_nogate connect_assert_srst diff --git a/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg new file mode 100644 index 000000000000..81e3dcf5cfe8 --- /dev/null +++ b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg @@ -0,0 +1,42 @@ + +set WORKAREASIZE 0x8000 +#set CHIPNAME SOC_STM32H757XX_M7 +#set CHIPNAME stm32h7 +set BOARDNAME STM32H757I_EVAL + +#source [find interface/stlink.cfg] +#transport select hla_swd + +source [find interface/stlink-dap.cfg] +transport select dapdirect_swd + +set DUAL_CORE 1 + +#set DUAL_BANK 1 + +# ACCESS PORT NUMBER +set AP_NUM 1 + +source [find target/stm32h7x.cfg] + +# Use connect_assert_srst here to be able to program +# even when core is in sleep mode +reset_config srst_only srst_nogate connect_assert_srst + +#$_CHIPNAME.cpu0 configure -event gdb-attach { +# echo "Debugger attaching: halting execution" +# gdb_breakpoint_override hard +#} + +#$_CHIPNAME.cpu0 configure -event gdb-detach { +# echo "Debugger detaching: resuming execution" +# resume +#} + +# Due to the use of connect_assert_srst, running gdb requires +# to reset halt just after openocd init. +#rename init old_init +#proc init {} { +# old_init +# reset halt +#} From 32dcacbfea16fd74587293e0c2638ca87cefaaac Mon Sep 17 00:00:00 2001 From: Tomas Groth Christensen Date: Tue, 4 Mar 2025 14:37:43 +0100 Subject: [PATCH 2/2] Address review comments --- .../stm32h757i_eval_stm32h757xx_m7.defconfig | 2 + boards/st/stm32h757i_eval/board.cmake | 8 ++-- .../doc/img/stm32h757i_eval.jpg | Bin 49334 -> 0 bytes .../doc/img/stm32h757i_eval.webp | Bin 0 -> 36758 bytes boards/st/stm32h757i_eval/doc/index.rst | 2 +- .../st/stm32h757i_eval/stm32h757i_eval.dtsi | 13 +++++- .../stm32h757i_eval_stm32h757xx_m4.dts | 7 ++- .../stm32h757i_eval_stm32h757xx_m7.dts | 6 ++- .../support/openocd_stm32h757i_eval_m7.cfg | 44 ++++++------------ 9 files changed, 42 insertions(+), 40 deletions(-) delete mode 100644 boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg create mode 100644 boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.webp diff --git a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig index d13075b5743b..cf1fb463d243 100644 --- a/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig +++ b/boards/shields/st_b_lcd40_dsi1_mb1166/boards/stm32h757i_eval_stm32h757xx_m7.defconfig @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 if BOARD_STM32H757I_EVAL_STM32H757XX_M7 + if LVGL # Double frame buffer maintained by lvgl. @@ -18,4 +19,5 @@ config LV_Z_FULL_REFRESH default y endif #LVGL + endif # BOARD_STM32H757I_EVAL_STM32H757XX_M7 diff --git a/boards/st/stm32h757i_eval/board.cmake b/boards/st/stm32h757i_eval/board.cmake index af2307e95bea..475e20ccaaae 100644 --- a/boards/st/stm32h757i_eval/board.cmake +++ b/boards/st/stm32h757i_eval/board.cmake @@ -3,11 +3,11 @@ # keep first if(CONFIG_STM32_MEMMAP) -board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") -# not supported for STM32H757I-EVAL (?) -#board_runner_args(stm32cubeprogrammer "--extload=MT25TL01G_STM32H757I-EVAL.stldr") + board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") + # not supported for STM32H757I-EVAL (?) + #board_runner_args(stm32cubeprogrammer "--extload=MT25TL01G_STM32H757I-EVAL.stldr") else() -board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") + board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") endif() if(CONFIG_BOARD_STM32H757I_EVAL_STM32H757XX_M7) diff --git a/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg b/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.jpg deleted file mode 100644 index 188731a6287691dbd00a8cfa1e4d6013dfa2db27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49334 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

ei);A;n0Oz_H{DTON^sYEL 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�Na0!TQiYeOPjyZoIzn}#*?QQrb4Aw;NA3+7SbP(F~*JI%2TeP{&BtK|BidH@QEiy;dXiEoEok&LNcr|&2l=>GUx@$)3XN^q) zuRCdz=#l(s0q{K!!T{7K&qk)Jwzx{)0x@MO%k( zfagsp23gd&-{e4|(o9kOTM#{$6IvZu$UE;$!qW+Z^#YLD?c3BCf*@p%UF-fK*Q#1~ zK0A|c+)5H>(B`@hovnCGu~BsY0C_)qNz*1W!c$GV_|Ot?eY?3&6!fmP`CH1#!uItB%^QN%t6_$jSW?C} zFea?Soi5WhNSRmQY)x4=uQ%QaQo`;(&M8SQHJqrnfWc29XxMYz1diRs7c~$b4Oq4= zbs(?qcy#>0it8aSx~amlAtiDnS2c0_NcM=01?`ZgK)`C~(7$fcI*CJUX%fxJuDbX` zYeB+4Z(jQyL|0AI0SKND$Xt-#uxqI5JHRLg6rxXsqE&@lwcY!`d@<`*kT6DK4|3(4 zz}5hj0-3iq3|hNsjKNT#kynsfOR5(`-(|Q!4g@KyR*2G4MYIdy!H-=coP#AL-N6yz zF*H4BpE@`X9QrS*q_8@d1IQbY1zouw_VTF$g25%SNj|40xIVz<+WIn^c|M@hrcc%C z`x|pULvvQTLJ!Yb&0IpiApZbl;5Y7?b_fEKrWm&~icf;#%E2%^MOzd()S>1+w9=K+ zA-g|QiswG2m!TE~0ZCoL_wwYZZo-;t`3)}FFEM;oc%Q1t3 z0Xz+=^AZ)u4Xfa3--=<7%fYGs6>q{rFF1^fSOcg*%8EOy4h+%Rm&noFA0zuo;*`M! zc@fB^7`UT*wucNpHTsNuCt$K-w{}}iEvq-0>Ih0r*WgGQy`$z8e2FA-lioFPRPp-h}Fo0K!Ygx8&A}6O3*b)65gPD zv>2Ci+uiABX65a3#V`K$Baz41M=NgX`smEiQpSAc=#o$ASDM;fKc9+|rn%X%KM}g& zMxV383Sbqkm5pxhUT zr6NEu7Iv$wqR_aYv9!PfWyWpSPS+7`vp^(UxF->%xfHoK?E!$oSn_m}v{1pkiM6x) z>OIdfijb=(1_`7c!vp66u3%?y%03pQ%OiP@XP6(%Q2nRMmjzgIJcy+buDsp02E=?z z^%$moFQsQWfCVDz01#F&^Q-+pvuPw8w2*&V>3TKl?r0+c9{vZ+S66+Vr3aE|tpe?< zY=9stT!2-;hYe4ATPSS8oN5E~6b6-GnPSrfQ_DTK9__MB0uMOilz1P9yqhcyfg8|Z z-UZs-#S$j3-eYZmSklOUjSB)5XIGwDd9L}lZssGi=+$_2cQppwE!(6l<7lCMu7?ZC zV6}GwUJ1e0F_V%b6>UYk9ZjT@a5#Ak-zo}X$w+f=I&_C1&jC##*Krf48heQv6_n|O z1evR>65ac5R3xfF4a*v|pxh^@P#p{UD{0QciDvz3rrA8^9S+A87><&}X3=s`M11OrY=u~(fv>GIQuJW}UFF97U(!4%&e z#x=~YLo8MCr?{p|**AU?#L6+|t_>HgTptC+;QJ<<3;CE7fVb*kezeYV-fU7dqVC2` zS#i-=KlIwG!AlRF%d=KXT>=iHETE|SOPKl(Lj-aO6{tg9MS*hA9wzcW7;WZi<|x~Mp>b=Da4BWKB9)-v>#gXr7%^7%m~OLuK3Ei!3;*i zcA6o)Sdzez8b_%Vy-0ItxbTy019;ZDaJE{@vD8cJCsM5MAQ4-Kwx&DC8Vo)o(w%}O z#X&u`Zwkr`wDKz2>%C+?*EFmt4=}mFtG6^;xL+z#JU}eT&T7@TxpvjbE?t`>nBKJ; zi3@;IUzr=?!5r z6qCHu66RWg(jf7Oq*B^_Oj8h|;&kF%spm~I#44RK-a)Yjx`Eia({&}hX{6@jmDq|S z;&=@OKs;b=M34zw41Ia6nQf1R`Kk5Vg<=>Jv6?5}q<-6*PBetM_|XnPHGRU|vRi3X z8CLjOKs1UI^)lbBUvL}qxtg_P+O_`x`rpvBtq6tXf(GSQKBlZFK)#0S)uuOF>hD?$ zxq&`AgnhMH7gdyi(fn%FlWNc~GLpo{&NEC5y|)_uK+53m4LhhSYh;m=s6;h%%iGd? z)!GR8#cD5bwv`NB@sA|{P$fmEI;CKUAm(?cX+*aE`vn?6l4Xf8R>tb06&FA&F|?fQ zJ&{Dz&$4UN@vrZ#FN?D8@cfUk{0x7Q{io2^l``rEIAC|Do6BXK5D`?60+YCkv~?}U zNt^b?s8SGYD)APU?Ua+E;*X7^BpT`M!&&Mw0;{wgE5PEJ%Vm5`s1H%iNCaE308Av$ zyMSvzM1BP7laJKVmw0XEnwg+|1tOL$rb&uKH(4E6EIe$!rk?(^D)I%y?Uf_W2&A?V zu2{XOzO%_R&RQ&|!UFJ4lgA^;}l&p}`{qeX?nW zlwSFSEin@`q<8yw{{X$T9t*F^u6@r*)^wyvO>d(`+7WjBgdk0xpdATz%zR5UB`n!? zf*+>=QW1frP>#u^fn8r*16{*=Zf36==oV zKkldELm<*z>?U`f&{jX43t-$oH)(1+)sPDqQnBL4HF<$;PZO{MiZ?af`YLKPY!tAN zxLI$ucFhZ|ZBXv$bOKMB)u|!g(#d$1J;akM@ugq76>chUj4*X-8foI)zxBK=S!o_S zYw=W?HjBOGZwa)~Af#~7S4`asJRw07ao8VmvLn=0)E2EG&Mr6aH!w1CDVW-`^hB$c zt?Gfu*ONxjOY@|#bK8IgJNE;kWV*WFaPN--iI?YMN%oC(jh4a@z{Hf3mpzI*21`QWE*J{{S7KlEWMdyoT3J*YvCK zOXY6)cxh1I>N;V?tD*EO+x62=e^slOE}iV#O*(Pu6?Ho|5f)EwL`YrB9MR9dB580S z@rq+Qf|9&WNx+@xS_sK_F|OK14KwSbqCNs9Vw>8HIN~LEjfa%Fh*k{f-oUoTf|xcQ^ZpEgDVLPrCq?W7T zCF{YwB@wQG2q5^EkxO%2+%YR{Qei;Zc%V1-f7CwB!KqdkRWqANV8POfk|_P%szpS$ zAVwE|>K6wY1bTub8hd8%$*rrBmYe*djjLgyK3Lg#woD;$I`{{U#Nq_23c zQ^u=>C`3~ERj1O-UI;S=5F8UqhFWo_=S}ZDtRk@U2tiUfG~~{K@D>4%lfc?&Tt-xX zsA4MRwpX;euv*{&a5pt!9`h^{6?;Omu;m)-IX;C& z2Y&BOc=E>NV9*9Gso1Zx@qzru?Gq>R6GUkq!|6q{qhsObIf?`*>X!6)5WF3Ez^ArT zvDG;Ntz9>CU>N{`N_)3a(|g@F_DPdh?=6d6U7JD>T(fVr%rJ`Ypq%h^ z3VZ$F*B5({ZV){45)Ctux|_@h73Rj10Z~kM6!`L#| zz3R|zJhGNhOGpl}JSz&azWuag0f=Q(bIA$~UcccufOre^6qb#|)Ifo3GY}z^WYx}$ zBjX{9sXi2lh`^y_BHO*7hFLnuT*!b$btE;y9SC+TeZ~)!fK>7-)v%f&bg*9}G4AXQ z1fS_31yu_Jzy)=84Xby{$wj(6Oi4LL21Pp!b{zT0KSmKW+l^K7KV>f)Sz!iB*0TC! z>N#Rg=4nvGkCrNR6RY~4!sDN>G;x)yhe9u_H7aR)*6f{HpG+2I=B1xYdH_u^(P?Dr z*m?X_YU>`|z$Ic>=*r2Ow$pJYKyvdn)%5GApyY)hnik*qYp#_Af%PlmtP-!bsAvQc zho3`TP4~J`e&}5k7qVR$h?uk_p|tp6(1-x3G{``{QzZ*> z_@RKzx$Xcw{w_HbH^qK0QTrJ=paPH9vc{($XI_LM@Da|W@V_ENis`M-X5tJoTwn(N ztxije#gHH@qeeiai&1aS!xKczslcX1Is?vjo_s)5pt;k%*a>(;Op4OC zh0VmUgXdS9O}zOauG}@e!3{ETOiztwH2~XJ6aM0!O^tjlNz}9k zOFWQ2OqwsBE&-x6uy3c%p6}jh-L2hHMA|E}F%W5lu~+d6Pcy1ejabq_rY$y*m=2`L zYhd%Z=A=l^HFu~1UB=9|h{vg#v`xc8*@B}a(v23!&EH5BU^h_y0}Qj^P{WZV)&8iZ z%}DTb4tDTLVx`&Q#KwRCgN0 z6S_Y3&z25Bt8N@UyPHH+^Zg&WZHy45pwWGH?V)0AsB?xkh>Afc9GI&rx2}uGa*YiDtmR1+*tA1Gn7&T9`b{#p?kad?Pb#N)GgcI` z+*Y5wl6~4x8SOa|Ly$~*8bt-cRGGoMVH_Wh(~=ZyxLdtCbYYN55<KO$zXE0yvd z649h^4P3UDZ9HThFX5VlZqJtf1f=`-{{XTUpF*Gwyeg0DEfe5o$-v&*7-BeZ4Rrx~ zS@AlAUKyc)k)^UK%v-kh!2kweL8iz=<=U?{rXg#}kChMzAmoB5>Vl^|x8$uc0&O^B za@#}>%=poGH4OIj0zUUs{{VO-Xd97D3ZY{*-0;3fin!>u*8q?SIowxCY~AJ{vC=E4 z>Oi?5?5LQM1z3k(-jG8NK4fw!JX*)&0*xJt(cN3f$Mq~?k$;(|C5Cok<=XNT%ruUmD7c{Ir-?Y_(= z1X31JZJT>+3}kv@oPto{S-9|$am^}eH?+cFAdPX7PV~>)TWf5M)a8be08-jlZ753s z8N{!wRl-_YkZB)a`ct3&*^h{=(lC7p`qxij+)m-!Svv}`*B5mdA>9O?+U{ZnTei>$ z8X3EnH24U}GFfSzEsof1Ex~PWHP0|cC{2bLlWmL!xogp&(;I}?MEDit5`fjKYKj<$ zlMy(^Xi3}U0}I^9iY6$GI7KokOi}TF0w@UjnX6(< zdQ4`t3wpw3YEIt->Dm;>psQ*Z^%4C@x{Gq? zK?nuAK#;(4+w5zoacfo6p67#9!K-PLKCK{q1tr4@Uj&GVCZwIb^wW?(gqlGV-Xr?Y zx6k$%%Ert+MFiAt>&hKi3LhXE(wD+ryRldUQopAlgGiZIiPo;AaBI31w5XGpg+HAY zj3ET%QEIoWwU@R-NbQ2vXd+oUJSzVHj!5^Z2@huCWiFu^l{Ba=DqUj@r3}TJ!+St@ zOo2*CHo<~W7ZNfl1|2zul1G*o71nhw_O1jyq_m*{h7IoGW|fzxw|>&7B^+LvxD>+; zi17)f8r9_P%Hk-24moujY806k%WNna6gc%1fSPj@fVmam(6aaKmeT4#I#vD_FmaJxTic7CM!^aQe4SMG zlmJ(FVCTxVkOb1Vy5JoFqje?$6>RFb$jk(xaK0SKoW(Y`wR9%v&J`e$T`ho!<&L-M znXgG#T#IMkoKmA)HxT>!*#s-w0$f#uEXqWcdEZHlG*#ZI->65DrHN9}abSC^zcE*V z4C=THRFeihul>WZ%LBkP#3~i!IXDD!M}j`k%}k%tXpoeGPv&Nv$*b(P2h&*u*H3J} z{r5Bq>RjDF>0Jv}K(fD;xc0^>;61;q06?X60JoV^9U8n2zdqfSMKya2R0tq%rD<3b z@}|Pj0Fhly#yy)z#51~BFB7pGZnV8JSgYoT@)neF3Ug5a>Y7Y+};D9c^4c4E?JpA>N>i}$>3s4h*O4~>fG3iehll^Z3tSetXnbNz7NfC}2w@@u8G7ST;X zGjX+=>h)hPZb)l`xeE!rd~1+vrClj@*#VQPRQLmYYeeR@6a<=zEhd2lK{$!7p4q^cv!)_e>c*XH zqj6V(DR>Nah!Nr^Y=|O=_Z#prAERvE-fO8V)34LH1pNhc_K6?sz1tst=lu)X zPtee_X%QRE08jz--jqov%*0mT;8C&KXlF~d-$ti#C6hWm8xR4dx7xJo$`a+Gqil#H zaBHY$>RZBbzLotb0IG}#f~v44lGZ$4hzTUpv_04{q1>uz!Db%i%~k&Z6ED>izWyXuQG%|g zz{y=6o|~xXFRP1X7UBSpZBA|yaq_Pi*VF~j=R(SM^}~e^9D*ylEI(0p?k<6H*$>+~ zLnk~CYo^{gXp*n_1r$o1Ga7K_=pPY*PKl(M{vZ_3QKn)LC^NMR~+O4w#9zSQC)zEFI`n6jH zhl3`I1itB@vYTOsWYx9qlsfgxkeTsUcm%M+DB(c!$s(1-q17i3Y{Brg1P0(?JGK2p zRp)bl=9C5#T&{(hMzw0puo4?vaq!nt?|FJ|p5`9o1j4N`-3*YdIaV8ryKz+6x-+@* zIa5|_z23|yKvwIy@%gwQmaeGxE*4bnhdO>eIGL+jdUdU3oAYXA#QFR*qP0N$huQg1 z64~?>bxITY!TBF*-wfca5=;UF12t^09biIoq=0+kKkFG4aRIc~Y@NdJ{*>%ZwO@Zo zlY|@&1$3vod|aTa_Yck9h4R1n)yHe6>8_XqG6;|u5in?h;s%sJqo44wGLAX<5r!3L z3u<6#;trB3-U$kJsq^-IYBpvW9=^f8klxQRR~VqaRAFwM=9Sy-3S&amoma0iH@#ur z=^!UI@kPbH^M@_mVQft2&XGz4oGrVBi8>x&GZ|OGr@nRPEpF-`eLW(r_=?<7{i@FK z`icZwztgjba-e)odPSxaSx$U7(3t7Ab>7BtMlW!IQz^@4sf6Ypk><^UM8jV_5Cm#_q zTib9*Kn&>0^31go+JQ2<&C;U6{0q`0N3K;OrU{%&O z*2{GINe{@@&7__vsRdYIshHc?h)Ld#`53320ZqV3`ffzlvVcoSEv5`<#b)d-{y6|Z z*wve|)_(9PM-Z^XRwxN1s0be(U{FG>Xc7IHJb_1%=|!agGa?TLaw+axv1?PbCAM-z zt3i+innh>2>SPpY)0B`KNbuI|q~(x+4Ru;NRs5U9R_vFN%lw%b#S2X zMklv$O0kbIPGM!d&SIZ*a}1?-%}gCmx%2X`!#w(}DKJ7?h%*@xKm`y#5j4g>jVU@U zvRw==w0tolMGItrfJ*8hHm2a|1}jb7Pj7s$i!1RcTDy5dAakHIY1Il&#K5aym2!tm z0Wd=;!vnQkA%8=fw!iO9b57VEQbb3{MIz#u&-)5o6+U7rVtr^2_onfG8Uy@5s+D=& zVf-RV!N!)R2U6()8r{%hT?8o`l>?Q{fVa<4VLTz0JYCCtj1rY}Xm(BsL*gG=D4~-l zQBVnH#xavX8zhoU5#9xrTYS(Yog?7~A5*y)_FYY2eI#bB>D6&i>IxnSMh9xUXxkUM zbYQZ>m1%=a84(97rG4sap-2wcTWDf^0{a?tus9*2FnJYV3rNr-VOivgVs=tMsh@Gf zP&-9@>NylZGTt;eK8Bg|c=A{csn9kb1ZIAQnE`zx02crj0BxEt2$p)AVZykBICusI zb4ala>w*-|aGGJH&XYQn$xwG0IIr@G`PWzXwr@V53!7#{Xe3g1kt`JW8CXV#4HyQA zz+`Pf)V|(E6bgdiE1hLPZwOLz07Vlq`9xI5@QMTcV2!4nmeCvyTv9Ps�nx?em&j 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 MyeRLvfAsJF+4e@trvLx| diff --git a/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.webp b/boards/st/stm32h757i_eval/doc/img/stm32h757i_eval.webp new file mode 100644 index 0000000000000000000000000000000000000000..246d4524e14c56f3405a5287530b6381f000b3c3 GIT binary patch literal 36758 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 literal 0 HcmV?d00001 diff --git a/boards/st/stm32h757i_eval/doc/index.rst b/boards/st/stm32h757i_eval/doc/index.rst index f310e8c49551..92be1687d4b9 100644 --- a/boards/st/stm32h757i_eval/doc/index.rst +++ b/boards/st/stm32h757i_eval/doc/index.rst @@ -48,7 +48,7 @@ More information about STM32H757XIH6 can be found here: Supported Features ================== -The current Zephyr stm32h757i_eval board configuration supports the following hardware features: +The Zephyr ``stm32h757i_eval`` board supports the following hardware features: +-----------+------------+-------------------------------------+ | Interface | Controller | Driver/Component | diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi b/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi index b517c6b371af..4fe5478dac44 100644 --- a/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi +++ b/boards/st/stm32h757i_eval/stm32h757i_eval.dtsi @@ -4,28 +4,30 @@ * SPDX-License-Identifier: Apache-2.0 */ -//#include "arduino_r3_connector.dtsi" -//#include "pmod_connector.dtsi" #include / { leds { compatible = "gpio-leds"; + green_led_1:led_1 { gpios = <&gpiok 3 GPIO_ACTIVE_LOW>; label = "User LD1"; status = "disabled"; }; + orange_led_2:led_2 { gpios = <&gpiok 4 GPIO_ACTIVE_LOW>; label = "User LD2"; status = "disabled"; }; + red_led_3:led_3 { gpios = <&gpiok 5 GPIO_ACTIVE_LOW>; label = "User LD3"; status = "disabled"; }; + blue_led_4:led_4 { gpios = <&gpiok 6 GPIO_ACTIVE_LOW>; label = "User LD4"; @@ -35,42 +37,49 @@ gpio_keys { compatible = "gpio-keys"; + wake_up: button_1 { label = "Wakeup"; gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>; status = "disabled"; zephyr,code = ; }; + tamper: button_2 { label = "Tamper"; gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>; status = "disabled"; zephyr,code = ; }; + joy_center: joystick_center { label = "joystick center"; gpios = <&gpiob 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; status = "disabled"; zephyr,code = ; }; + joy_down: joystick_down { label = "joystick down"; gpios = <&gpiob 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; status = "disabled"; zephyr,code = ; }; + joy_up: joystick_up { label = "joystick up"; gpios = <&gpiob 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; status = "disabled"; zephyr,code = ; }; + joy_left: joystick_left { label = "joystick left"; gpios = <&gpiob 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; status = "disabled"; zephyr,code = ; }; + joy_right: joystick_right { label = "joystick right"; gpios = <&gpiob 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts index fa6990388eed..05ee207c1b14 100644 --- a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m4.dts @@ -15,8 +15,8 @@ /* HW resources are split between CM7 and CM4 */ chosen { - /* zephyr,console = &usart1; */ - /* zephyr,shell-uart = &usart1; */ + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; zephyr,sram = &sram1; zephyr,flash = &flash1; }; @@ -25,12 +25,15 @@ green_led_1:led_1 { status = "okay"; }; + orange_led_2:led_2 { status = "okay"; }; + red_led_3:led_3 { status = "okay"; }; + blue_led_4:led_4 { status = "okay"; }; diff --git a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts index 7ed113c17404..eeea7f2d2e5d 100644 --- a/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts +++ b/boards/st/stm32h757i_eval/stm32h757i_eval_stm32h757xx_m7.dts @@ -44,12 +44,15 @@ green_led_1:led_1 { status = "okay"; }; + orange_led_2:led_2 { status = "okay"; }; + red_led_3:led_3 { status = "okay"; }; + blue_led_4:led_4 { status = "okay"; }; @@ -59,6 +62,7 @@ wake_up: button_1 { status = "okay"; }; + tamper: button_2 { status = "okay"; }; @@ -281,8 +285,6 @@ zephyr_udc0: &usbotg_hs { }; }; -//arduino_spi: &spi5 {}; - /* alias used by display shields with touch control */ qsh_030_i2c: &i2c4 { pinctrl-0 = <&i2c4_scl_pd12 &i2c4_sda_pd13>; diff --git a/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg index 81e3dcf5cfe8..75d441d18092 100644 --- a/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg +++ b/boards/st/stm32h757i_eval/support/openocd_stm32h757i_eval_m7.cfg @@ -1,21 +1,7 @@ -set WORKAREASIZE 0x8000 -#set CHIPNAME SOC_STM32H757XX_M7 -#set CHIPNAME stm32h7 -set BOARDNAME STM32H757I_EVAL +source [find interface/stlink.cfg] -#source [find interface/stlink.cfg] -#transport select hla_swd - -source [find interface/stlink-dap.cfg] -transport select dapdirect_swd - -set DUAL_CORE 1 - -#set DUAL_BANK 1 - -# ACCESS PORT NUMBER -set AP_NUM 1 +transport select hla_swd source [find target/stm32h7x.cfg] @@ -23,20 +9,20 @@ source [find target/stm32h7x.cfg] # even when core is in sleep mode reset_config srst_only srst_nogate connect_assert_srst -#$_CHIPNAME.cpu0 configure -event gdb-attach { -# echo "Debugger attaching: halting execution" -# gdb_breakpoint_override hard -#} +$_CHIPNAME.cpu0 configure -event gdb-attach { + echo "Debugger attaching: halting execution" + gdb_breakpoint_override hard +} -#$_CHIPNAME.cpu0 configure -event gdb-detach { -# echo "Debugger detaching: resuming execution" -# resume -#} +$_CHIPNAME.cpu0 configure -event gdb-detach { + echo "Debugger detaching: resuming execution" + resume +} # Due to the use of connect_assert_srst, running gdb requires # to reset halt just after openocd init. -#rename init old_init -#proc init {} { -# old_init -# reset halt -#} +rename init old_init +proc init {} { + old_init + reset halt +}