Skip to content

Commit fe22285

Browse files
author
Appana Durga Kedareswara rao
committed
boards: amd: Add generic APU board support for Versal Net SoC (Cortex-A78)
Introduce a generic board configuration for the APU on the Versal Net SoC, which is based on the ARM Cortex-A78 processor. This board setup provides a baseline environment for enabling and testing Cortex-A78 features and peripheral integration on the APU subsystem. Signed-off-by: Appana Durga Kedareswara rao <appana.durga.kedareswara.rao@amd.com>
1 parent 1f69280 commit fe22285

File tree

8 files changed

+191
-0
lines changed

8 files changed

+191
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#
2+
# Copyright (c) 2025 Advanced Micro Devices, Inc.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
config BOARD_VERSALNET_APU
8+
select SOC_AMD_VERSALNET_APU

boards/amd/versalnet_apu/board.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#
2+
# Copyright (c) 2025 Advanced Micro Devices, Inc.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
include(${ZEPHYR_BASE}/boards/common/xsdb.board.cmake)

boards/amd/versalnet_apu/board.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
board:
2+
name: versalnet_apu
3+
vendor: amd
4+
socs:
5+
- name: amd_versalnet_apu
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
.. zephyr:board:: versalnet_apu
2+
3+
Overview
4+
********
5+
This configuration provides support for the APU(A78), ARM processing unit on AMD
6+
Versal Net SOC, it can operate as following:
7+
8+
* Four independent A78 clusters each having 4 A78 cores
9+
10+
This processing unit is based on an ARM Cortex-A78 CPU, it also enables the following devices:
11+
12+
* ARM GIC v3 Interrupt Controller
13+
* Global Timer Counter
14+
* SBSA UART
15+
16+
Hardware
17+
********
18+
Supported Features
19+
==================
20+
21+
.. zephyr:board-supported-hw::
22+
23+
Devices
24+
=======
25+
System Timer
26+
------------
27+
28+
This board configuration uses a system timer tick frequency of 100 MHz.
29+
30+
Serial Port
31+
-----------
32+
33+
This board configuration uses a single serial communication channel with the
34+
on-chip UART0.
35+
36+
Memories
37+
--------
38+
39+
Although Flash, DDR and OCM memory regions are defined in the DTS file,
40+
all the code plus data of the application will be loaded in the sram0 region,
41+
which points to the DDR memory. The ocm0 memory area is currently available
42+
for usage, although nothing is placed there by default.
43+
44+
Known Problems or Limitations
45+
=============================
46+
47+
The following platform features are unsupported:
48+
49+
* Only the first cpu in the first cluster of the A78 subsystem is supported.
50+
51+
Programming and Debugging
52+
*************************
53+
54+
.. zephyr:board-supported-runners::
55+
56+
Build and flash in the usual way. Here is an example for the :zephyr:code-sample:`hello_world` application.
57+
58+
.. zephyr-app-commands::
59+
:zephyr-app: samples/hello_world
60+
:board: versalnet_apu
61+
:goals: build flash
62+
63+
You should see the following message on the console:
64+
65+
.. code-block:: console
66+
67+
Hello World! versalnet_apu/amd_versalnet_apu
68+
69+
70+
References
71+
**********
72+
73+
1. ARMv8‑A Architecture Reference Manual (ARM DDI 0487)
74+
2. Arm Cortex‑A78 Core Technical Reference Manual (Doc ID 101430)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright (c) 2025 Advanced Micro Devices, Inc.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
proc load_image args {
6+
set elf_file [lindex $args 0]
7+
set pdi_file [lindex $args 1]
8+
set bl31_file [lindex $args 2]
9+
10+
if { [info exists ::env(HW_SERVER_URL)] } {
11+
connect -url $::env(HW_SERVER_URL)
12+
} else {
13+
connect
14+
}
15+
16+
device program $pdi_file
17+
targets -set -nocase -filter {name =~ "Versal*"}
18+
after 100
19+
targets -set -filter {name =~ "Cortex-A78AE*0.0"}
20+
rst -proc
21+
after 100
22+
dow -force $elf_file
23+
dow -force $bl31_file
24+
con
25+
exit
26+
}
27+
28+
load_image {*}$argv
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (c) 2025, Advanced Micro Devices, Inc.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
#include <arm64/xilinx/versalnet_a78.dtsi>
9+
10+
/ {
11+
chosen {
12+
zephyr,sram = &sram0;
13+
zephyr,console = &uart0;
14+
zephyr,shell-uart = &uart0;
15+
};
16+
};
17+
18+
&cpu0 {
19+
clock-frequency = <100000000>;
20+
};
21+
22+
&soc {
23+
sram0: memory@0 {
24+
compatible = "mmio-sram";
25+
reg = <0x0 0x0 0x0 DT_SIZE_M(2048)>;
26+
};
27+
};
28+
29+
&uart1 {
30+
status = "okay";
31+
current-speed = <115200>;
32+
clock-frequency = <100000000>;
33+
};
34+
35+
&uart0 {
36+
status = "okay";
37+
current-speed = <115200>;
38+
clock-frequency = <100000000>;
39+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
identifier: versalnet_apu
2+
name: AMD Development board for Versal NET APU
3+
arch: arm
4+
toolchain:
5+
- zephyr
6+
testing:
7+
ignore_tags:
8+
- net
9+
- bluetooth
10+
vendor: amd
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# The Zephyr build from this defconfig is expected to boot from
2+
# Xilinx Arm Trusted Firmware (ATF).
3+
# Boot Flow is: Boot PDI -> TF-A -> Zephyr
4+
5+
CONFIG_ARM64_VA_BITS_40=y
6+
CONFIG_ARM64_PA_BITS_40=y
7+
CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME=y
8+
9+
# Enable UART driver
10+
CONFIG_SERIAL=y
11+
12+
# Enable console
13+
CONFIG_CONSOLE=y
14+
CONFIG_UART_CONSOLE=y
15+
16+
# Enable serial port
17+
CONFIG_UART_PL011=y
18+
19+
# This should be commented in order to test at EL1 S (EL1 Secure)
20+
CONFIG_ARMV8_A_NS=y

0 commit comments

Comments
 (0)