Skip to content

Commit

Permalink
board: phytec: Add phyBOARD-Electra
Browse files Browse the repository at this point in the history
Add PHYTEC's phyBOARD-Electra kit with the phyCORE-AM64x
System on Module (SOM).

This board only supports the M4F core, UART and GPIO right now,
since other drivers are still missing.

Signed-off-by: Daniel Schultz <d.schultz@phytec.de>
  • Loading branch information
dnltz committed Apr 2, 2024
1 parent a65b8fc commit 377d523
Show file tree
Hide file tree
Showing 8 changed files with 262 additions and 0 deletions.
1 change: 1 addition & 0 deletions MAINTAINERS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3635,6 +3635,7 @@ TI K3 Platforms:
- gramsay0
files:
- boards/phytec/*am62*/
- boards/phytec/phyboard_electra/
- boards/ti/*am62*/
- drivers/*/*ti_k3*
- dts/bindings/*/ti,k3*
Expand Down
8 changes: 8 additions & 0 deletions boards/phytec/phyboard_electra/Kconfig.phyboard_electra
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# PHYTEC phyBOARD-Electra AM64x
#
# Copyright (c) 2024 PHYTEC Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0

config BOARD_PHYBOARD_ELECTRA
select SOC_AM6442_M4 if BOARD_PHYBOARD_ELECTRA_AM6442_M4
5 changes: 5 additions & 0 deletions boards/phytec/phyboard_electra/board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
board:
name: phyboard_electra
vendor: phytec
socs:
- name: am6442
Binary file not shown.
143 changes: 143 additions & 0 deletions boards/phytec/phyboard_electra/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
.. _phyboard_electra_am64xx_m4:

phyBOARD-Electra AM64x M4F Core
###############################

Overview
********

The AM64x phyBOARD-Electra board configuration is used by Zephyr applications
that run on the TI AM64x platform. The board configuration provides support
for the ARM Cortex-M4F MCU core and the following features:

- Nested Vector Interrupt Controller (NVIC)
- System Tick System Clock (SYSTICK)

The board configuration also enables support for the semihosting debugging console.

See the `PHYTEC AM64x Product Page`_ for details.

.. figure:: img/phyCORE-AM64x_Electra_frontside.webp
:align: center
:alt: phyBOARD-Electra AM64x

PHYTEC phyBOARD-Electra with the phyCORE-AM64x SoM

Hardware
********
The AM64x phyBOARD-Electra kit features the AM64x SoC, which is composed of a
dual Cortex-A53 cluster and two dual Cortex-R5F cores in the MAIN domain as
well as a single Cortex-M4 core in the MCU domain. Zephyr is ported to run on
the M4F core and the following listed hardware specifications are used:

- Low-power ARM Cortex-M4F
- Memory

- 256KB of SRAM
- 2GB of DDR4

- Debug

- XDS110 based JTAG

Supported Features
==================

The phyboard_electra/am6442/m4 configuration supports the following hardware features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| PINCTRL | on-chip | pinctrl |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+

Other hardware features are not currently supported by the port.

Devices
========
System Clock
------------

This board configuration uses a system clock frequency of 400 MHz.

DDR RAM
-------

The board has 2GB of DDR RAM available. This board configuration
allocates Zephyr 4kB of RAM (only for resource table: 0xa4100000 to 0xa4100400).

Serial Port
-----------

This board configuration uses a single serial communication channel with the
MCU domain UART (MCU_UART0).

GPIO
----

The phyCORE-AM64x has a heartbeat LED connected to gpio6. It's configured
to build and run the `basic/blinky` sample.

SD Card
*******

Download PHYTEC's official `WIC`_ as well as `BMAP`_ and flash the WIC file with
an etching software onto an SD-card. This will boot Linux on the A53 application
cores of the SoM. These cores will then load the zephyr binary on the M4 core
using remoteproc.

The default configuration can be found in
:zephyr_file:`boards/phytec/phyboard_electra/phyboard_electra_am6442_m4_defconfig`

Flashing
********

The Linux running on the A53 uses the remoteproc framework to manage the M4F co-processor.
Therefore, the testing requires the binary to be copied to the SD card to allow the A53 cores to
load it while booting using remoteproc.

To test the M4F core, we build the `hello_world` sample with the following command.

.. code-block:: console
# From the root of the Zephyr repository
west build -p -b phyboard_electra/am6442/m4 samples/hello_world
This builds the program and the binary is present in the `build/zephyr` directory as `zephyr.elf`.

We now copy this binary onto the SD card in the `/lib/firmware` directory and name it as `am64-mcu-m4f0_0-fw`.

.. code-block:: console
# Mount the SD card at sdcard for example
sudo mount /dev/sdX sdcard
# copy the elf to the /lib/firmware directory
sudo cp --remove-destination zephyr.elf sdcard/lib/firmware/am64-mcu-m4f0_0-fw
The SD card can now be used for booting. The binary will now be loaded onto the M4F core on boot.

To allow the board to boot using the SD card, set the boot pins to the SD Card boot mode. Refer to `phyBOARD SD Card Booting Essentials`_.

The board should boot into Linux and the binary will run and print Hello world to the MCU_UART0
port.


.. _PHYTEC AM64x Product Page:
https://www.phytec.com/product/phycore-am64x/

.. _WIC:
https://download.phytec.de/Software/Linux/BSP-Yocto-AM64x/BSP-Yocto-Ampliphy-AM64x-PD23.2.1/images/ampliphy/phyboard-electra-am64xx-2/phytec-headless-image-phyboard-electra-am64xx-2.wic.xz

.. _BMAP:
https://download.phytec.de/Software/Linux/BSP-Yocto-AM64x/BSP-Yocto-Ampliphy-AM64x-PD23.2.1/images/ampliphy/phyboard-electra-am64xx-2/phytec-headless-image-phyboard-electra-am64xx-2.wic.bmap

.. _phyBOARD SD Card Booting Essentials:
https://docs.phytec.com/projects/yocto-phycore-am64x/en/bsp-yocto-ampliphy-am64x-pd23.2.1/bootingessentials/sdcard.html
72 changes: 72 additions & 0 deletions boards/phytec/phyboard_electra/phyboard_electra_am6442_m4.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*
* Copyright (C) 2024 PHYTEC Messtechnik GmbH
* Author: Daniel Schultz <d.schultz@phytec.de>
*
* SPDX-License-Identifier: Apache-2.0
*/

/dts-v1/;

#include <ti/am64x_m4.dtsi>

/ {
model = "PHYTEC phyBOARD-Electra AM64x M4";
compatible = "phytec,phyboard-electra-am64xx-m4", "ti,am6442";

chosen {
zephyr,sram = &sram0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,sram1 = &ddr0;
};

aliases {
led0 = &heartbeat_led;
};

cpus {
cpu@0 {
status = "okay";
clock-frequency = <DT_FREQ_M(400)>;
};
};

ddr0:memory@a4100000 {
compatible = "zephyr,memory-region", "mmio-sram";
reg = <0xa4100000 DT_SIZE_K(4)>;
zephyr,memory-region = "DDR";
};

leds: leds {
compatible = "gpio-leds";
heartbeat_led: led_0 {
gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
label = "Heartbeat LED";
};
};
};

&pinctrl {
mcu_uart0_rx_default: mcu_uart0_rx_default {
pinmux = <K3_PINMUX(0x028, PIN_INPUT, MUX_MODE_0)>;
};
mcu_uart0_tx_default: mcu_uart0_tx_default {
pinmux = <K3_PINMUX(0x002C, PIN_OUTPUT, MUX_MODE_0)>;
};
mcu_gpio0_led_default: mcu_gpio0_led_default {
pinmux = <K3_PINMUX(0x0018, PIN_OUTPUT, MUX_MODE_7)>;
};
};

&uart0 {
current-speed = <115200>;
pinctrl-0 = <&mcu_uart0_rx_default &mcu_uart0_tx_default>;
pinctrl-names = "default";
status = "okay";
};

&gpio0 {
pinctrl-0 = <&mcu_gpio0_led_default>;
pinctrl-names = "default";
status = "okay";
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
identifier: phyboard_electra/am6442/m4
name: PHYTEC phyBOARD-Electra AM64x M4
type: mcu
arch: arm
toolchain:
- zephyr
ram: 192
vendor: phytec
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# PHYTEC AM64x M4 phyBOARD-Electra
#
# Copyright (C) 2024 PHYTEC Messtechnik GmbH
# Author: Daniel Schultz <d.schultz@phytec.de>
#
# SPDX-License-Identifier: Apache-2.0

# Platform Configuration
CONFIG_CORTEX_M_SYSTICK=y

# Zephyr Kernel Configuration
CONFIG_XIP=n

# Enable Pinctrl
CONFIG_PINCTRL=y

# Serial Driver
CONFIG_SERIAL=y

# GPIO Driver
CONFIG_GPIO=y

# Enable Console
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y

0 comments on commit 377d523

Please sign in to comment.