From 00a6fa1d7f3eceffda3b7aca9a575d94e93f2270 Mon Sep 17 00:00:00 2001 From: Jakub Wasilewski Date: Wed, 27 Nov 2024 12:48:34 +0100 Subject: [PATCH 1/2] boards: add support for the OSD32MP1-BRK Add support for the Octavo's OSD32MP1-BRK platform. The board uses Octavo's OSD32MP15x SiP which integrates STM32MP157F MCU and its SoC configuration. Signed-off-by: Jakub Wasilewski Signed-off-by: Filip Kokosinski --- boards/oct/index.rst | 10 + boards/oct/osd32mp1_brk/Kconfig.defconfig | 13 + boards/oct/osd32mp1_brk/Kconfig.osd32mp1_brk | 5 + boards/oct/osd32mp1_brk/board.cmake | 6 + boards/oct/osd32mp1_brk/board.yml | 6 + .../osd32mp1_brk/doc/img/osd32mp1_brk.webp | Bin 0 -> 70818 bytes boards/oct/osd32mp1_brk/doc/osd32mp1_brk.rst | 314 ++++++++++++++++++ boards/oct/osd32mp1_brk/osd32mp1_brk.dts | 91 +++++ boards/oct/osd32mp1_brk/osd32mp1_brk.yaml | 22 ++ .../oct/osd32mp1_brk/osd32mp1_brk_defconfig | 20 ++ boards/oct/osd32mp1_brk/support/openocd.cfg | 6 + dts/arm/oct/osd32mp15x.dtsi | 23 ++ soc/oct/osd32mp15x/Kconfig | 5 + soc/oct/osd32mp15x/Kconfig.soc | 19 ++ soc/oct/osd32mp15x/soc.yml | 2 + 15 files changed, 542 insertions(+) create mode 100644 boards/oct/index.rst create mode 100644 boards/oct/osd32mp1_brk/Kconfig.defconfig create mode 100644 boards/oct/osd32mp1_brk/Kconfig.osd32mp1_brk create mode 100644 boards/oct/osd32mp1_brk/board.cmake create mode 100644 boards/oct/osd32mp1_brk/board.yml create mode 100644 boards/oct/osd32mp1_brk/doc/img/osd32mp1_brk.webp create mode 100644 boards/oct/osd32mp1_brk/doc/osd32mp1_brk.rst create mode 100644 boards/oct/osd32mp1_brk/osd32mp1_brk.dts create mode 100644 boards/oct/osd32mp1_brk/osd32mp1_brk.yaml create mode 100644 boards/oct/osd32mp1_brk/osd32mp1_brk_defconfig create mode 100644 boards/oct/osd32mp1_brk/support/openocd.cfg create mode 100644 dts/arm/oct/osd32mp15x.dtsi create mode 100644 soc/oct/osd32mp15x/Kconfig create mode 100644 soc/oct/osd32mp15x/Kconfig.soc create mode 100644 soc/oct/osd32mp15x/soc.yml diff --git a/boards/oct/index.rst b/boards/oct/index.rst new file mode 100644 index 000000000000..926fcd4827f9 --- /dev/null +++ b/boards/oct/index.rst @@ -0,0 +1,10 @@ +.. _boards-octavo: + +Octavo +### + +.. toctree:: + :maxdepth: 1 + :glob: + + **/* diff --git a/boards/oct/osd32mp1_brk/Kconfig.defconfig b/boards/oct/osd32mp1_brk/Kconfig.defconfig new file mode 100644 index 000000000000..7ca8f045d0a4 --- /dev/null +++ b/boards/oct/osd32mp1_brk/Kconfig.defconfig @@ -0,0 +1,13 @@ +# Copyright (c) 2024 Antmicro +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_OSD32MP1_BRK + +config SPI_STM32_INTERRUPT + default y + depends on SPI + +config CLOCK_STM32_HSE_CLOCK + default 24000000 + +endif # BOARD_OSD32MP1_BRK diff --git a/boards/oct/osd32mp1_brk/Kconfig.osd32mp1_brk b/boards/oct/osd32mp1_brk/Kconfig.osd32mp1_brk new file mode 100644 index 000000000000..3aeb8d038ad3 --- /dev/null +++ b/boards/oct/osd32mp1_brk/Kconfig.osd32mp1_brk @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Antmicro +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_OSD32MP1_BRK + select SOC_OSD32MP15X diff --git a/boards/oct/osd32mp1_brk/board.cmake b/boards/oct/osd32mp1_brk/board.cmake new file mode 100644 index 000000000000..4ff51e763b6a --- /dev/null +++ b/boards/oct/osd32mp1_brk/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Antmicro +# SPDX-License-Identifier: Apache-2.0 + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) + +board_runner_args(openocd "--config=${BOARD_DIR}/support/openocd.cfg") diff --git a/boards/oct/osd32mp1_brk/board.yml b/boards/oct/osd32mp1_brk/board.yml new file mode 100644 index 000000000000..b553a86737ec --- /dev/null +++ b/boards/oct/osd32mp1_brk/board.yml @@ -0,0 +1,6 @@ +board: + name: osd32mp1_brk + full_name: OSD32MP1-BRK + vendor: oct + socs: + - name: osd32mp15x diff --git a/boards/oct/osd32mp1_brk/doc/img/osd32mp1_brk.webp b/boards/oct/osd32mp1_brk/doc/img/osd32mp1_brk.webp new file mode 100644 index 0000000000000000000000000000000000000000..3cbd534c79b3a96b0bd9c6cad7abecbc7fbf3264 GIT binary patch literal 70818 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ÒhT8r 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 /sys/class/remoteproc/remoteproc0/state + echo -n zephyr.elf > /sys/class/remoteproc/remoteproc0/firmware + echo start > /sys/class/remoteproc/remoteproc0/state + cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 + + The console output should display: + + .. code-block:: + + *** Booting Zephyr OS build v4.0.0 *** + Hello World! osd32mp1_brk/osd32mp15x + + +Refer to `OSD32MP1-BRK Getting Started`_ and `stm32mp157 boot Cortex-M4 firmware`_ wiki page for more +detailed instructions. + +Debugging +========= + +You can debug an application using OpenOCD and GDB. The solution proposed below +is based on attaching to preloaded firmware, which is available only for a Linux +environment. The firmware must first be loaded by the Cortex®-A7. The developer +then attaches the debugger to the running Zephyr using OpenOCD. + +The principle is to attach to the firmware already loaded by Linux. + +- Build the sample: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: osd32mp1_brk + :goals: build + +- Copy the firmware on the target filesystem, load it and start it (`stm32mp157 boot Cortex-M4 firmware`_). +- Attach to the target: + +.. code-block:: console + + west attach + +.. _OSD32MP1-BRK product page: + https://octavosystems.com/octavo_products/osd32mp1-brk/ + +.. _OSD32MP1-BRK documentation: + https://octavosystems.com/docs/osd32mp15x-datasheet/ + +.. _STM32MP157F on www.st.com: + https://www.st.com/en/microcontrollers-microprocessors/stm32mp157f.html + +.. _OSD32MP15x SiP documentation: + https://octavosystems.com/docs/osd32mp15x-datasheet/ + +.. _OSD32MP1 OpenSTLinux: + https://octavosystems.com/files/osd32mp1-brk-openstlinux-v3-0/ + +.. _OSD32MP1-BRK Getting Started: + https://octavosystems.com/app_notes/osd32mp1-brk-getting-started/ + +.. _stm32mp157 boot Cortex-M4 firmware: + https://wiki.st.com/stm32mpu/index.php/Linux_remoteproc_framework_overview#How_to_use_the_framework + +.. _OSD32MP1-BRK schematics: + https://octavosystems.com/docs/osd32mp1-brk-schematics/ + +.. _OSD32MP1-BRK default pin mapping: + https://octavosystems.com/octavosystems.com/wp-content/uploads/2020/05/Default-Pin-Mapping.pdf diff --git a/boards/oct/osd32mp1_brk/osd32mp1_brk.dts b/boards/oct/osd32mp1_brk/osd32mp1_brk.dts new file mode 100644 index 000000000000..0ba685ec3983 --- /dev/null +++ b/boards/oct/osd32mp1_brk/osd32mp1_brk.dts @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024 Antmicro + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include + +/ { + model = "Octavo Systems OSD32MP1-BRK"; + compatible = "oct,osd32mp1-brk"; + chosen { + /* + * By default, Zephyr console and shell are assigned to + * remoteproc. To enable console and shell over UART, uncomment + * following lines and set the correct config in + * osd32mp1_brk_defconfig "Serial Port" section in Zephyr + * board documentation. + * zephyr,console = &usart2; + * zephyr,shell-uart = &usart2; + */ + zephyr,flash = &retram; + zephyr,sram = &mcusram; + }; + + leds { + compatible = "gpio-leds"; + green_led_2: led_1 { + label = "LED2_GRN"; + gpios = <&gpioi 9 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + user_button: button { + label = "User 1"; + gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; + zephyr,code = ; + }; + }; + + aliases { + led0 = &green_led_2; + sw0 = &user_button; + }; +}; + +&spi4_miso_pe13 { + slew-rate = "very-high-speed"; +}; + +&usart2 { + pinctrl-0 = <&usart2_tx_pf5 &usart2_rx_pf4>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&uart7 { + pinctrl-0 = <&uart7_tx_pa15 &uart7_rx_pb3>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&i2c5 { + pinctrl-0 = <&i2c5_scl_pd1 &i2c5_sda_pd0>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = ; +}; + +&uart7_tx_pa15 { + bias-disable; +}; + +&uart7_rx_pb3 { + bias-disable; +}; + +&usart2_tx_pf5 { + bias-disable; +}; + +&usart2_rx_pf4 { + bias-disable; +}; diff --git a/boards/oct/osd32mp1_brk/osd32mp1_brk.yaml b/boards/oct/osd32mp1_brk/osd32mp1_brk.yaml new file mode 100644 index 000000000000..b9d5e0ab7e1f --- /dev/null +++ b/boards/oct/osd32mp1_brk/osd32mp1_brk.yaml @@ -0,0 +1,22 @@ +identifier: osd32mp1_brk +name: OSD32MP1-BRK +type: mcu +arch: arm +toolchain: + - zephyr +supported: + - gpio + - shell +testing: + ignore_tags: + - cmsis_rtos_v2 + - net + - mpu + - crypto + - aes + - cmm + - LED + - nfc +ram: 256 +flash: 64 +vendor: oct diff --git a/boards/oct/osd32mp1_brk/osd32mp1_brk_defconfig b/boards/oct/osd32mp1_brk/osd32mp1_brk_defconfig new file mode 100644 index 000000000000..755f96c19483 --- /dev/null +++ b/boards/oct/osd32mp1_brk/osd32mp1_brk_defconfig @@ -0,0 +1,20 @@ +# 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 +CONFIG_UART_INTERRUPT_DRIVEN=y + +# Console (remote proc console by default) +CONFIG_CONSOLE=y +CONFIG_RAM_CONSOLE=y +CONFIG_RAM_CONSOLE_BUFFER_SIZE=1024 + +# UART console (overrides remote proc console) +CONFIG_UART_CONSOLE=n diff --git a/boards/oct/osd32mp1_brk/support/openocd.cfg b/boards/oct/osd32mp1_brk/support/openocd.cfg new file mode 100644 index 000000000000..c9f1013c691f --- /dev/null +++ b/boards/oct/osd32mp1_brk/support/openocd.cfg @@ -0,0 +1,6 @@ +source [find board/stm32mp15x_dk2.cfg] + +# By default the port 3333 is assigned for the Cortex-A debug. Disable them +stm32mp15x.cpu0 configure -gdb-port disabled +stm32mp15x.cpu1 configure -gdb-port disabled +targets stm32mp15x.cm4 diff --git a/dts/arm/oct/osd32mp15x.dtsi b/dts/arm/oct/osd32mp15x.dtsi new file mode 100644 index 000000000000..d69ca3b0aa41 --- /dev/null +++ b/dts/arm/oct/osd32mp15x.dtsi @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2024 Antmicro + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +&mailbox { + status = "okay"; +}; + +&rcc { + clock-frequency = ; +}; + +&spi4 { + pinctrl-0 = <&spi4_nss_pe11 &spi4_sck_pe12 + &spi4_miso_pe13 &spi4_mosi_pe14>; + pinctrl-names = "default"; + status = "okay"; +}; diff --git a/soc/oct/osd32mp15x/Kconfig b/soc/oct/osd32mp15x/Kconfig new file mode 100644 index 000000000000..3cf3468fdd28 --- /dev/null +++ b/soc/oct/osd32mp15x/Kconfig @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Antmicro +# SPDX-License-Identifier: Apache-2.0 + +config SOC_OSD32MP15X + select SOC_STM32MP15_M4 diff --git a/soc/oct/osd32mp15x/Kconfig.soc b/soc/oct/osd32mp15x/Kconfig.soc new file mode 100644 index 000000000000..e62fc487b41c --- /dev/null +++ b/soc/oct/osd32mp15x/Kconfig.soc @@ -0,0 +1,19 @@ +# Copyright (c) 2024 Antmicro +# SPDX-License-Identifier: Apache-2.0 + +# The OSD32MP15X is technically a SiP (System-in-Package) that consists of +# the STM32MP15 MCU and additional components like EEPROM. So for +# OSD32MP1-BRK platform the STM32MP15_M4 SoC is to be indicated as +# the build target, but since the OSD32MP15x SiP is what a user can actually +# see on a board, using only STM32MP15_M4 in the Zephyr build +# infrastructure might be confusing. That's why in the top level of SoC +# definitions (for user-configurable options in Kconfig, for example) +# the OSD32MP15X term is used and STM32MP15_M4 underneath. + +config SOC_OSD32MP15X + bool + help + Octavo Systems OSD32MP15X SiP + +config SOC + default "osd32mp15x" if SOC_OSD32MP15X diff --git a/soc/oct/osd32mp15x/soc.yml b/soc/oct/osd32mp15x/soc.yml new file mode 100644 index 000000000000..a254e5065685 --- /dev/null +++ b/soc/oct/osd32mp15x/soc.yml @@ -0,0 +1,2 @@ +socs: + - name: osd32mp15x From 7fbfe904c17967cc2da71413a6c784ff1ec0dfa1 Mon Sep 17 00:00:00 2001 From: Jakub Wasilewski Date: Thu, 28 Nov 2024 17:34:44 +0100 Subject: [PATCH 2/2] MAINTAINERS: add the `Octavo Systems Platforms` area This commit adds the `Octavo Systems Platforms` area of maintenance. Signed-off-by: Jakub Wasilewski Signed-off-by: Filip Kokosinski --- MAINTAINERS.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/MAINTAINERS.yml b/MAINTAINERS.yml index 758e976df352..1cf339d5deec 100644 --- a/MAINTAINERS.yml +++ b/MAINTAINERS.yml @@ -3919,6 +3919,19 @@ nRF Platforms: labels: - "platform: nRF" +Octavo Systems Platforms: + status: maintained + maintainers: + - fkokosinski + - tgorochowik + collaborators: + - kgugala + files: + - boards/oct/ + - soc/oct/ + labels: + - "platform: Octavo Systems" + OpenTitan Platforms: status: maintained maintainers: