boards: add support for eval-adin2111ebz
Add support for ADI EVAL-ADIN2111EBZ. Tested samples: * hello_world * blinky * dhcpv4_client Co-developed-by: Philip Molloy <pmolloy@baylibre.com> Signed-off-by: Philip Molloy <pmolloy@baylibre.com> Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
This commit is contained in:
parent
6d387b3fd5
commit
4fe3a8827f
8
boards/arm/adi_eval_adin2111ebz/Kconfig.board
Normal file
8
boards/arm/adi_eval_adin2111ebz/Kconfig.board
Normal file
|
@ -0,0 +1,8 @@
|
|||
# ADI EVAL-ADIN2111EBZ board configuration
|
||||
|
||||
# Copyright (c) 2024 BayLibre
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_ADI_EVAL_ADIN2111EBZ
|
||||
bool "ADI EVAL-ADIN2111EBZ evaulation board"
|
||||
depends on SOC_STM32L4S5XX
|
37
boards/arm/adi_eval_adin2111ebz/Kconfig.defconfig
Normal file
37
boards/arm/adi_eval_adin2111ebz/Kconfig.defconfig
Normal file
|
@ -0,0 +1,37 @@
|
|||
# ADI EVAL-ADIN2111EBZ board configuration
|
||||
|
||||
# Copyright (c) 2024 BayLibre
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if BOARD_ADI_EVAL_ADIN2111EBZ
|
||||
|
||||
config BOARD
|
||||
default "adi_eval_adin2111ebz"
|
||||
|
||||
config SPI_STM32_INTERRUPT
|
||||
default y
|
||||
depends on SPI
|
||||
|
||||
config MDIO_INIT_PRIORITY
|
||||
default 81
|
||||
depends on MDIO
|
||||
|
||||
config PHY_INIT_PRIORITY
|
||||
default 82
|
||||
depends on NET_L2_ETHERNET && ETH_DRIVER
|
||||
|
||||
if NETWORKING
|
||||
|
||||
config NET_L2_ETHERNET
|
||||
default y
|
||||
|
||||
if ETH_ADIN2111
|
||||
|
||||
config NET_IF_MAX_IPV4_COUNT
|
||||
default 2
|
||||
|
||||
endif # ETH_ADIN2111
|
||||
|
||||
endif # NETWORKING
|
||||
|
||||
endif # BOARD_ADI_EVAL_ADIN2111EBZ
|
197
boards/arm/adi_eval_adin2111ebz/adi_eval_adin2111ebz.dts
Normal file
197
boards/arm/adi_eval_adin2111ebz/adi_eval_adin2111ebz.dts
Normal file
|
@ -0,0 +1,197 @@
|
|||
/*
|
||||
* Copyright (c) 2024 BayLibre
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <st/l4/stm32l4s5Xi.dtsi>
|
||||
#include <st/l4/stm32l4s5qiix-pinctrl.dtsi>
|
||||
|
||||
/ {
|
||||
model = "Analog Devices Inc. EVAL-ADIN2111EBZ board";
|
||||
compatible = "adi,eval-adin2111ebz";
|
||||
|
||||
chosen {
|
||||
zephyr,console = &usart1;
|
||||
zephyr,shell-uart = &usart1;
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,code-partition = &slot0_partition;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
blue_led: uC_led1 {
|
||||
gpios = <&gpiob 6 GPIO_ACTIVE_HIGH>;
|
||||
label = "Debug led uC1";
|
||||
};
|
||||
net_red_led: led_NET1 {
|
||||
gpios = <&gpiob 10 GPIO_ACTIVE_HIGH>;
|
||||
label = "NET led 1";
|
||||
};
|
||||
net_green_led: led_NET2 {
|
||||
gpios = <&gpiob 11 GPIO_ACTIVE_HIGH>;
|
||||
label = "NET led 2";
|
||||
};
|
||||
mod_red_led: led_MOD1 {
|
||||
gpios = <&gpioe 2 GPIO_ACTIVE_HIGH>;
|
||||
label = "Mod led 1";
|
||||
};
|
||||
mod_green_led: led_MOD2 {
|
||||
gpios = <&gpioe 6 GPIO_ACTIVE_HIGH>;
|
||||
label = "Mod led 2";
|
||||
};
|
||||
};
|
||||
|
||||
aliases {
|
||||
led0 = &blue_led;
|
||||
watchdog0 = &iwdg;
|
||||
spi-flash0 = &flash_ext;
|
||||
};
|
||||
};
|
||||
|
||||
&clk_lsi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&clk_hsi48 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&clk_hsi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pll {
|
||||
div-m = <4>;
|
||||
mul-n = <40>;
|
||||
div-q = <2>;
|
||||
div-r = <2>;
|
||||
clocks = <&clk_hsi>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rcc {
|
||||
clocks = <&pll>;
|
||||
clock-frequency = <DT_FREQ_M(80)>;
|
||||
ahb-prescaler = <1>;
|
||||
apb1-prescaler = <1>;
|
||||
apb2-prescaler = <1>;
|
||||
};
|
||||
|
||||
&flash0 {
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
boot_partition: partition@0 {
|
||||
label = "mcuboot";
|
||||
reg = <0x00000000 DT_SIZE_K(64)>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
/*
|
||||
* The flash starting at offset 0x10000 and ending at
|
||||
* offset 0x1ffff is reserved for use by the application.
|
||||
*/
|
||||
|
||||
slot0_partition: partition@20000 {
|
||||
label = "image-0";
|
||||
reg = <0x00020000 DT_SIZE_K(432)>;
|
||||
};
|
||||
slot1_partition: partition@8c000 {
|
||||
label = "image-1";
|
||||
reg = <0x0008C000 DT_SIZE_K(432)>;
|
||||
};
|
||||
scratch_partition: partition@f8000 {
|
||||
label = "image-scratch";
|
||||
reg = <0x000F8000 DT_SIZE_K(16)>;
|
||||
};
|
||||
|
||||
storage_partition: partition@fc000 {
|
||||
label = "storage";
|
||||
reg = <0x000fc000 DT_SIZE_K(16)>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&iwdg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rng {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dma1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dmamux1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usart1 { /* USB FT232 */
|
||||
pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
|
||||
pinctrl-names = "default";
|
||||
current-speed = <115200>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>;
|
||||
pinctrl-names = "default";
|
||||
cs-gpios = <&gpioa 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
status = "okay";
|
||||
|
||||
flash_ext: flash@0 {
|
||||
compatible = "issi,is25lp128", "jedec,spi-nor";
|
||||
size = <134217728>;
|
||||
jedec-id = [96 60 18];
|
||||
reg = <0>;
|
||||
spi-max-frequency = <133000000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pb14 &spi2_mosi_pb15>;
|
||||
pinctrl-names = "default";
|
||||
cs-gpios = <&gpiob 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
status = "okay";
|
||||
|
||||
adin2111: adin2111@0 {
|
||||
compatible = "adi,adin2111";
|
||||
reg = <0x0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
int-gpios = <&gpioa 12 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
port1 {
|
||||
local-mac-address = [ 00 E0 22 FE DA C9 ];
|
||||
};
|
||||
port2 {
|
||||
local-mac-address = [ 00 E0 22 FE DA D9 ];
|
||||
};
|
||||
mdio {
|
||||
compatible = "adi,adin2111-mdio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@1 {
|
||||
reg = <0x1>;
|
||||
compatible = "adi,adin2111-phy";
|
||||
status = "okay";
|
||||
};
|
||||
ethernet-phy@2 {
|
||||
reg = <0x2>;
|
||||
compatible = "adi,adin2111-phy";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
15
boards/arm/adi_eval_adin2111ebz/adi_eval_adin2111ebz.yaml
Normal file
15
boards/arm/adi_eval_adin2111ebz/adi_eval_adin2111ebz.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
identifier: adi_eval_adin2111ebz
|
||||
name: ADI EVAL-ADIN2111EBZ evaulation board
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
- xtools
|
||||
ram: 640
|
||||
flash: 2048
|
||||
supported:
|
||||
- gpio
|
||||
- spi
|
||||
- watchdog
|
||||
vendor: adi
|
|
@ -0,0 +1,21 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_BOARD_ADI_EVAL_ADIN2111EBZ=y
|
||||
CONFIG_SOC_SERIES_STM32L4X=y
|
||||
CONFIG_SOC_STM32L4S5XX=y
|
||||
|
||||
# enable uart driver
|
||||
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
|
6
boards/arm/adi_eval_adin2111ebz/board.cmake
Normal file
6
boards/arm/adi_eval_adin2111ebz/board.cmake
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_runner_args(jlink "--device=STM32L4S5QI" "--speed=4000")
|
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
Binary file not shown.
After Width: | Height: | Size: 82 KiB |
184
boards/arm/adi_eval_adin2111ebz/doc/index.rst
Normal file
184
boards/arm/adi_eval_adin2111ebz/doc/index.rst
Normal file
|
@ -0,0 +1,184 @@
|
|||
.. _adi_eval_adin2111ebz:
|
||||
|
||||
ADI EVAL-ADIN2111EVB Evaluation board
|
||||
#####################################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The EVAL-ADIN2111EBZ is a flexible platform enabling quick evaluation of the ADIN2111, robust,
|
||||
low power 10BASE-T1L 2-Port Ethernet switch. The evaluation board provides 2 10BASE-T1L channels
|
||||
with 10Mbit per second Single Pair Ethernet (SPE) connections reaching up to 1.7km of link distance.
|
||||
|
||||
The ADIN2111 internal switch can be configured in store and forward mode between the two 10BASE-T1L
|
||||
channels and the SPI host. Cut through mode is also available between Port 1 and Port 2 and can
|
||||
be used without the need of the SPI host (unmanaged configuration).
|
||||
|
||||
The evaluation board offers two modes of operation for maximum flexibility: Connected to a PC
|
||||
via USB port, the full set of ADIN2111 register settings and features such as link quality
|
||||
monitoring and diagnostics can be accessed over the USB using the serial command interface
|
||||
implemented in the evaluation firmware.
|
||||
|
||||
Alternatively, the board can operate in cut-through mode between Port 1 and Port 2 (unmanaged
|
||||
configuration without firmware) where the EVAL-ADIN2111EBZ acts as a network switch forwarding
|
||||
packets between the 2x 10BASE-T1L ports. The 2x links are configured by setting the ADIN2111
|
||||
hardware configuration pins jumper and switches. The 2x On-board Activity LEDs provide Link
|
||||
activity status indication for each port.
|
||||
|
||||
Custom firmware can also be developed and the ADIN2111 driver support package includes simple
|
||||
project examples to start a custom implementation.
|
||||
|
||||
The SPI interface provides access to the management registers required for the switch configuration,
|
||||
the 2 PHYs configuration and data exchange between SPI host and ports.
|
||||
|
||||
.. important::
|
||||
|
||||
S1 DIP switches are shipped in Open Alliance SPI mode. The current Zephyr
|
||||
default board configuration is set to work as "Generic SPI, CRC enabled",
|
||||
so the S1 DIP switches must be set as ``SPI_CFG0 OFF and SPI_CFG1 OFF``.
|
||||
An inconsistent S1 DIP switches configuration will halt the boot.
|
||||
|
||||
.. figure:: img/adi_eval_adin2111ebz.webp
|
||||
:align: center
|
||||
:alt: ADI EVAL-ADIN2111EBZ
|
||||
|
||||
ADI EVAL-ADIN2111EBZ (Credit: Analog Devices, Inc.)
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
The ADI EVAL-ADIN2111EBZ hardware features list is available here:
|
||||
|
||||
https://wiki.analog.com/resources/eval/user-guides/eval-adin2111ebz-user-guide
|
||||
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The ADI adi_eval_adin2111ebz 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 |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| I2C | on-chip | i2c |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| SPI | on-chip | spi |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| PWM | on-chip | pwm |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| WATCHDOG | on-chip | independent watchdog |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| ADIN2111 | spi | adin2111 10BASE-T1L mac/phy |
|
||||
+--------------+------------+-------------------------------------+
|
||||
| FT232 | uart | usb-uart |
|
||||
+--------------+------------+-------------------------------------+
|
||||
|
||||
|
||||
The default configuration can be found in the defconfig file:
|
||||
|
||||
``boards/arm/adi_eval_adin2111ebz/adi_eval_adin2111ebz_defconfig``
|
||||
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
ADI ADIN2111EBZ evaluation board has 7 GPIO controllers (from A to G).
|
||||
These controllers are responsible for pin muxing, input/output, pull-up, etc.
|
||||
|
||||
For mode details please refer to `EVAL-ADIN2111EBZ User Guide <https://wiki.analog.com/resources/eval/user-guides/eval-adin2111ebz-user-guide>`_.
|
||||
|
||||
Default Zephyr Peripheral Mapping:
|
||||
----------------------------------
|
||||
|
||||
- UART_1 TX/RX : PA9/PA10 (UART to FT232, console)
|
||||
- SPI1 SCK/MISO/MOSI : PA5/PA6/PA7 (SPI to external nor flash IS25LP128)
|
||||
- SPI2 SCK/MISO/MOSI : PB13/PB14/PB15 (SPI to external ADIN2111)
|
||||
- LED1 : POWER (Green LED)
|
||||
- UC_LED1 : PB6 (Blue LED)
|
||||
- MOD LED1 : PE2 (SR LED)
|
||||
- MOD LED2 : PE6 (BG LED)
|
||||
- NET LED1 : PB10 (SR LED)
|
||||
- NET LED2 : PB11 (BG LED)
|
||||
|
||||
|
||||
System Clock
|
||||
------------
|
||||
|
||||
EVAL-ADIN2111EBZ 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 80MHz, driven by the
|
||||
16MHz high speed internal oscillator.
|
||||
|
||||
Serial Port
|
||||
-----------
|
||||
|
||||
EVAL-ADIN2111EBZ has 1 U(S)ART. The Zephyr console output is assigned to UART1 that is connected
|
||||
to a FT232, available through Micro USB connector. Default settings are 115200 8N1.
|
||||
Same UART1 TX and RX cmos signals are available before the FT232, at P9 connector.
|
||||
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
EVAL-ADIN2111EBZ includes an ST-LINK/V2-1 JTAG/SWD 10 or 20 pin connector. This interface is
|
||||
supported by the openocd version included in Zephyr SDK.
|
||||
|
||||
Flashing an application to Discovery kit
|
||||
-----------------------------------------
|
||||
|
||||
Connect the EVAL-ADIN2111EBZ to your host computer using the USB port, then run a serial host
|
||||
program to connect with your ADI board. For example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ minicom -D /dev/serial/by-id/usb-ADI_EVAL-ADIN2111EBZ_XXXXXX-12-if00-port0
|
||||
|
||||
where XXXXXX is the serial number of the connected device.
|
||||
Then, build and flash in the usual way. Here is an example for the :ref:`hello_world` application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: adi_eval_adin2111ebz
|
||||
:goals: build flash
|
||||
|
||||
You should see the following message on the console:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Hello World! adi_eval_adin2111ebz
|
||||
|
||||
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: adi_eval_adin2111ebz
|
||||
:maybe-skip-config:
|
||||
:goals: debug
|
||||
|
||||
.. _EVAL-ADIN2111EBZ evaluation board website:
|
||||
https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-adin2111.html
|
||||
|
||||
.. _EVAL-ADIN2111EBZ board User Guide:
|
||||
https://wiki.analog.com/resources/eval/user-guides/eval-adin2111ebz-user-guide
|
||||
|
||||
.. _ADIN2111 Datasheet:
|
||||
https://www.analog.com/media/en/technical-documentation/data-sheets/adin2111.pdf
|
||||
|
||||
.. _STM32L4S5QII3P reference manual:
|
||||
https://www.st.com/resource/en/reference_manual/rm0432-stm32l4-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
|
1
boards/arm/adi_eval_adin2111ebz/pre_dt_board.cmake
Normal file
1
boards/arm/adi_eval_adin2111ebz/pre_dt_board.cmake
Normal file
|
@ -0,0 +1 @@
|
|||
list(APPEND EXTRA_DTC_FLAGS "-Wno-simple_bus_reg")
|
12
boards/arm/adi_eval_adin2111ebz/support/openocd.cfg
Normal file
12
boards/arm/adi_eval_adin2111ebz/support/openocd.cfg
Normal file
|
@ -0,0 +1,12 @@
|
|||
source [find board/stm32l4discovery.cfg]
|
||||
|
||||
$_TARGETNAME configure -event gdb-attach {
|
||||
echo "Debugger attaching: halting execution"
|
||||
reset halt
|
||||
gdb_breakpoint_override hard
|
||||
}
|
||||
|
||||
$_TARGETNAME configure -event gdb-detach {
|
||||
echo "Debugger detaching: resuming execution"
|
||||
resume
|
||||
}
|
Loading…
Reference in a new issue