From 426c586868ebab55f5d85d9140464716144d7488 Mon Sep 17 00:00:00 2001 From: Yasin Ustuner Date: Mon, 16 Dec 2024 12:40:18 +0300 Subject: [PATCH] boards: adi: Add MAX78000FTHR board This commit adds MAX78000FTHR board. Signed-off-by: Yasin Ustuner --- boards/adi/max78000fthr/Kconfig.max78000fthr | 7 + boards/adi/max78000fthr/board.cmake | 7 + boards/adi/max78000fthr/board.yml | 9 + .../doc/img/max78000fthr_img1.webp | Bin 0 -> 57276 bytes boards/adi/max78000fthr/doc/index.rst | 210 ++++++++++++++++++ .../max78000fthr/max78000fthr_max78000_m4.dts | 130 +++++++++++ .../max78000fthr_max78000_m4.yaml | 24 ++ .../max78000fthr_max78000_m4_defconfig | 16 ++ 8 files changed, 403 insertions(+) create mode 100644 boards/adi/max78000fthr/Kconfig.max78000fthr create mode 100644 boards/adi/max78000fthr/board.cmake create mode 100644 boards/adi/max78000fthr/board.yml create mode 100644 boards/adi/max78000fthr/doc/img/max78000fthr_img1.webp create mode 100644 boards/adi/max78000fthr/doc/index.rst create mode 100644 boards/adi/max78000fthr/max78000fthr_max78000_m4.dts create mode 100644 boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml create mode 100644 boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig diff --git a/boards/adi/max78000fthr/Kconfig.max78000fthr b/boards/adi/max78000fthr/Kconfig.max78000fthr new file mode 100644 index 00000000000..07efd3aa4be --- /dev/null +++ b/boards/adi/max78000fthr/Kconfig.max78000fthr @@ -0,0 +1,7 @@ +# MAX78000FTHR boards configuration + +# Copyright (c) 2025 Analog Devices, Inc. +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MAX78000FTHR + select SOC_MAX78000_M4 if BOARD_MAX78000FTHR_MAX78000_M4 diff --git a/boards/adi/max78000fthr/board.cmake b/boards/adi/max78000fthr/board.cmake new file mode 100644 index 00000000000..9ec2c058a33 --- /dev/null +++ b/boards/adi/max78000fthr/board.cmake @@ -0,0 +1,7 @@ +# Copyright (c) 2025 Analog Devices, Inc. +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(openocd --cmd-pre-init "source [find interface/cmsis-dap.cfg]") +board_runner_args(openocd --cmd-pre-init "source [find target/max78000.cfg]") + +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) diff --git a/boards/adi/max78000fthr/board.yml b/boards/adi/max78000fthr/board.yml new file mode 100644 index 00000000000..365e84d1ad8 --- /dev/null +++ b/boards/adi/max78000fthr/board.yml @@ -0,0 +1,9 @@ +# Copyright (c) 2025 Analog Devices, Inc. +# SPDX-License-Identifier: Apache-2.0 + +board: + name: max78000fthr + full_name: MAX78000FTHR + vendor: adi + socs: + - name: max78000 diff --git a/boards/adi/max78000fthr/doc/img/max78000fthr_img1.webp b/boards/adi/max78000fthr/doc/img/max78000fthr_img1.webp new file mode 100644 index 0000000000000000000000000000000000000000..57f08575845a3bd35b9763c3ba274508c4aeb387 GIT binary patch literal 57276 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 M000000000004oHLX#fBK literal 0 HcmV?d00001 diff --git a/boards/adi/max78000fthr/doc/index.rst b/boards/adi/max78000fthr/doc/index.rst new file mode 100644 index 00000000000..8c1ff784761 --- /dev/null +++ b/boards/adi/max78000fthr/doc/index.rst @@ -0,0 +1,210 @@ +.. zephyr:board:: max78000fthr + +Overview +******** +The MAX78000FTHR is a rapid development platform to help engineers quickly implement ultra low-power, artificial +intelligence (AI) solutions using the MAX78000 Arm® Cortex®-M4F processor with an integrated Convolutional Neural Network +accelerator. The board also includes the MAX20303 PMIC for battery and power management. The form factor is 0.9in x 2.6in +dual-row header footprint that is compatible with Adafruit Feather Wing peripheral expansion boards. The board includes a +variety of peripherals, such as a CMOS VGA image sensor, digital microphone, low-power stereo audio CODEC, 1MB QSPI +SRAM, micro SD card connector, RGB indicator LED, and pushbutton. The MAX78000FTHR provides a poweroptimized flexible +platform for quick proof-of-concepts and early software development to enhance time to market. + +The Zephyr port is running on the MAX78000 MCU. + +.. image:: img/max78000fthr_img1.webp + :align: center + :alt: MAX78000 FTHR + +Hardware +******** + +- MAX78000 MCU: + + - Dual-Core, Low-Power Microcontroller + + - Arm Cortex-M4 Processor with FPU up to 100MHz + - 512KB Flash and 128KB SRAM + - Optimized Performance with 16KB Instruction Cache + - Optional Error Correction Code (ECC-SEC-DED) for SRAM + - 32-Bit RISC-V Coprocessor up to 60MHz + - Up to 52 General-Purpose I/O Pins + - 12-Bit Parallel Camera Interface + - One I2S Master/Slave for Digital Audio Interface + + - Neural Network Accelerator + + - Highly Optimized for Deep Convolutional Neural Networks + - 442k 8-Bit Weight Capacity with 1,2,4,8-Bit Weights + - Programmable Input Image Size up to 1024 x 1024 pixels + - Programmable Network Depth up to 64 Layers + - Programmable per Layer Network Channel Widths up to 1024 Channels + - 1 and 2 Dimensional Convolution Processing + - Streaming Mode + - Flexibility to Support Other Network Types, Including MLP and Recurrent Neural Networks + + - Power Management Maximizes Operating Time for Battery Applications + + - Integrated Single-Inductor Multiple-Output (SIMO) Switch-Mode Power Supply (SMPS) + - 2.0V to 3.6V SIMO Supply Voltage Range + - Dynamic Voltage Scaling Minimizes Active Core Power Consumption + - 22.2μA/MHz While Loop Execution at 3.0V from Cache (CM4 Only) + - Selectable SRAM Retention in Low-Power Modes with Real-Time Clock (RTC) Enabled + + - Security and Integrity + + - Available Secure Boot + - AES 128/192/256 Hardware Acceleration Engine + - True Random Number Generator (TRNG) Seed Generator + +Supported Features +================== + +The ``max78000fthr/max78000/m4`` board target supports the following interfaces: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| SYSTICK | on-chip | systick | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | clock and reset control | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial | ++-----------+------------+-------------------------------------+ +| TRNG | on-chip | entropy | ++-----------+------------+-------------------------------------+ +| I2C | on-chip | i2c | ++-----------+------------+-------------------------------------+ +| DMA | on-chip | dma controller | ++-----------+------------+-------------------------------------+ +| Watchdog | on-chip | watchdog | ++-----------+------------+-------------------------------------+ +| SPI | on-chip | spi | ++-----------+------------+-------------------------------------+ +| ADC | on-chip | adc | ++-----------+------------+-------------------------------------+ +| Flash | on-chip | flash | ++-----------+------------+-------------------------------------+ +| Timer | on-chip | pwm | ++-----------+------------+-------------------------------------+ +| RTC | on-chip | real time clock | ++-----------+------------+-------------------------------------+ +| Timer | on-chip | counter | ++-----------+------------+-------------------------------------+ +| W1 | on-chip | one wire master | ++--------------------------------------------------------------+ + +Connections and IOs +=================== + +J8 Pinout +********** + ++---------+----------+-------------------------------------------------------------------------------------------------+ +| Pin | Name | Description | ++=========+==========+=================================================================================================+ +| 1 | RST | Master Reset Signal | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 2 | 3V3 | 3.3V Output. Typically used to provide 3.3V to peripherals connected to the expansion headers. | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 3 | 1V8 | 1.8V Output. Typically used to provide 1.8V to peripherals connected to the expansion headers. | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 4 | GND | Ground | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 5 | P2_3 | GPIO or Analog Input (AIN3 channel). | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 6 | P2_4 | GPIO or Analog Input (AIN4 channel). | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 7 | P1_1 | GPIO or UART2 Tx signal | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 8 | P1_0 | GPIO or UART2 Rx signal | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 9 | MPC1 | GPIO controlled by PMIC through I2C interface. Open drain or push-pull programmable | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 10 | MPC2 | GPIO controlled by PMIC through I2C interface. Open drain or push-pull programmable | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 11 | P0_7 | GPIO or QSPI0 clock signal. Shared with SD card and on-board QSPI SRAM | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 12 | P0_5 | GPIO or QSPI0 MOSI signal. Shared with SD card and on-board QSPI SRAM | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 13 | P0_6 | GPIO or QSPI0 MISO signal. Shared with SD card and on-board QSPI SRAM | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 14 | P2_6 | GPIO or LPUART Rx signal | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 15 | P2_7 | GPIO or LPUART Tx signal | ++---------+----------+-------------------------------------------------------------------------------------------------+ +| 16 | GND | Ground | ++---------+----------+-------------------------------------------------------------------------------------------------+ + +J4 Pinout +********** + ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| Pin | Name | Description | ++=========+==========+===========================================================================================================+ +| 1 | SYS | SYS Switched Connection to the Battery. This is the primary system power supply and automatically | +| | | switches between the battery voltage and the USB supply when available. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 2 | PWR | Turns off the PMIC if shorted to Ground for 13 seconds. Hard power-down button. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 3 | VBUS | USB VBUS Signal. This can be used as a 5V supply when connected to USB. This pin can also be | +| | | used as an input to power the board. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 4 | P1_6 | GPIO | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 5 | MPC3 | GPIO controlled by PMIC through the I2C interface. Open drain or push-pull programmable. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 6 | P0_9 | GPIO or QSPI0 SDIO3 signal. Shared with SD card and on-board QSPI SRAM. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 7 | P0_8 | GPIO or QSPI0 SDIO2 signal. Shared with SD Card and on-board QSPI SRAM. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 8 | P0_11 | GPIO or QSPI0 slave select signal | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 9 | P0_19 | GPIO | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 10 | P3_1 | GPIO or Wake-up signal. This pin is 3.3V only. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 11 | P0_16 | GPIO or I2C1 SCL signal. An on-board level shifter allows selecting 1.8V or 3.3V operation through | +| | | R15 or R20 resistors. Do not populate both. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ +| 12 | P0_17 | GPIO or I2C1 SDA signal. An on-board level shifter allows selecting 1.8V or 3.3V operation through | +| | | R15 or R20 resistors. Do not populate both. | ++---------+----------+-----------------------------------------------------------------------------------------------------------+ + +Programming and Debugging +************************* + +Flashing +======== + +The MAX32625 microcontroller on the board is preprogrammed with DAPLink firmware. +It allows debugging and programming of the MAX78000 Arm core over USB. + +Once the debug probe is connected to your host computer, then you can simply run the +``west flash`` command to write a firmware image into flash. + +.. note:: + + This board uses OpenOCD as the default debug interface. You can also use + a Segger J-Link with Segger's native tooling by overriding the runner, + appending ``--runner jlink`` to your ``west`` command(s). The J-Link should + be connected to the standard 2*5 pin debug connector (JH5) using an + appropriate adapter board and cable. + +Debugging +========= + +Please refer to the `Flashing`_ section and run the ``west debug`` command +instead of ``west flash``. + +References +********** + +- `MAX78000FTHR web page`_ + +.. _MAX78000FTHR web page: + https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max78000fthr.html diff --git a/boards/adi/max78000fthr/max78000fthr_max78000_m4.dts b/boards/adi/max78000fthr/max78000fthr_max78000_m4.dts new file mode 100644 index 00000000000..0c62d5e4e4e --- /dev/null +++ b/boards/adi/max78000fthr/max78000fthr_max78000_m4.dts @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2025 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + model = "Analog Devices MAX78000FTHR"; + compatible = "adi,max78000fthr"; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &sram2; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + + led1: led_1 { + gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>; + label = "Red LED"; + }; + + led2: led_2 { + gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>; + label = "Green LED"; + }; + + led3: led_3 { + gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; + label = "Blue LED"; + }; + }; + + buttons { + compatible = "gpio-keys"; + + pb1: pb1 { + gpios = <&gpio0 2 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "SW1"; + zephyr,code = ; + }; + + pb2: pb2 { + gpios = <&gpio1 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "SW2"; + zephyr,code = ; + }; + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + led0 = &led1; + led1 = &led2; + sw0 = &pb1; + sw1 = &pb2; + watchdog0 = &wdt0; + }; +}; + +&uart0 { + pinctrl-0 = <&uart0a_tx_p0_1 &uart0a_rx_p0_0>; + pinctrl-names = "default"; + current-speed = <115200>; + data-bits = <8>; + parity = "none"; + status = "okay"; +}; + +&clk_ipo { + status = "okay"; +}; + +&clk_ibro { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&gpio2 { + status = "okay"; +}; + +&gpio3 { + status = "okay"; +}; + +&trng { + status = "okay"; +}; + +&i2c0 { + status = "okay"; + pinctrl-0 = <&i2c0_scl_p0_10 &i2c0_sda_p0_11>; + pinctrl-names = "default"; +}; + +&spi0 { + status = "okay"; + pinctrl-0 = <&spi0_mosi_p0_5 &spi0_miso_p0_6 &spi0_sck_p0_7 &spi0_ss0_p0_4>; + pinctrl-names = "default"; +}; + +&dma0 { + status = "okay"; +}; + +&wdt0 { + status = "okay"; +}; + +&w1 { + pinctrl-0 = <&owm_io_p0_6 &owm_pe_p0_7>; + pinctrl-names = "default"; +}; diff --git a/boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml b/boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml new file mode 100644 index 00000000000..f649928b1ba --- /dev/null +++ b/boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml @@ -0,0 +1,24 @@ +identifier: max78000fthr/max78000/m4 +name: max78000fthr m4 +vendor: adi +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - counter + - dma + - flash + - gpio + - i2c + - pwm + - serial + - spi + - trng + - w1 + - watchdog +ram: 128 +flash: 512 diff --git a/boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig b/boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig new file mode 100644 index 00000000000..9428e5334a0 --- /dev/null +++ b/boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig @@ -0,0 +1,16 @@ +# Copyright (c) 2025 Analog Devices, Inc. +# SPDX-License-Identifier: Apache-2.0 + +# Enable MPU +CONFIG_ARM_MPU=y + +# Enable GPIO +CONFIG_GPIO=y + +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable UART +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y