From 3d39644a2c81ca81c045d760fab26837e7b3c70c Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Fri, 26 Jul 2024 14:59:57 -0300 Subject: [PATCH] boards: witte_technology: linum: add initial support To the Linum board from Witte Technology based on STM32H753xx. Signed-off-by: Felipe Neves --- boards/witte/index.rst | 10 + boards/witte/linum/Kconfig.defconfig | 15 + boards/witte/linum/Kconfig.linum | 5 + boards/witte/linum/board.cmake | 9 + boards/witte/linum/board.yml | 5 + .../linum/doc/img/linum-stm32h753bi-top.jpg | Bin 0 -> 15110 bytes boards/witte/linum/doc/index.rst | 406 ++++++++++++++++++ boards/witte/linum/linum.dts | 392 +++++++++++++++++ boards/witte/linum/linum.yaml | 21 + boards/witte/linum/linum_defconfig | 23 + boards/witte/linum/support/openocd.cfg | 21 + dts/bindings/vendor-prefixes.txt | 1 + 12 files changed, 908 insertions(+) create mode 100644 boards/witte/index.rst create mode 100644 boards/witte/linum/Kconfig.defconfig create mode 100644 boards/witte/linum/Kconfig.linum create mode 100644 boards/witte/linum/board.cmake create mode 100644 boards/witte/linum/board.yml create mode 100644 boards/witte/linum/doc/img/linum-stm32h753bi-top.jpg create mode 100644 boards/witte/linum/doc/index.rst create mode 100644 boards/witte/linum/linum.dts create mode 100644 boards/witte/linum/linum.yaml create mode 100644 boards/witte/linum/linum_defconfig create mode 100644 boards/witte/linum/support/openocd.cfg diff --git a/boards/witte/index.rst b/boards/witte/index.rst new file mode 100644 index 00000000000..c7c0d910782 --- /dev/null +++ b/boards/witte/index.rst @@ -0,0 +1,10 @@ +.. _boards-witte: + +Witte +##### + +.. toctree:: + :maxdepth: 1 + :glob: + + **/* diff --git a/boards/witte/linum/Kconfig.defconfig b/boards/witte/linum/Kconfig.defconfig new file mode 100644 index 00000000000..af3bbba6dd4 --- /dev/null +++ b/boards/witte/linum/Kconfig.defconfig @@ -0,0 +1,15 @@ +# STM32H753ZI Linum board configuration + +# Copyright (c) 2024 Felipe Neves +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_LINUM + +if NETWORKING + +config NET_L2_ETHERNET + default y + +endif # NETWORKING + +endif # BOARD_LINUM diff --git a/boards/witte/linum/Kconfig.linum b/boards/witte/linum/Kconfig.linum new file mode 100644 index 00000000000..447e3e71469 --- /dev/null +++ b/boards/witte/linum/Kconfig.linum @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Felipe Neves +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_LINUM + select SOC_STM32H753XX diff --git a/boards/witte/linum/board.cmake b/boards/witte/linum/board.cmake new file mode 100644 index 00000000000..8b78b0963a6 --- /dev/null +++ b/boards/witte/linum/board.cmake @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=STM32H753BI" "--speed=4000") +board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw") +board_runner_args(openocd --target-handle=_CHIPNAME.cpu0) + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) +include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake) diff --git a/boards/witte/linum/board.yml b/boards/witte/linum/board.yml new file mode 100644 index 00000000000..e9ae2c0307d --- /dev/null +++ b/boards/witte/linum/board.yml @@ -0,0 +1,5 @@ +board: + name: linum + vendor: witte + socs: + - name: stm32h753xx diff --git a/boards/witte/linum/doc/img/linum-stm32h753bi-top.jpg b/boards/witte/linum/doc/img/linum-stm32h753bi-top.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df465c765136bd1d95dee811fad630ad3ef281f5 GIT binary patch literal 15110 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 literal 0 HcmV?d00001 diff --git a/boards/witte/linum/doc/index.rst b/boards/witte/linum/doc/index.rst new file mode 100644 index 00000000000..86fbbeafbdd --- /dev/null +++ b/boards/witte/linum/doc/index.rst @@ -0,0 +1,406 @@ +.. _linum: + +Witte Technology Linum Board +############################ + +Overview +******** +Linum is a development board released by Witte Tenology in 2023, and it was developed around the +STM32H753BI microcontroller. The board has 2 expansion connectors used by the LCD display with +touchscreen and another for access to other peripherals of microcontroller. Also it brings plenty +of communications interfaces like UART with RS232 and RS485 capabillities, CAN bus compatible to +FD standard, and networking over Ethernet. + +.. image:: img/linum-stm32h753bi-top.jpg + :align: center + :alt: Linum development board + +Hardware +******** + +The board features: + - 8 to 52V power supply + - SWD Pins for use as STLink (Pin header) and TC2030-IDC 6-Pin Tag-Connect Plug-of-Nails™ Connector + - Crystal for HS 25MHz + - Crystal for RTC 32.768KHz + - 1 UART serial for debug + - 1 Led RGB + - 1 Buzzer without internal oscillator + - 1 Mono audio up to 3W + - 1 Ethernet 10/100 + - 1 MicroSD connector supporting 1 or 4-bit bus + - 1 USB 2.0 Host/Device + - 1 EEPROM memory with 512K bits + - 1 External SRAM memory with 8MB + - 1 NOR memory with 16MB + - 2 On-board RS232 Transceiver with RTS/CTS + - 2 On-board RS485 Transceiver + - 2 On-board CAN-FD Transceiver + +Expansion connector 1 features: + - 1 Display RBG 888 + - 1 Capacitive Touchscreen sensor + +Expansion connector 2 features. + - 1 SPI + - 1 I2C + - 1 One Wire + - 2 DACs + - 6 PWM Channels + - 10 ADCs + +Supported Features +================== + +The Zephyr Linum board configuration supports the following hardware +features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| RTC | on-chip | counter | ++-----------+------------+-------------------------------------+ +| I2C | on-chip | i2c | ++-----------+------------+-------------------------------------+ +| PWM | on-chip | pwm | ++-----------+------------+-------------------------------------+ +| ADC | on-chip | adc | ++-----------+------------+-------------------------------------+ +| RNG | on-chip | True Random number generator | ++-----------+------------+-------------------------------------+ +| ETHERNET | on-chip | ethernet | ++-----------+------------+-------------------------------------+ +| SPI | on-chip | spi | ++-----------+------------+-------------------------------------+ +| USB | on-chip | usb_device | ++-----------+------------+-------------------------------------+ +| CAN/CANFD | on-chip | canbus | ++-----------+------------+-------------------------------------+ +| LTDC | on-chip | LCD Interface | ++-----------+------------+-------------------------------------+ +| FMC | on-chip | memc (SDRAM) | ++-----------+------------+-------------------------------------+ +| SDMMC | on-chip | disk access | ++-----------+------------+-------------------------------------+ + +Other hardware features are not yet supported on this Zephyr port. + +The default configuration can be found in the defconfig file: +:zephyr_file:`boards/witte_technology/linum/linum_defconfig` + + +Default Zephyr Peripheral Mapping: +---------------------------------- + + +BOARD-LEDs +---------- + +The LINUM-STM32H753BI has 3 software controllable LEDs. + + ======= ===== + LED RGB PINS + ======= ===== + LED_R PG2 + LED_G PG3 + LED_B PB2 + ======= ===== + +UART/USART +---------- + +The LINUM-STM32H753BI used the USART1 for serial console. + +USART1 +------ + + ====== ===== + USART1 PINS + ====== ===== + TX PB14 + RX PB15 + ====== ===== + +The LINUM-STM32H753BI board has two on-board RS-232 transceiver connected to USART2 and USART3. + + ====== ===== + USART2 PINS + ====== ===== + TXD PD5 + RXD PD6 + CTS PD3 + RTS PD4 + ====== ===== + + ====== ===== + USART3 PINS + ====== ===== + TXD PB10 + RXD PB11 + CTS PD11 + RTS PD12 + ====== ===== + +The LINUM-STM32H753BI board has two on-board RS-485 transceiver connected to USART4 and USART6. + + ====== ===== + UART4 PINS + ====== ===== + TXD PB9 + RXD PB8 + DE PA15 + ====== ===== + + ====== ===== + USART6 PINS + ====== ===== + TXD PC6 + RXD PC7 + DE PG12 + ====== ===== + +SDMMC +----- + +The LINUM-STM32H753BI has one SDCard slot connected as below: + + ========== ===== + SDMMC1 PINS + ========== ===== + SDMMC_D0 PC8 + SDMMC_D1 PC9 + SDMMC_D2 PC10 + SDMMC_D3 PC11 + SDMMC_DK PC12 + ========== ===== + + =============== ===== + GPIO PINS + =============== ===== + SDCARD_DETECTED PG7 + SDCARD_PWR_EN PD7 + =============== ===== + +ETHERNET +-------- + +The LINUM-STM32H753BI has a ethernet connection using the transceiver KSZ8081RNACA. + + ============ ===== + ETH PINS + ============ ===== + ETH_REF_CLK PA1 + ETH_MDIO PA2 + ETH_CRS_DV PA7 + ETH_MDC PC1 + ETH_RXD0 PC4 + ETH_RXD1 PC5 + ETH_TX_EN PG11 + ETH_TXD0 PG13 + ETH_TXD1 PG14 + ETH_CLK PA8 + ETH_RESET PI4 + ============ ===== + +CAN-FD +------ + +The LINUM-STM32H753BI board has two on-board CAN-FD transceiver connected to FDCAN1 and FDCAN2. + + ====== ===== + FDCAN1 PINS + ====== ===== + TXD PH13 + RXD PH14 + STD PI2 + ====== ===== + + ====== ===== + FDCAN2 PINS + ====== ===== + TXD PB13 + RXD PB12 + STD PE3 + ====== ===== + +USB +--- + +The LINUM-STM32H753BI has one usb port. + + ========= ===== + USB PINS + ========= ===== + USB_VBUS PA9 + USB_N PA11 + USB_P PA12 + USB_EN PI12 + USB_FLT PI13 + ========= ===== + +I2C3 +---- +The LINUM-STM32H753BI connects the EEPROM memory and the touchscreen sensor to I2C3. + + ====== ===== + I2C3 PINS + ====== ===== + SCL PH7 + SDA PH8 + ====== ===== + +External SDRAM +-------------- +The LINUM-STM32H753BI has a external SDRAM with 8Mbytes connected to FMC peripheral. + + =========== ===== + FMC PINS + =========== ===== + 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_BA0 PG4 + FMC_BA1 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_NBL0 PE0 + FMC_NBL1 PE1 + FMC_SDCKE0 PC3 + FMC_SDCLK PG8 + FMC_SDNCAS PG15 + FMC_SDNEO PC2 + FMC_SDNRAS PF11 + FMC_SDNWE PC0 + =========== ===== + +LCD +--- +The LINUM-STM32H753BI use the LTDC to support one LCD with RGB connection. + + ============= ===== + LTDC PINS + ============= ===== + LTDC_B0 PJ12 + LTDC_B1 PJ13 + LTDC_B2 PJ14 + LTDC_B3 PJ15 + LTDC_B4 PK3 + LTDC_B5 PK4 + LTDC_B6 PK5 + LTDC_B7 PK6 + LTDC_CLK PI14 + LTDC_DE PK7 + LTDC_G0 PJ7 + LTDC_G1 PJ8 + LTDC_G2 PJ9 + LTDC_G3 PJ10 + LTDC_G4 PJ11 + LTDC_G5 PK0 + LTDC_G6 PK1 + LTDC_G7 PK2 + LTDC_HSYNC PI10 + LTDC_R0 PI15 + LTDC_R1 PJ0 + LTDC_R2 PJ1 + LTDC_R3 PJ2 + LTDC_R4 PJ3 + LTDC_R5 PJ4 + LTDC_R6 PJ5 + LTDC_R7 PJ6 + LTDC_VSYNC PI9 + PWM_BACKLIGHT PH6 + ============= ===== + +System Clock +------------ + +Linum H753ZI System Clock could be driven by an internal or external +oscillator, as well as the main PLL clock. By default, the System clock is +driven by the PLL clock at 480MHz, driven by an 25MHz high-speed external clock. + + +Programming and Debugging +************************* + +Applications for the ``linum`` board configuration can be built and +flashed in the usual way (see :ref:`build_an_application` and +:ref:`application_run` for more details). + +.. note:: + + For debugging or programming Linum you will need to use an external debug + debug or flash tool and connect it to the SWD Connnector. JLink or ST-Link + probes are examples of out of the box compatible tools. + +Flashing +======== + +Flashing an application to the Linum board +------------------------------------------- + +Here is an example for the :ref:`hello_world` application. + +Run a serial host program to connect with your Nucleo board. + +.. code-block:: console + + $ minicom -b 115200 -D /dev/ttyACM0 + +Build and flash the application: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: linum + :goals: build flash + +You should see the following message on the console: + +.. code-block:: console + + $ Hello World! linum + +Debugging +========= + +You can debug an application in the usual way. Here is an example for the +:ref:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: linum + :maybe-skip-config: + :goals: debug + +.. _Witte Linum website: + https://wittetech.com/ diff --git a/boards/witte/linum/linum.dts b/boards/witte/linum/linum.dts new file mode 100644 index 00000000000..d4846f3e1c7 --- /dev/null +++ b/boards/witte/linum/linum.dts @@ -0,0 +1,392 @@ +/* + * Copyright (c) 2024 Felipe Neves + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include + +/ { + model = "Witte Technology STM32H753ZI Linum board"; + compatible = "witte,linum"; + + chosen { + zephyr,console = &usart1; + zephyr,shell-uart = &usart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,dtcm = &dtcm; + zephyr,code-partition = &slot0_partition; + zephyr,canbus = &fdcan1; + }; + + sdram1: sdram@c0000000 { + compatible = "zephyr,memory-region", "mmio-sram"; + device_type = "memory"; + reg = <0xc0000000 DT_SIZE_M(8)>; + zephyr,memory-region = "SDRAM1"; + zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM) )>; + }; + + leds: leds { + compatible = "gpio-leds"; + green_led: led_0 { + gpios = <&gpiog 2 GPIO_ACTIVE_LOW>; + label = "User LD1"; + }; + red_led: led_1 { + gpios = <&gpiob 2 GPIO_ACTIVE_LOW>; + label = "User LD2"; + }; + blue_led: led_2 { + gpios = <&gpiog 3 GPIO_ACTIVE_LOW>; + label = "User LD3"; + }; + + }; + + aliases { + led0 = &green_led; + led1 = &blue_led; + }; +}; + +&gpiod { + status = "okay"; + + /* power the SD card */ + mcu-sel-gpios { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&gpioi { + status = "okay"; + /* power the ETH PHY , and FDCAN1 XVCR*/ + mcu-sel-gpios { + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>, + <4 GPIO_ACTIVE_HIGH>; + + output-high; + }; +}; + +&gpioe { + status = "okay"; + + /* power FDCAN2 XVCR*/ + mcu-sel-gpios { + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>, + <4 GPIO_ACTIVE_HIGH>; + + output-high; + }; +}; + +&clk_lsi { + status = "okay"; +}; + +&clk_hsi48 { + status = "okay"; +}; + +&clk_hse { + /delete-property/ hse-bypass; + clock-frequency = ; + status = "okay"; +}; + +&pll { + div-m = <5>; + mul-n = <192>; + div-p = <2>; + div-q = <4>; + div-r = <4>; + clocks = <&clk_hse>; + status = "okay"; +}; + +&pll2 { + div-m = <2>; + mul-n = <48>; + div-p = <8>; + div-q = <40>; + div-r = <3>; + clocks = <&clk_hse>; + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + 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>; + status = "okay"; +}; + +&usart2 { + pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart3 { + pinctrl-0 = <&usart3_tx_pb10 &usart3_rx_pb11>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&uart4 { + pinctrl-0 = <&uart4_tx_pb9 &uart4_rx_pb8>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart6 { + pinctrl-0 = <&usart6_tx_pc6 &usart6_rx_pc7>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +zephyr_udc0: &usbotg_fs { + pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>; + pinctrl-names = "default"; + status = "okay"; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00010000>, + <&rcc STM32_SRC_LSI RTC_SEL(2)>; + status = "okay"; +}; + +&i2c3 { + pinctrl-0 = <&i2c3_scl_ph7 &i2c3_sda_ph8>; + pinctrl-names = "default"; + status = "okay"; + clock-frequency = ; +}; + +&timers12 { + st,prescaler = <10000>; + status = "okay"; + + pwm12: pwm { + status = "okay"; + pinctrl-0 = <&tim12_ch1_pb14>; + pinctrl-names = "default"; + }; +}; + +&adc1 { + pinctrl-0 = <&adc1_inp15_pa3>; + pinctrl-names = "default"; + st,adc-clock-source = ; + st,adc-prescaler = <4>; + status = "okay"; +}; + +&rng { + status = "okay"; +}; + +&fdcan1 { + clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000100>, + <&rcc STM32_SRC_PLL2_Q FDCAN_SEL(2)>; + pinctrl-0 = <&fdcan1_tx_ph13 &fdcan1_rx_ph14>; + pinctrl-names = "default"; + status = "okay"; +}; + +&fdcan2 { + clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000100>, + <&rcc STM32_SRC_PLL2_Q FDCAN_SEL(2)>; + pinctrl-0 = <&fdcan2_rx_pb12 &fdcan2_tx_pb13>; + pinctrl-names = "default"; + status = "okay"; +}; + +&mac { + status = "okay"; + pinctrl-0 = <ð_rxd0_pc4 + ð_rxd1_pc5 + ð_ref_clk_pa1 + ð_crs_dv_pa7 + ð_tx_en_pg11 + ð_txd0_pg13 + ð_txd1_pg14>; + pinctrl-names = "default"; +}; + +&mdio { + status = "okay"; + pinctrl-0 = <ð_mdio_pa2 ð_mdc_pc1>; + pinctrl-names = "default"; + + ethernet-phy@0 { + compatible = "microchip,ksz8081"; + reg = <0x00>; + status = "okay"; + microchip,interface-type = "rmii-25MHz"; + }; +}; + +&spi1 { + status = "okay"; + pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pb5>; + pinctrl-names = "default"; + cs-gpios = <&gpiod 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; +}; + +&fmc { + pinctrl-0 = <&fmc_nbl0_pe0 + &fmc_nbl1_pe1 &fmc_sdclk_pg8 &fmc_sdnwe_pc0 &fmc_sdcke0_pc3_c + &fmc_sdne0_pc2_c &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_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>; + pinctrl-names = "default"; + status = "okay"; + + sdram { + status = "okay"; + power-up-delay = <100>; + num-auto-refresh = <8>; + mode-register = <0x220>; + refresh-rate = <0x603>; + bank@1 { + reg = <1>; + st,sdram-control = ; + st,sdram-timing = <2 7 4 7 2 2 2>; + }; + }; +}; + +<dc { + pinctrl-0 = <<dc_r0_pi15 <dc_r1_pj0 <dc_r2_pj1 <dc_r3_pj2 + <dc_r4_pj3 <dc_r5_pj4 <dc_r6_pj5 <dc_r7_pj6 + <dc_g0_pj7 <dc_g1_pj8 <dc_g2_pj9 <dc_g3_pj10 + <dc_g4_pj11 <dc_g5_pk0 <dc_g6_pk1 <dc_g7_pk2 + <dc_b0_pj12 <dc_b1_pj13 <dc_b2_pj14 <dc_b3_pj15 + <dc_b4_pk3 <dc_b5_pk4 <dc_b6_pk5 <dc_b7_pk6 + <dc_de_pk7 <dc_clk_pi14 <dc_hsync_pi10 <dc_vsync_pi9>; + pinctrl-names = "default"; + + disp-on-gpios = <&gpiod 7 GPIO_ACTIVE_HIGH>; + + ext-sdram = <&sdram1>; + status = "okay"; + + clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00000008>, + <&rcc STM32_SRC_PLL3_R NO_SEL>; + + width = <480>; + height = <272>; + pixel-format = ; + display-timings { + compatible = "zephyr,panel-timing"; + de-active = <1>; + pixelclk-active = <0>; + hsync-active = <0>; + vsync-active = <0>; + hsync-len = <1>; + vsync-len = <10>; + hback-porch = <43>; + vback-porch = <12>; + hfront-porch = <8>; + vfront-porch = <4>; + }; + def-back-color-red = <0xFF>; + def-back-color-green = <0xFF>; + def-back-color-blue = <0xFF>; +}; + +&sdmmc1 { + pinctrl-0 = <&sdmmc1_d0_pc8 + &sdmmc1_d1_pc9 + &sdmmc1_d2_pc10 + &sdmmc1_d3_pc11 + &sdmmc1_ck_pc12 + &sdmmc1_cmd_pd2>; + pinctrl-names = "default"; + cd-gpios = <&gpiog 7 GPIO_ACTIVE_LOW>; + status = "okay"; + + disk { + status = "okay"; + }; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* 128KB for bootloader */ + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 DT_SIZE_K(128)>; + read-only; + }; + + /* storage: 128KB for settings */ + storage_partition: partition@20000 { + label = "storage"; + reg = <0x00020000 DT_SIZE_K(128)>; + }; + + /* application image slot: 256KB */ + slot0_partition: partition@40000 { + label = "image-0"; + reg = <0x00040000 DT_SIZE_K(256)>; + }; + + /* backup slot: 256KB */ + slot1_partition: partition@80000 { + label = "image-1"; + reg = <0x00080000 DT_SIZE_K(256)>; + }; + + /* swap slot: 128KB */ + scratch_partition: partition@c0000 { + label = "image-scratch"; + reg = <0x000c0000 DT_SIZE_K(128)>; + }; + + }; +}; diff --git a/boards/witte/linum/linum.yaml b/boards/witte/linum/linum.yaml new file mode 100644 index 00000000000..3242d570583 --- /dev/null +++ b/boards/witte/linum/linum.yaml @@ -0,0 +1,21 @@ +identifier: linum +name: Linum +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 512 +flash: 2048 +supported: + - uart + - gpio + - counter + - i2c + - pwm + - netif:eth + - spi + - usb_device + - can +vendor: witte diff --git a/boards/witte/linum/linum_defconfig b/boards/witte/linum/linum_defconfig new file mode 100644 index 00000000000..8dcaab60f61 --- /dev/null +++ b/boards/witte/linum/linum_defconfig @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable HW stack protection +CONFIG_HW_STACK_PROTECTION=y + +# Enable UART +CONFIG_SERIAL=y + +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y + +# Enable clocks +CONFIG_CLOCK_CONTROL=y + +# enable pin controller +CONFIG_PINCTRL=y diff --git a/boards/witte/linum/support/openocd.cfg b/boards/witte/linum/support/openocd.cfg new file mode 100644 index 00000000000..89d4f7ab594 --- /dev/null +++ b/boards/witte/linum/support/openocd.cfg @@ -0,0 +1,21 @@ +source [find board/st_nucleo_h743zi.cfg] + +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 +} diff --git a/dts/bindings/vendor-prefixes.txt b/dts/bindings/vendor-prefixes.txt index 27edef9862d..b243c8e6116 100644 --- a/dts/bindings/vendor-prefixes.txt +++ b/dts/bindings/vendor-prefixes.txt @@ -732,6 +732,7 @@ winbond Winbond Electronics corp. winsen Zhengzhou Winsen Electronics Technology Co., Ltd. winstar Winstar Display Corp. wits Shenzhen Merrii Technology Co., Ltd. (WITS) +witte Witte Technology wiznet WIZnet Co., Ltd. wlf Wolfson Microelectronics wm Wondermedia Technologies, Inc.