-
Notifications
You must be signed in to change notification settings - Fork 645
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[nrf fromtree] boards: arm: add nrf9151dk_nrf9151
This patch adds the nRF9151-DK board. Signed-off-by: Maximilian Deubel <[email protected]> (cherry picked from commit ecf6287b8ce9508f04a7591367869719b99d23ca)
- Loading branch information
1 parent
bc1d191
commit 79858b9
Showing
17 changed files
with
911 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# nRF9151 DK NRF9151 board configuration | ||
|
||
# Copyright (c) 2023 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if SOC_NRF9151_LACA | ||
|
||
config BOARD_NRF9151DK_NRF9151 | ||
bool "nRF9151 DK NRF9151" | ||
|
||
config BOARD_NRF9151DK_NRF9151_NS | ||
bool "nRF9151 DK NRF9151 non-secure" | ||
|
||
endif # SOC_NRF9151_LACA |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# nRF9151 DK NRF9151 board configuration | ||
|
||
# Copyright (c) 2023 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if BOARD_NRF9151DK_NRF9151 || BOARD_NRF9151DK_NRF9151_NS | ||
|
||
config BOARD | ||
default "nrf9151dk_nrf9151" | ||
|
||
# For the secure version of the board the firmware is linked at the beginning | ||
# of the flash, or into the code-partition defined in DT if it is intended to | ||
# be loaded by MCUboot. If the secure firmware is to be combined with a non- | ||
# secure image (TRUSTED_EXECUTION_SECURE=y), the secure FW image shall always | ||
# be restricted to the size of its code partition. | ||
# For the non-secure version of the board, the firmware | ||
# must be linked into the code-partition (non-secure) defined in DT, regardless. | ||
# Apply this configuration below by setting the Kconfig symbols used by | ||
# the linker according to the information extracted from DT partitions. | ||
|
||
# Workaround for not being able to have commas in macro arguments | ||
DT_CHOSEN_Z_CODE_PARTITION := zephyr,code-partition | ||
|
||
config FLASH_LOAD_SIZE | ||
default $(dt_chosen_reg_size_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) | ||
depends on BOARD_NRF9151DK_NRF9151 && TRUSTED_EXECUTION_SECURE | ||
|
||
if BOARD_NRF9151DK_NRF9151_NS | ||
|
||
config FLASH_LOAD_OFFSET | ||
default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) | ||
|
||
config FLASH_LOAD_SIZE | ||
default $(dt_chosen_reg_size_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) | ||
|
||
endif # BOARD_NRF9151DK_NRF9151_NS | ||
|
||
config BT_HCI_VS | ||
default y if BT | ||
|
||
config BT_WAIT_NOP | ||
default BT && $(dt_nodelabel_enabled,nrf5340_reset) | ||
|
||
config I2C | ||
default $(dt_compat_on_bus,$(DT_COMPAT_NXP_PCAL6408A),i2c) | ||
|
||
endif # BOARD_NRF9151DK_NRF9151 || BOARD_NRF9151DK_NRF9151_NS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if(CONFIG_BOARD_NRF9151DK_NRF9151_NS) | ||
set(TFM_PUBLIC_KEY_FORMAT "full") | ||
endif() | ||
|
||
if(CONFIG_TFM_FLASH_MERGED_BINARY) | ||
set_property(TARGET runners_yaml_props_target PROPERTY hex_file tfm_merged.hex) | ||
endif() | ||
|
||
# TODO: change to nRF9151_xxAA when such device is available in JLink | ||
board_runner_args(jlink "--device=nRF9160_xxAA" "--speed=4000") | ||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
.. _nrf9151dk_nrf9151: | ||
|
||
nRF9151 DK | ||
########## | ||
|
||
Overview | ||
******** | ||
|
||
The nRF9151 DK (PCA10171) is a single-board development kit for evaluation and | ||
development on the nRF9151 SiP for DECT NR+ and LTE-M/NB-IoT with GNSS. The nrf9151dk_nrf9151 | ||
board configuration provides support for the Nordic Semiconductor nRF9151 ARM | ||
Cortex-M33F CPU with ARMv8-M Security Extension and the following devices: | ||
|
||
* :abbr:`ADC (Analog to Digital Converter)` | ||
* CLOCK | ||
* FLASH | ||
* :abbr:`GPIO (General Purpose Input Output)` | ||
* :abbr:`I2C (Inter-Integrated Circuit)` | ||
* :abbr:`MPU (Memory Protection Unit)` | ||
* :abbr:`NVIC (Nested Vectored Interrupt Controller)` | ||
* :abbr:`PWM (Pulse Width Modulation)` | ||
* :abbr:`RTC (nRF RTC System Clock)` | ||
* Segger RTT (RTT Console) | ||
* :abbr:`SPI (Serial Peripheral Interface)` | ||
* :abbr:`UARTE (Universal asynchronous receiver-transmitter with EasyDMA)` | ||
* :abbr:`WDT (Watchdog Timer)` | ||
* :abbr:`IDAU (Implementation Defined Attribution Unit)` | ||
|
||
More information about the board can be found at the | ||
`nRF9151 DK website`_. The `Nordic Semiconductor Infocenter`_ | ||
contains the processor's information and the datasheet. | ||
|
||
|
||
Hardware | ||
******** | ||
|
||
nRF9151 DK has two external oscillators. The frequency of | ||
the slow clock is 32.768 kHz. The frequency of the main clock | ||
is 32 MHz. | ||
|
||
Supported Features | ||
================== | ||
|
||
The nrf9151dk_nrf9151 board configuration supports the following | ||
hardware features: | ||
|
||
+-----------+------------+----------------------+ | ||
| Interface | Controller | Driver/Component | | ||
+===========+============+======================+ | ||
| ADC | on-chip | adc | | ||
+-----------+------------+----------------------+ | ||
| CLOCK | on-chip | clock_control | | ||
+-----------+------------+----------------------+ | ||
| FLASH | on-chip | flash | | ||
+-----------+------------+----------------------+ | ||
| FLASH | external | spi | | ||
+-----------+------------+----------------------+ | ||
| GPIO | on-chip | gpio | | ||
+-----------+------------+----------------------+ | ||
| GPIO | external | i2c | | ||
+-----------+------------+----------------------+ | ||
| I2C(M) | on-chip | i2c | | ||
+-----------+------------+----------------------+ | ||
| MPU | on-chip | arch/arm | | ||
+-----------+------------+----------------------+ | ||
| NVIC | on-chip | arch/arm | | ||
+-----------+------------+----------------------+ | ||
| PWM | on-chip | pwm | | ||
+-----------+------------+----------------------+ | ||
| RTC | on-chip | system clock | | ||
+-----------+------------+----------------------+ | ||
| RTT | nRF53 | console | | ||
+-----------+------------+----------------------+ | ||
| SPI(M/S) | on-chip | spi | | ||
+-----------+------------+----------------------+ | ||
| SPU | on-chip | system protection | | ||
+-----------+------------+----------------------+ | ||
| UARTE | on-chip | serial | | ||
+-----------+------------+----------------------+ | ||
| WDT | on-chip | watchdog | | ||
+-----------+------------+----------------------+ | ||
|
||
|
||
.. _nrf9151dk_additional_hardware: | ||
|
||
Other hardware features have not been enabled yet for this board. | ||
See `nRF9151 DK website`_ and `Nordic Semiconductor Infocenter`_ | ||
for a complete list of nRF9151 DK board hardware features. | ||
|
||
Connections and IOs | ||
=================== | ||
|
||
LED | ||
--- | ||
|
||
* LED1 (green) = P0.0 | ||
* LED2 (green) = P0.1 | ||
* LED3 (green) = P0.4 | ||
* LED4 (green) = P0.5 | ||
|
||
Push buttons and Switches | ||
------------------------- | ||
|
||
* BUTTON1 = P0.8 | ||
* BUTTON2 = P0.9 | ||
* SWITCH1 = P0.18 | ||
* SWITCH2 = P0.19 | ||
* BOOT = SW5 = boot/reset | ||
|
||
Security components | ||
=================== | ||
|
||
- Implementation Defined Attribution Unit (`IDAU`_). The IDAU is implemented | ||
with the System Protection Unit and is used to define secure and non-secure | ||
memory maps. By default, all of the memory space (Flash, SRAM, and | ||
peripheral address space) is defined to be secure accessible only. | ||
- Secure boot. | ||
|
||
|
||
Programming and Debugging | ||
************************* | ||
|
||
nrf9151dk_nrf9151 supports the Armv8m Security Extension, and by default boots | ||
in the Secure state. | ||
|
||
Building Secure/Non-Secure Zephyr applications with Arm |reg| TrustZone |reg| | ||
============================================================================= | ||
|
||
The process requires the following steps: | ||
|
||
1. Build the Secure Zephyr application using ``-DBOARD=nrf9151dk_nrf9151`` and | ||
``CONFIG_TRUSTED_EXECUTION_SECURE=y`` in the application project configuration file. | ||
2. Build the Non-Secure Zephyr application using ``-DBOARD=nrf9151dk_nrf9151_ns``. | ||
3. Merge the two binaries together. | ||
|
||
When building a Secure/Non-Secure application, the Secure application will | ||
have to set the IDAU (SPU) configuration to allow Non-Secure access to all | ||
CPU resources utilized by the Non-Secure application firmware. SPU | ||
configuration shall take place before jumping to the Non-Secure application. | ||
|
||
Building a Secure only application | ||
================================== | ||
|
||
Build the Zephyr app in the usual way (see :ref:`build_an_application` | ||
and :ref:`application_run`), using ``-DBOARD=nrf9151dk_nrf9151``. | ||
|
||
Flashing | ||
======== | ||
|
||
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`. Then build and flash | ||
applications as usual (see :ref:`build_an_application` and | ||
:ref:`application_run` for more details). | ||
|
||
Here is an example for the :ref:`hello_world` application. | ||
|
||
First, run your favorite terminal program to listen for output. | ||
|
||
.. code-block:: console | ||
$ minicom -D <tty_device> -b 115200 | ||
Replace :code:`<tty_device>` with the port where the nRF9151 DK | ||
can be found. For example, under Linux, :code:`/dev/ttyACM0`. | ||
|
||
Then build and flash the application in the usual way. | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: nrf9151dk_nrf9151 | ||
:goals: build flash | ||
|
||
Debugging | ||
========= | ||
|
||
Refer to the :ref:`nordic_segger` page to learn about debugging Nordic boards with a | ||
Segger IC. | ||
|
||
|
||
Testing the LEDs and buttons in the nRF9151 DK | ||
********************************************** | ||
|
||
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/nrf9151dk_nrf9151/nrf9151dk_nrf9151_common.dtsi`. | ||
|
||
References | ||
********** | ||
|
||
.. target-notes:: | ||
|
||
.. _IDAU: | ||
https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau | ||
.. _nRF9151 DK website: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF9151-DK | ||
.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com | ||
.. _Trusted Firmware M: https://www.trustedfirmware.org/projects/tf-m/ |
18 changes: 18 additions & 0 deletions
18
boards/arm/nrf9151dk_nrf9151/dts/bindings/nordic,nrf9151dk-nrf5340-reset.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Copyright (c) 2023 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
description: GPIO used to reset nRF5340 on nRF9151 DK | ||
|
||
compatible: "nordic,nrf9151dk-nrf5340-reset" | ||
|
||
include: base.yaml | ||
|
||
properties: | ||
status: | ||
required: true | ||
|
||
gpios: | ||
type: phandle-array | ||
required: true | ||
description: | | ||
GPIO to use as nRF5340 reset line: output in nRF9151, input in nRF5340. |
25 changes: 25 additions & 0 deletions
25
boards/arm/nrf9151dk_nrf9151/dts/nrf9151dk_buttons_on_io_expander.dtsi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Copyright (c) 2023 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
&pcal6408a { | ||
status = "okay"; | ||
}; | ||
|
||
&button0 { | ||
gpios = <&pcal6408a 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; | ||
}; | ||
|
||
&button1 { | ||
gpios = <&pcal6408a 1 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; | ||
}; | ||
|
||
&button2 { | ||
gpios = <&pcal6408a 2 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; | ||
}; | ||
|
||
&button3 { | ||
gpios = <&pcal6408a 3 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; | ||
}; |
25 changes: 25 additions & 0 deletions
25
boards/arm/nrf9151dk_nrf9151/dts/nrf9151dk_leds_on_io_expander.dtsi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Copyright (c) 2023 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
&pcal6408a { | ||
status = "okay"; | ||
}; | ||
|
||
&led0 { | ||
gpios = <&pcal6408a 4 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
&led1 { | ||
gpios = <&pcal6408a 5 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
&led2 { | ||
gpios = <&pcal6408a 6 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
&led3 { | ||
gpios = <&pcal6408a 7 GPIO_ACTIVE_HIGH>; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/* | ||
* Copyright (c) 2023 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/dts-v1/; | ||
#include <nordic/nrf9151_laca.dtsi> | ||
#include "nrf9151dk_nrf9151_common.dtsi" | ||
|
||
/ { | ||
chosen { | ||
zephyr,sram = &sram0_s; | ||
zephyr,flash = &flash0; | ||
zephyr,code-partition = &slot0_partition; | ||
zephyr,sram-secure-partition = &sram0_s; | ||
zephyr,sram-non-secure-partition = &sram0_ns; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
identifier: nrf9151dk_nrf9151 | ||
name: nRF9151-DK-NRF9151 | ||
type: mcu | ||
arch: arm | ||
toolchain: | ||
- gnuarmemb | ||
- xtools | ||
- zephyr | ||
ram: 88 | ||
flash: 1024 | ||
supported: | ||
- arduino_gpio | ||
- arduino_i2c | ||
- arduino_serial | ||
- arduino_spi | ||
- gpio | ||
- i2c | ||
- pwm | ||
- spi | ||
- watchdog | ||
- counter | ||
vendor: nordic |
Oops, something went wrong.