Skip to content

Commit 89e950e

Browse files
glneokartben
authored andcommitted
boards: ti: Add SK-AM64 M4 support
Add initial support for the SK-AM64 MCU domain Cortex-M4F core. SK-AM64: https://www.ti.com/tool/SK-AM64B Signed-off-by: Andrew Davis <[email protected]>
1 parent a8ea86d commit 89e950e

File tree

8 files changed

+264
-0
lines changed

8 files changed

+264
-0
lines changed

boards/ti/sk_am64/Kconfig.sk_am64

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Texas Instruments SK-AM64
2+
#
3+
# Copyright (c) 2025 Texas Instruments Incorporated
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
7+
config BOARD_SK_AM64
8+
select SOC_AM6442_M4 if BOARD_SK_AM64_AM6442_M4

boards/ti/sk_am64/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: sk_am64
3+
full_name: SK-AM64
4+
vendor: ti
5+
socs:
6+
- name: am6442
35.8 KB
Loading

boards/ti/sk_am64/doc/index.rst

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
.. zephyr:board:: sk_am64
2+
3+
Overview
4+
********
5+
6+
The SK-AM64 board configuration is used by Zephyr applications that run on
7+
the TI AM64x platform. The board configuration provides support for the ARM
8+
Cortex-M4F MCU core and the following features:
9+
10+
- Nested Vector Interrupt Controller (NVIC)
11+
- System Tick System Clock (SYSTICK)
12+
13+
The board configuration also enables support for the semihosting debugging console.
14+
15+
See the `TI AM64 Product Page`_ for details.
16+
17+
Hardware
18+
********
19+
The SK-AM64 EVM features the AM64 SoC, which is composed of a dual Cortex-A53
20+
cluster and a single Cortex-M4 core in the MCU domain. Zephyr is ported to run on
21+
the M4F core and the following listed hardware specifications are used:
22+
23+
- Low-power ARM Cortex-M4F
24+
- Memory
25+
26+
- 256KB of SRAM
27+
- 2GB of DDR4
28+
29+
- Debug
30+
31+
- XDS110 based JTAG
32+
33+
Supported Features
34+
==================
35+
36+
.. zephyr:board-supported-hw::
37+
38+
Devices
39+
========
40+
System Clock
41+
------------
42+
43+
This board configuration uses a system clock frequency of 400 MHz.
44+
45+
DDR RAM
46+
-------
47+
48+
The board has 2GB of DDR RAM available. This board configuration
49+
allocates Zephyr 4kB of RAM (only for resource table: 0xa4100000 to 0xa4100400).
50+
51+
Serial Port
52+
-----------
53+
54+
This board configuration uses a single serial communication channel with the
55+
MCU domain UART (MCU_UART0).
56+
57+
GPIO
58+
----
59+
60+
The SK-AM64 has a heartbeat LED connected to MCU_GPIO0_6. It's configured
61+
to build and run the :zephyr:code-sample:`blinky` sample.
62+
63+
SD Card
64+
*******
65+
66+
Download TI's official `WIC`_ and flash the WIC file with an etching software
67+
onto an SD card. This will boot Linux on the A53 application cores of the EVM.
68+
These cores will then load the zephyr binary on the M4 core using remoteproc.
69+
70+
The default configuration can be found in
71+
:zephyr_file:`boards/ti/sk_am64/sk_am64_am6442_m4_defconfig`
72+
73+
Flashing
74+
********
75+
76+
The board can using remoteproc, and uses the OpenAMP resource table to accomplish this.
77+
78+
The testing requires the binary to be copied to the SD card to allow the A53 cores to load it while booting using remoteproc.
79+
80+
To test the M4F core, we build the :zephyr:code-sample:`hello_world` sample with the following command.
81+
82+
.. code-block:: console
83+
84+
# From the root of the Zephyr repository
85+
west build -p -b sk_am64/am6442/m4 samples/hello_world
86+
87+
This builds the program and the binary is present in the :file:`build/zephyr` directory as
88+
:file:`zephyr.elf`.
89+
90+
We now copy this binary onto the SD card in the :file:`/lib/firmware` directory and name it as
91+
:file:`am64-mcu-m4f0_0-fw`.
92+
93+
.. code-block:: console
94+
95+
# Mount the SD card at sdcard for example
96+
sudo mount /dev/sdX sdcard
97+
# copy the elf to the /lib/firmware directory
98+
sudo cp --remove-destination zephyr.elf sdcard/lib/firmware/am64-mcu-m4f0_0-fw
99+
100+
The SD card can now be used for booting. The binary will now be loaded onto the M4F core on boot.
101+
102+
To allow the board to boot using the SD card, set the boot pins to the SD Card boot mode. Refer to `SK-AM64B EVM User's Guide`_.
103+
104+
After changing the boot mode, the board should go through the boot sequence on powering up.
105+
The binary will run and print Hello world to the MCU_UART0 port.
106+
107+
References
108+
**********
109+
110+
.. _TI AM64 Product Page:
111+
https://www.ti.com/product/AM6442
112+
113+
.. _WIC:
114+
https://dr-download.ti.com/software-development/software-development-kit-sdk/MD-yXgchBCk98/10.01.10.04/tisdk-default-image-am64xx-evm-10.01.10.04.rootfs.wic.xz
115+
116+
.. _SK-AM64B EVM User's Guide:
117+
https://www.ti.com/lit/ug/spruj64/spruj64.pdf
118+
119+
.. _build OpenOCD from source:
120+
https://docs.u-boot.org/en/latest/board/ti/k3.html#building-openocd-from-source
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright (c) 2025 Texas Instruments Incorporated
3+
* Andrew Davis <[email protected]>
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
#include <zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h>
9+
10+
&pinctrl {
11+
mcu_uart0_rx_default: mcu_uart0_rx_default {
12+
pinmux = <K3_PINMUX(0x028, PIN_INPUT, MUX_MODE_0)>; /* (A9) MCU_UART0_RXD */
13+
};
14+
15+
mcu_uart0_tx_default: mcu_uart0_tx_default {
16+
pinmux = <K3_PINMUX(0x002C, PIN_OUTPUT, MUX_MODE_0)>; /* (A8) MCU_UART0_TXD */
17+
};
18+
19+
mcu_gpio0_led_default: mcu_gpio0_led_default {
20+
pinmux = <K3_PINMUX(0x0014, PIN_INPUT, MUX_MODE_7)>; /* (A7) MCU_GPIO0_5 */
21+
};
22+
};
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
* Copyright (c) 2024 Texas Instruments Incorporated
3+
* Andrew Davis <[email protected]>
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
/dts-v1/;
9+
10+
#include <ti/am64x_m4.dtsi>
11+
#include "sk_am64_am6442_m4-pinctrl.dtsi"
12+
13+
/ {
14+
model = "TI AM64x STARTER KIT (SK) M4";
15+
compatible = "ti,am64x_m4_sk", "ti,am6442";
16+
17+
chosen {
18+
zephyr,sram = &sram0;
19+
zephyr,console = &uart0;
20+
zephyr,shell-uart = &uart0;
21+
zephyr,ipc = &ipc0;
22+
zephyr,ipc_shm = &ddr0;
23+
};
24+
25+
aliases {
26+
led0 = &heartbeat_led;
27+
};
28+
29+
cpus {
30+
cpu@0 {
31+
status = "okay";
32+
clock-frequency = <DT_FREQ_M(400)>;
33+
};
34+
};
35+
36+
ddr0: memory@a4000000 {
37+
compatible = "mmio-sram";
38+
reg = <0xa4000000 DT_SIZE_M(1)>;
39+
};
40+
41+
rsc_table: memory@a4100000 {
42+
compatible = "zephyr,memory-region", "mmio-sram";
43+
reg = <0xa4100000 DT_SIZE_K(4)>;
44+
zephyr,memory-region = "RSC_TABLE";
45+
};
46+
47+
ddr1: memory@a4200000 {
48+
compatible = "zephyr,memory-region", "mmio-sram";
49+
reg = <0xa4200000 (DT_SIZE_M(15) - DT_SIZE_K(4))>;
50+
zephyr,memory-region = "DDR";
51+
};
52+
53+
leds: leds {
54+
compatible = "gpio-leds";
55+
56+
heartbeat_led: led_0 {
57+
gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
58+
label = "Heartbeat LED";
59+
};
60+
};
61+
62+
ipc0: ipc {
63+
compatible = "zephyr,mbox-ipm";
64+
mboxes = <&mbox6 0>, <&mbox6 1>;
65+
mbox-names = "tx", "rx";
66+
};
67+
};
68+
69+
&uart0 {
70+
current-speed = <115200>;
71+
pinctrl-0 = <&mcu_uart0_rx_default &mcu_uart0_tx_default>;
72+
pinctrl-names = "default";
73+
status = "okay";
74+
};
75+
76+
&gpio0 {
77+
pinctrl-0 = <&mcu_gpio0_led_default>;
78+
pinctrl-names = "default";
79+
status = "okay";
80+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
identifier: sk_am64/am6442/m4
2+
name: TI AM64X M4 Starter Kit (SK)
3+
type: mcu
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
ram: 192
8+
vendor: ti
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Copyright (c) 2024 Texas Instruments Incorporated
2+
# Andrew Davis <[email protected]>
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
# Platform Configuration
7+
CONFIG_CORTEX_M_SYSTICK=y
8+
9+
# Zephyr Kernel Configuration
10+
CONFIG_XIP=n
11+
12+
# Serial Driver
13+
CONFIG_SERIAL=y
14+
15+
# GPIO Driver
16+
CONFIG_GPIO=y
17+
18+
# Enable Console
19+
CONFIG_CONSOLE=y
20+
CONFIG_UART_CONSOLE=y

0 commit comments

Comments
 (0)