boards: adi: Add MAX78000FTHR board
This commit adds MAX78000FTHR board. Signed-off-by: Yasin Ustuner <Yasin.Ustuner@analog.com>
This commit is contained in:
parent
11e913b65a
commit
426c586868
8 changed files with 403 additions and 0 deletions
7
boards/adi/max78000fthr/Kconfig.max78000fthr
Normal file
7
boards/adi/max78000fthr/Kconfig.max78000fthr
Normal file
|
|
@ -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
|
||||||
7
boards/adi/max78000fthr/board.cmake
Normal file
7
boards/adi/max78000fthr/board.cmake
Normal file
|
|
@ -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)
|
||||||
9
boards/adi/max78000fthr/board.yml
Normal file
9
boards/adi/max78000fthr/board.yml
Normal file
|
|
@ -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
|
||||||
BIN
boards/adi/max78000fthr/doc/img/max78000fthr_img1.webp
Normal file
BIN
boards/adi/max78000fthr/doc/img/max78000fthr_img1.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
210
boards/adi/max78000fthr/doc/index.rst
Normal file
210
boards/adi/max78000fthr/doc/index.rst
Normal file
|
|
@ -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
|
||||||
130
boards/adi/max78000fthr/max78000fthr_max78000_m4.dts
Normal file
130
boards/adi/max78000fthr/max78000fthr_max78000_m4.dts
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025 Analog Devices, Inc.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include <adi/max32/max78000.dtsi>
|
||||||
|
#include <adi/max32/max78000-pinctrl.dtsi>
|
||||||
|
#include <zephyr/dt-bindings/gpio/adi-max32-gpio.h>
|
||||||
|
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
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 = <INPUT_KEY_0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pb2: pb2 {
|
||||||
|
gpios = <&gpio1 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||||
|
label = "SW2";
|
||||||
|
zephyr,code = <INPUT_KEY_1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 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";
|
||||||
|
};
|
||||||
24
boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml
Normal file
24
boards/adi/max78000fthr/max78000fthr_max78000_m4.yaml
Normal file
|
|
@ -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
|
||||||
16
boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig
Normal file
16
boards/adi/max78000fthr/max78000fthr_max78000_m4_defconfig
Normal file
|
|
@ -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
|
||||||
Loading…
Reference in a new issue