Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PPR support #5

Closed
wants to merge 32 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
83022ff
dts: Add and extend Nordic bindings needed for nRF54H20
anangl Jan 31, 2024
afdb528
dts: Add initial support for nRF54H20 EngA SoC
anangl Jan 31, 2024
b80b938
modules: hal_nordic: nrfx_glue: Include cmsis_core_m_defaults.h
anangl Jan 31, 2024
6218e89
modules: hal_nordic: Use common nrfx_config section for GRTC
anangl Feb 1, 2024
f6c5f27
soc: nordic: Add initial support for nRF54H20 EngA
anangl Jan 23, 2024
7e5dc6d
modules: hal_nordic: Set SOC_SVD_FILE
57300 Jan 30, 2024
76610e0
modules: hal_nordic: Integrate nrf-regtool
57300 Jan 30, 2024
1318535
drivers: serial: Kconfig.nrfx: Filter out options unsupported on nRF5…
anangl Jan 31, 2024
4d2f7ec
drivers: serial: nrfx: Allow new UARTE instances to be used
anangl Jan 19, 2024
adc7c48
drivers: timer: nrf_grtc_timer: Add dependency on nRF clock control
anangl Jan 31, 2024
b9f8891
tests: arm_irq_vector_table: Add special handling for nRF54H20
anangl Jan 31, 2024
7d08b6c
dts: nordic: Include input-event-codes.h from nrf_common.dtsi
anangl Feb 1, 2024
bc2bfb0
scripts: west: runners: nrfjprog: add option to not erase
gmarull Jan 29, 2024
79cd69e
scripts: west: runners: nrfjprog: add erasepage op
gmarull Jan 29, 2024
21af9c2
scripts: west: runners: nrfjprog: add basic support for nRF54H series
gmarull Jan 29, 2024
c677513
boards: arm: Add initial support for nRF54H20 PDK
anangl Jan 23, 2024
1217c66
tests: lib: cpp: Exclude cpp98 test on nRF54H20
anangl Jan 31, 2024
809e8fb
dts: bindings: riscv: nordic,vpr-coprocessor: rename src/dst props
gmarull Jan 31, 2024
d76ac03
drivers: misc: nordic_vpr_launcher: initial version
gmarull Jan 31, 2024
413253c
boards: nrf54h20pdk_nrf54h20: define cpuppr_vpr source/execution areas
gmarull Jan 31, 2024
40cda50
snippets: add nordic-ppr
gmarull Feb 1, 2024
2d2a5fb
drivers: serial: nrfx_uarte2: drop soc.h
gmarull Jan 31, 2024
b1bf8a2
dts: bindings: cpu: s/nordic,riscv/nordic,vpr
gmarull Feb 2, 2024
2939553
dts: bindings: cpu: nordic,vpr: add nordic,bus-width property
gmarull Feb 1, 2024
85110bb
dts: common: nordic: nrf54h20_enga: add nordic,bus-width to PPR CPU
gmarull Feb 1, 2024
e1879b2
modules: hal_nordic: add configuration for nRF54H PPR core
gmarull Jan 31, 2024
6c0eeae
scripts: kconfig: functions: add dt_chosen_partition_addr_int|hex
gmarull Feb 1, 2024
43e9c69
soc: common: nordic_nrf: move pinctrl_soc.h to a common dir
gmarull Feb 1, 2024
8769f3d
soc: arm: nordic_nrf: move Kconfig.peripherals to common folder
gmarull Feb 1, 2024
029e448
soc: riscv: nordic_nrf: add initial support for VPR core
gmarull Jan 31, 2024
5f43588
soc: riscv: nordic_nrf: nrf54h: introduce PPR support
gmarull Feb 1, 2024
7832539
boards: riscv: add nrf54h20pdk_nrf54h20_cpuppr
gmarull Jan 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions boards/arm/nrf54h20pdk_nrf54h20/Kconfig.board
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config BOARD_NRF54H20PDK_NRF54H20_CPUAPP
bool "nRF54H20 PDK nRF54H20 Application MCU"
depends on SOC_NRF54H20_ENGA_CPUAPP

config BOARD_NRF54H20PDK_NRF54H20_CPURAD
bool "nRF54H20 PDK nRF54H20 Radio MCU"
depends on SOC_NRF54H20_ENGA_CPURAD
16 changes: 16 additions & 0 deletions boards/arm/nrf54h20pdk_nrf54h20/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

if BOARD_NRF54H20PDK_NRF54H20_CPUAPP

config BOARD
default "nrf54h20pdk_nrf54h20_cpuapp"

endif # BOARD_NRF54H20PDK_NRF54H20_CPUAPP

if BOARD_NRF54H20PDK_NRF54H20_CPURAD

config BOARD
default "nrf54h20pdk_nrf54h20_cpurad"

endif # BOARD_NRF54H20PDK_NRF54H20_CPURAD
3 changes: 3 additions & 0 deletions boards/arm/nrf54h20pdk_nrf54h20/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SPDX-License-Identifier: Apache-2.0

include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
Binary file not shown.
148 changes: 148 additions & 0 deletions boards/arm/nrf54h20pdk_nrf54h20/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
.. _nrf54h20pdk_nrf54h20:

nRF54H20 PDK
############

Overview
********

The nRF54H20 PDK is a single-board preview development kit for evaluation
and development on the Nordic nRF54H20 System-on-Chip (SoC).

The nRF54H20 is a multicore SoC with:

* an Arm Cortex-M33 core with DSP instructions, FPU, and Armv8-M Security
Extensions, running at up to 320 MHz, referred to as the **application core**
* an Arm Cortex-M33 core with DSP instructions, FPU, and Armv8-M Security
Extensions, running at up to 256 MHz, referred to as the **radio core**.

The ``nrf54h20pdk_nrf54h20_cpuapp`` build target provides support for
the application core on the nRF54H20 SoC.
The ``nrf54h20pdk_nrf54h20_cpurad`` build target provides support for
the radio core on the nRF54H20 SoC.

nRF54H20 SoC provides support for the following devices:

* :abbr:`ADC (Analog to Digital Converter)`
* CLOCK
* :abbr:`GPIO (General Purpose Input Output)`
* :abbr:`GPIOTE (General Purpose Input Output tasks and events)`
* :abbr:`GRTC (Global real-time counter)`
* :abbr:`I2C (Inter-Integrated Circuit)`
* MRAM
* :abbr:`PWM (Pulse Width Modulation)`
* RADIO (Bluetooth Low Energy and 802.15.4)
* :abbr:`SPI (Serial Peripheral Interface)`
* :abbr:`UART (Universal asynchronous receiver-transmitter)`
* :abbr:`USB (Universal Serial Bus)`
* :abbr:`WDT (Watchdog Timer)`

.. figure:: img/nrf54h20pdk_nrf54h20.webp
:align: center
:alt: nRF54H20 PDK

nRF54H20 PDK (Credit: Nordic Semiconductor)

Hardware
********

nRF54H20 PDK has two crystal oscillators:

* High-frequency 32 MHz crystal oscillator (HFXO)
* Low-frequency 32.768 kHz crystal oscillator (LFXO)

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

The nrf54h20pdk_nrf54h20_cpuapp board configuration supports the following
hardware features:

+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| GPIOTE | on-chip | gpio |
+-----------+------------+----------------------+
| GRTC | on-chip | system clock |
+-----------+------------+----------------------+
| UART | on-chip | serial |
+-----------+------------+----------------------+

The nrf54h20pdk_nrf54h20_cpurad board configuration supports the following
hardware features:

+-----------+------------+----------------------+
| Interface | Controller | Driver/Component |
+===========+============+======================+
| GPIO | on-chip | gpio |
+-----------+------------+----------------------+
| GPIOTE | on-chip | gpio |
+-----------+------------+----------------------+
| GRTC | on-chip | system clock |
+-----------+------------+----------------------+
| UARTE | on-chip | serial |
+-----------+------------+----------------------+

Other hardware features have not been enabled yet for this board.

Connections and IOs
===================

LEDs
----

* LED1 (green) = P9.0
* LED2 (green) = P9.1
* LED3 (green) = P9.2
* LED4 (green) = P9.3

Push buttons
------------

* BUTTON1 = P0.8
* BUTTON2 = P0.9
* BUTTON3 = P0.10
* BUTTON4 = P0.11
* BOOT = SW1 = boot/reset

Programming and Debugging
*************************

Applications for both the ``nrf54h20pdk_nrf54h20_cpuapp`` and
``nrf54h20pdk_nrf54h20_cpurad`` targets can be built, flashed,
and debugged in the usual way. See :ref:`build_an_application`
and :ref:`application_run` for more details on building and running.

Flashing
========

As an example, this section shows how to build and flash the :ref:`hello_world`
application.

Follow the instructions in the :ref:`nordic_segger` page to install
and configure all the necessary software. Further information can be
found in :ref:`nordic_segger_flashing`.

To build and program the sample to the nRF54H20 PDK, complete the following steps:

First, connect the nRF54H20 PDK to you computer using the IMCU USB port on the PDK.
Next, build the sample by running the following command:

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: nrf54h20pdk_nrf54h20_cpuapp
:goals: build flash

Testing the LEDs and buttons in the nRF54H20 PDK
************************************************

There are 2 samples that allow you to test that the buttons (switches) and LEDs
on the board are working properly with Zephyr:

* :zephyr:code-sample:`blinky`
* :zephyr:code-sample:`button`

You can build and flash the examples to make sure Zephyr is running correctly on
your board. The button and LED definitions can be found in
:zephyr_file:`boards/arm/nrf54h20pdk_nrf54h20/nrf54h20pdk_nrf54h20_cpuapp.dts`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
reserved-memory {
cpuppr_ram3x_region: memory@2fc00000 {
compatible = "nordic,owned-memory";
reg = <0x2fc00000 DT_SIZE_K(28)>;
status = "disabled";
perm-read;
perm-write;
perm-execute;
};

ram3x_dma_region: memory@2fc07000 {
compatible = "nordic,owned-memory";
reg = <0x2fc07000 DT_SIZE_K(4)>;
status = "disabled";
perm-read;
perm-write;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x2fc07000 0x1000>;

cpuapp_dma_region: memory@680 {
compatible = "zephyr,memory-region";
reg = <0x680 DT_SIZE_K(2)>;
status = "disabled";
#memory-region-cells = <0>;
zephyr,memory-region = "DMA_RAM3x_APP";
};

cpurad_dma_region: memory@e80 {
compatible = "zephyr,memory-region";
reg = <0xe80 0x80>;
status = "disabled";
#memory-region-cells = <0>;
zephyr,memory-region = "DMA_RAM3x_RAD";
};
};
};
};

&mram1x {
cpurad_rx_partitions: cpurad-rx-partitions {
compatible = "nordic,owned-partitions", "fixed-partitions";
status = "disabled";
perm-read;
perm-execute;
perm-secure;
#address-cells = <1>;
#size-cells = <1>;

cpurad_slot0_partition: partition@66000 {
reg = <0x66000 DT_SIZE_K(256)>;
};
};

cpuapp_rx_partitions: cpuapp-rx-partitions {
compatible = "nordic,owned-partitions", "fixed-partitions";
status = "disabled";
perm-read;
perm-execute;
perm-secure;
#address-cells = <1>;
#size-cells = <1>;

cpuapp_slot0_partition: partition@a6000 {
reg = <0xa6000 DT_SIZE_K(512)>;
};

cpuppr_code_partition: partition@126000 {
reg = <0x126000 DT_SIZE_K(28)>;
};
};
};
53 changes: 53 additions & 0 deletions boards/arm/nrf54h20pdk_nrf54h20/nrf54h20pdk_nrf54h20-pinctrl.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/

&pinctrl {
/omit-if-no-ref/ uart135_default: uart135_default {
group1 {
psels = <NRF_PSEL(UART_TX, 1, 4)>,
<NRF_PSEL(UART_RTS, 1, 0)>;
};

group2 {
bias-pull-up;
psels = <NRF_PSEL(UART_RX, 1, 5)>,
<NRF_PSEL(UART_CTS, 1, 6)>;
};
};

/omit-if-no-ref/ uart135_sleep: uart135_sleep {
group1 {
low-power-enable;
psels = <NRF_PSEL(UART_TX, 1, 4)>,
<NRF_PSEL(UART_RX, 1, 5)>,
<NRF_PSEL(UART_RTS, 1, 0)>,
<NRF_PSEL(UART_CTS, 1, 6)>;
};
};

/omit-if-no-ref/ uart136_default: uart136_default {
group1 {
psels = <NRF_PSEL(UART_TX, 2, 4)>,
<NRF_PSEL(UART_RTS, 2, 0)>;
};

group2 {
bias-pull-up;
psels = <NRF_PSEL(UART_RX, 2, 5)>,
<NRF_PSEL(UART_CTS, 2, 6)>;
};
};

/omit-if-no-ref/ uart136_sleep: uart136_sleep {
group1 {
low-power-enable;
psels = <NRF_PSEL(UART_TX, 2, 4)>,
<NRF_PSEL(UART_RX, 2, 5)>,
<NRF_PSEL(UART_RTS, 2, 0)>,
<NRF_PSEL(UART_CTS, 2, 6)>;
};
};
};
Loading
Loading