boards: arm: nrf9160dk_*: Convert to v2
Converts the board to hwmv2 Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This commit is contained in:
committed by
Carles Cufi
parent
c1565b3d14
commit
dd0672a64c
@@ -1,4 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library()
|
||||
zephyr_library_sources(board.c)
|
||||
@@ -1,12 +0,0 @@
|
||||
# nRF9160 DK NRF52840 board configuration
|
||||
|
||||
# Copyright (c) 2018-2020 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_NRF9160DK_NRF52840
|
||||
bool "NRF9160 DK NRF52840"
|
||||
depends on SOC_NRF52840_QIAA
|
||||
# The GPIO driver is required by this board's initialization code
|
||||
# (board.c), so it is forced here to be enabled always, not only
|
||||
# enabled by default (in defconfig).
|
||||
select GPIO
|
||||
@@ -1,17 +0,0 @@
|
||||
# nRF9160 DK NRF52840 board configuration
|
||||
|
||||
# Copyright (c) 2018 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if BOARD_NRF9160DK_NRF52840
|
||||
|
||||
config BOARD
|
||||
default "nrf9160dk_nrf52840"
|
||||
|
||||
config BT_CTLR
|
||||
default BT
|
||||
|
||||
config BT_WAIT_NOP
|
||||
default BT && $(dt_nodelabel_enabled,reset_input)
|
||||
|
||||
endif # BOARD_NRF9160DK_NRF52840
|
||||
@@ -1,7 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000")
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)
|
||||
@@ -1,8 +0,0 @@
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_check_revision(
|
||||
FORMAT MAJOR.MINOR.PATCH
|
||||
DEFAULT_REVISION 0.14.0
|
||||
VALID_REVISIONS 0.7.0 0.14.0
|
||||
)
|
||||
@@ -1,5 +0,0 @@
|
||||
# Copyright (c) 2019 Nordic Semiconductor ASA.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library()
|
||||
zephyr_library_sources(nrf52840_reset.c)
|
||||
@@ -1,14 +0,0 @@
|
||||
# nRF9160 DK NRF9160 board configuration
|
||||
|
||||
# Copyright (c) 2018-2020 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if SOC_NRF9160_SICA
|
||||
|
||||
config BOARD_NRF9160DK_NRF9160
|
||||
bool "nRF9160 DK NRF9160"
|
||||
|
||||
config BOARD_NRF9160DK_NRF9160_NS
|
||||
bool "nRF9160 DK NRF9160 non-secure"
|
||||
|
||||
endif # SOC_NRF9160_SICA
|
||||
@@ -1,14 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if(CONFIG_BOARD_NRF9160DK_NRF9160_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()
|
||||
|
||||
board_runner_args(jlink "--device=nRF9160_xxAA" "--speed=4000")
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
||||
@@ -1,264 +0,0 @@
|
||||
.. _nrf9160dk_nrf9160:
|
||||
|
||||
nRF9160 DK
|
||||
##########
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The nRF9160 DK (PCA10090) is a single-board development kit for evaluation and
|
||||
development on the nRF9160 SiP for LTE-M and NB-IoT. The nrf9160dk_nrf9160
|
||||
board configuration provides support for the Nordic Semiconductor nRF9160 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)`
|
||||
|
||||
.. figure:: img/nrf9160dk_nrf9160.jpg
|
||||
:align: center
|
||||
:alt: nRF9160 DK
|
||||
|
||||
nRF9160 DK (Credit: Nordic Semiconductor)
|
||||
|
||||
More information about the board can be found at the
|
||||
`nRF9160 DK website`_. The `Nordic Semiconductor Infocenter`_
|
||||
contains the processor's information and the datasheet.
|
||||
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
nRF9160 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 nrf9160dk_nrf9160 board configuration supports the following
|
||||
hardware features:
|
||||
|
||||
+-----------+------------+----------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+======================+
|
||||
| ADC | on-chip | adc |
|
||||
+-----------+------------+----------------------+
|
||||
| CLOCK | on-chip | clock_control |
|
||||
+-----------+------------+----------------------+
|
||||
| FLASH | on-chip | flash |
|
||||
+-----------+------------+----------------------+
|
||||
| GPIO | on-chip | gpio |
|
||||
+-----------+------------+----------------------+
|
||||
| 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 | Segger | console |
|
||||
+-----------+------------+----------------------+
|
||||
| SPI(M/S) | on-chip | spi |
|
||||
+-----------+------------+----------------------+
|
||||
| SPU | on-chip | system protection |
|
||||
+-----------+------------+----------------------+
|
||||
| UARTE | on-chip | serial |
|
||||
+-----------+------------+----------------------+
|
||||
| WDT | on-chip | watchdog |
|
||||
+-----------+------------+----------------------+
|
||||
|
||||
.. _nrf9160dk_additional_hardware:
|
||||
|
||||
Additional hardware in v0.14.0+
|
||||
-------------------------------
|
||||
|
||||
Starting from v0.14.0, additional hardware is available on the DK:
|
||||
|
||||
* External flash memory (MX25R6435F, 64 Mb)
|
||||
* I/O expander (PCAL6408A) that can be used to interface LEDs, slide switches,
|
||||
and buttons
|
||||
|
||||
To use this additional hardware, specify the revision of the board that
|
||||
should be used when building your application (for more information, see
|
||||
:ref:`application_board_version`). For example, to build for nRF9160 DK v1.0.0:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:tool: all
|
||||
:cd-into:
|
||||
:board: nrf9160dk_nrf9160@1.0.0
|
||||
:goals: build
|
||||
:compact:
|
||||
|
||||
Remember to also enable routing for this additional hardware in the firmware for
|
||||
:ref:`nrf9160dk_nrf52840` (see :ref:`nrf9160dk_board_controller_firmware`).
|
||||
|
||||
Other hardware features have not been enabled yet for this board.
|
||||
See `nRF9160 DK website`_ and `Nordic Semiconductor Infocenter`_
|
||||
for a complete list of nRF9160 DK board hardware features.
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
LED
|
||||
---
|
||||
|
||||
* LED1 (green) = P0.2
|
||||
* LED2 (green) = P0.3
|
||||
* LED3 (green) = P0.4
|
||||
* LED4 (green) = P0.5
|
||||
|
||||
Push buttons and Switches
|
||||
-------------------------
|
||||
|
||||
* BUTTON1 = P0.6
|
||||
* BUTTON2 = P0.7
|
||||
* SWITCH1 = P0.8
|
||||
* SWITCH2 = P0.9
|
||||
* 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
|
||||
*************************
|
||||
|
||||
nrf9160dk_nrf9160 supports the Armv8m Security Extension, and by default boots
|
||||
in the Secure state.
|
||||
|
||||
Building Secure/Non-Secure Zephyr applications with Arm |reg| TrustZone |reg|
|
||||
=============================================================================
|
||||
|
||||
Applications on the nRF9160 may contain a Secure and a Non-Secure firmware
|
||||
image. The Secure image can be built using either Zephyr or
|
||||
`Trusted Firmware M`_ (TF-M). Non-Secure firmware images are always built
|
||||
using Zephyr. The two alternatives are described below.
|
||||
|
||||
.. note::
|
||||
|
||||
By default the Secure image for nRF9160 is built using TF-M.
|
||||
|
||||
Building the Secure firmware using Zephyr
|
||||
-----------------------------------------
|
||||
|
||||
The process requires the following steps:
|
||||
|
||||
1. Build the Secure Zephyr application using ``-DBOARD=nrf9160dk_nrf9160`` and
|
||||
``CONFIG_TRUSTED_EXECUTION_SECURE=y`` in the application project configuration file.
|
||||
2. Build the Non-Secure Zephyr application using ``-DBOARD=nrf9160dk_nrf9160_ns``.
|
||||
3. Merge the two binaries together.
|
||||
|
||||
Building the Secure firmware with TF-M
|
||||
--------------------------------------
|
||||
|
||||
The process to build the Secure firmware image using TF-M and the Non-Secure
|
||||
firmware image using Zephyr requires the following action:
|
||||
|
||||
1. Build the Non-Secure Zephyr application
|
||||
using ``-DBOARD=nrf9160dk_nrf9160_ns``.
|
||||
To invoke the building of TF-M the Zephyr build system requires the
|
||||
Kconfig option ``BUILD_WITH_TFM`` to be enabled, which is done by
|
||||
default when building Zephyr as a Non-Secure application.
|
||||
The Zephyr build system will perform the following steps automatically:
|
||||
|
||||
* Build the Non-Secure firmware image as a regular Zephyr application
|
||||
* Build a TF-M (secure) firmware image
|
||||
* Merge the output binaries together
|
||||
* Optionally build a bootloader image (MCUboot)
|
||||
|
||||
.. note::
|
||||
|
||||
Depending on the TF-M configuration, an application DTS overlay may be
|
||||
required, to adjust the Non-Secure image Flash and SRAM starting address
|
||||
and sizes.
|
||||
|
||||
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=nrf9160dk_nrf9160``.
|
||||
|
||||
|
||||
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 nRF9160 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: nrf9160dk_nrf9160
|
||||
: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 nRF9160 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/nrf9160dk_nrf9160/nrf9160dk_nrf9160_common.dtsi`.
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _IDAU:
|
||||
https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
|
||||
.. _nRF9160 DK website: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF9160-DK
|
||||
.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com
|
||||
.. _Trusted Firmware M: https://www.trustedfirmware.org/projects/tf-m/
|
||||
@@ -1,42 +0,0 @@
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# NOTE: This file is replicated in nrf9160dk_nrf9160 and nrf9160dk_nrf52840.
|
||||
# Any changes should be done in both instances.
|
||||
|
||||
description: |
|
||||
nRF9160 DK GPIO interface between nRF9160 and nRF52840
|
||||
|
||||
This interface can be used for inter-SoC communication on the DK.
|
||||
The connections are as follows:
|
||||
|
||||
| nRF9160 | | nRF52840 |
|
||||
| P0.17 | -- nRF interface line 0 -- | P0.17 |
|
||||
| P0.18 | -- nRF interface line 1 -- | P0.20 |
|
||||
| P0.19 | -- nRF interface line 2 -- | P0.15 |
|
||||
| P0.21 | -- nRF interface line 3 -- | P0.22 |
|
||||
| P0.22 | -- nRF interface line 4 -- | P1.04 |
|
||||
| P0.23 | -- nRF interface line 5 -- | P1.02 |
|
||||
| COEX0 | -- nRF interface line 6 -- | P1.13 |
|
||||
| COEX1 | -- nRF interface line 7 -- | P1.11 |
|
||||
| COEX2 | -- nRF interface line 8 -- | P1.15 |
|
||||
| P0.24 | -- nRF interface line 9 -- | P0.18 (nRESET) | (in v0.14.0 or later)
|
||||
|
||||
Before particular lines of this interface can be used, the corresponding
|
||||
analog switches that control the routing of involved nRF9160 pins must be
|
||||
configured to provide the optional routing (i.e. to nRF52840). To achieve
|
||||
this, set the status of respective devicetree nodes in the firmware for
|
||||
the nrf9160dk_nrf52840 board to "okay":
|
||||
- `nrf_interface_pins_0_2_routing` to enable lines 0-2
|
||||
- `nrf_interface_pins_3_5_routing` to enable lines 3-5
|
||||
- `nrf_interface_pins_6_8_routing` to enable lines 6-8
|
||||
- `nrf_interface_pin_9_routing` to enable line 9 (this line is only
|
||||
available in nRF9160 DK v0.14.0 or later)
|
||||
|
||||
NOTE: In nRF9160 DK revisions earlier than v0.14.0, when the above signals
|
||||
from nRF9160 are routed to nRF52840, they are not available on the DK
|
||||
connectors.
|
||||
|
||||
compatible: "nordic,nrf9160dk-nrf52840-interface"
|
||||
|
||||
include: [gpio-nexus.yaml, base.yaml]
|
||||
@@ -1,21 +0,0 @@
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# NOTE: This file is replicated in nrf9160dk_nrf9160 and nrf9160dk_nrf52840.
|
||||
# Any changes should be done in both instances.
|
||||
|
||||
description: GPIO used to reset nRF52840 on nRF9160 DK
|
||||
|
||||
compatible: "nordic,nrf9160dk-nrf52840-reset"
|
||||
|
||||
include: base.yaml
|
||||
|
||||
properties:
|
||||
status:
|
||||
required: true
|
||||
|
||||
gpios:
|
||||
type: phandle-array
|
||||
required: true
|
||||
description: |
|
||||
GPIO to use as nRF52840 reset line: output in nRF9160, input in nRF52840.
|
||||
@@ -1,7 +0,0 @@
|
||||
# Copyright (c) 2021 Linaro Limited
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# Suppress "unique_unit_address_if_enabled" to handle the following overlaps:
|
||||
# - flash-controller@39000 & kmu@39000
|
||||
# - power@5000 & clock@5000
|
||||
list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled")
|
||||
@@ -1,8 +0,0 @@
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_check_revision(
|
||||
FORMAT MAJOR.MINOR.PATCH
|
||||
DEFAULT_REVISION 0.14.0
|
||||
VALID_REVISIONS 0.7.0 0.14.0
|
||||
)
|
||||
10
boards/nordic_nrf/nrf9160dk/CMakeLists.txt
Normal file
10
boards/nordic_nrf/nrf9160dk/CMakeLists.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
# Copyright (c) 2019 Nordic Semiconductor ASA.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if(CONFIG_BOARD_NRF9160DK_NRF9160)
|
||||
zephyr_library()
|
||||
zephyr_library_sources(nrf52840_reset.c)
|
||||
elseif(CONFIG_BOARD_NRF9160DK_NRF52840)
|
||||
zephyr_library()
|
||||
zephyr_library_sources(board.c)
|
||||
endif()
|
||||
@@ -3,6 +3,12 @@
|
||||
# Copyright (c) 2018-2020 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_NRF9160DK
|
||||
# The GPIO driver is required by this board's initialization code
|
||||
# (board.c), so it is forced here to be enabled always, not only
|
||||
# enabled by default (in defconfig).
|
||||
select GPIO if BOARD_NRF9160DK_NRF52840
|
||||
|
||||
if BOARD_NRF9160DK_NRF52840
|
||||
|
||||
config BOARD_ENABLE_DCDC
|
||||
@@ -14,4 +20,4 @@ module = BOARD_NRF9160DK
|
||||
module-str = Board Control
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
|
||||
endif # BOARD_NRF52840_NRF9160DK
|
||||
endif # BOARD_NRF9160DK_NRF52840
|
||||
@@ -5,9 +5,6 @@
|
||||
|
||||
if BOARD_NRF9160DK_NRF9160 || BOARD_NRF9160DK_NRF9160_NS
|
||||
|
||||
config BOARD
|
||||
default "nrf9160dk_nrf9160"
|
||||
|
||||
# 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-
|
||||
8
boards/nordic_nrf/nrf9160dk/Kconfig.nrf9160dk
Normal file
8
boards/nordic_nrf/nrf9160dk/Kconfig.nrf9160dk
Normal file
@@ -0,0 +1,8 @@
|
||||
# nRF9160 DK NRF9160 board configuration
|
||||
|
||||
# Copyright (c) 2018-2020 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_NRF9160DK
|
||||
select SOC_NRF9160_SICA if BOARD_NRF9160DK_NRF9160 || BOARD_NRF9160DK_NRF9160_NS
|
||||
select SOC_NRF52840_QIAA if BOARD_NRF9160DK_NRF52840
|
||||
22
boards/nordic_nrf/nrf9160dk/board.cmake
Normal file
22
boards/nordic_nrf/nrf9160dk/board.cmake
Normal file
@@ -0,0 +1,22 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if(CONFIG_BOARD_NRF9160DK_NRF9160 OR CONFIG_BOARD_NRF9160DK_NRF9160_NS)
|
||||
if(CONFIG_BOARD_NRF9160DK_NRF9160_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()
|
||||
|
||||
board_runner_args(jlink "--device=nRF9160_xxAA" "--speed=4000")
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
||||
elseif(CONFIG_BOARD_NRF9160DK_NRF52840)
|
||||
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000")
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)
|
||||
endif()
|
||||
14
boards/nordic_nrf/nrf9160dk/board.yml
Normal file
14
boards/nordic_nrf/nrf9160dk/board.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
board:
|
||||
name: nrf9160dk
|
||||
vendor: Nordic Semiconductor
|
||||
socs:
|
||||
- name: nrf9160
|
||||
variants:
|
||||
- name: 'ns'
|
||||
- name: nrf52840
|
||||
revision:
|
||||
format: major.minor.patch
|
||||
default: "0.14.0"
|
||||
revisions:
|
||||
- name: "0.7.0"
|
||||
- name: "0.14.0"
|
||||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
@@ -1,3 +1,257 @@
|
||||
.. _nrf9160dk_nrf9160:
|
||||
|
||||
nRF9160 DK
|
||||
##########
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The nRF9160 DK (PCA10090) is a single-board development kit for evaluation and
|
||||
development on the nRF9160 SiP for LTE-M and NB-IoT. The nrf9160dk/nrf9160
|
||||
board configuration provides support for the Nordic Semiconductor nRF9160 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)`
|
||||
|
||||
.. figure:: img/nrf9160dk_nrf9160.jpg
|
||||
:align: center
|
||||
:alt: nRF9160 DK
|
||||
|
||||
nRF9160 DK (Credit: Nordic Semiconductor)
|
||||
|
||||
More information about the board can be found at the
|
||||
`nRF9160 DK website`_. The `Nordic Semiconductor Infocenter`_
|
||||
contains the processor's information and the datasheet.
|
||||
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
nRF9160 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 nrf9160dk/nrf9160 board configuration supports the following
|
||||
hardware features:
|
||||
|
||||
+-----------+------------+----------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+======================+
|
||||
| ADC | on-chip | adc |
|
||||
+-----------+------------+----------------------+
|
||||
| CLOCK | on-chip | clock_control |
|
||||
+-----------+------------+----------------------+
|
||||
| FLASH | on-chip | flash |
|
||||
+-----------+------------+----------------------+
|
||||
| GPIO | on-chip | gpio |
|
||||
+-----------+------------+----------------------+
|
||||
| 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 | Segger | console |
|
||||
+-----------+------------+----------------------+
|
||||
| SPI(M/S) | on-chip | spi |
|
||||
+-----------+------------+----------------------+
|
||||
| SPU | on-chip | system protection |
|
||||
+-----------+------------+----------------------+
|
||||
| UARTE | on-chip | serial |
|
||||
+-----------+------------+----------------------+
|
||||
| WDT | on-chip | watchdog |
|
||||
+-----------+------------+----------------------+
|
||||
|
||||
.. _nrf9160dk_additional_hardware:
|
||||
|
||||
Additional hardware in v0.14.0+
|
||||
-------------------------------
|
||||
|
||||
Starting from v0.14.0, additional hardware is available on the DK:
|
||||
|
||||
* External flash memory (MX25R6435F, 64 Mb)
|
||||
* I/O expander (PCAL6408A) that can be used to interface LEDs, slide switches,
|
||||
and buttons
|
||||
|
||||
To use this additional hardware, specify the revision of the board that
|
||||
should be used when building your application (for more information, see
|
||||
:ref:`application_board_version`). For example, to build for nRF9160 DK v1.0.0:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:tool: all
|
||||
:cd-into:
|
||||
:board: nrf9160dk/nrf9160@1.0.0
|
||||
:goals: build
|
||||
:compact:
|
||||
|
||||
Remember to also enable routing for this additional hardware in the firmware for
|
||||
:ref:`nrf9160dk/nrf52840` (see :ref:`nrf9160dk_board_controller_firmware`).
|
||||
|
||||
Other hardware features have not been enabled yet for this board.
|
||||
See `nRF9160 DK website`_ and `Nordic Semiconductor Infocenter`_
|
||||
for a complete list of nRF9160 DK board hardware features.
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
LED
|
||||
---
|
||||
|
||||
* LED1 (green) = P0.2
|
||||
* LED2 (green) = P0.3
|
||||
* LED3 (green) = P0.4
|
||||
* LED4 (green) = P0.5
|
||||
|
||||
Push buttons and Switches
|
||||
-------------------------
|
||||
|
||||
* BUTTON1 = P0.6
|
||||
* BUTTON2 = P0.7
|
||||
* SWITCH1 = P0.8
|
||||
* SWITCH2 = P0.9
|
||||
* 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
|
||||
*************************
|
||||
|
||||
nrf9160dk/nrf9160 supports the Armv8m Security Extension, and by default boots
|
||||
in the Secure state.
|
||||
|
||||
Building Secure/Non-Secure Zephyr applications with Arm |reg| TrustZone |reg|
|
||||
=============================================================================
|
||||
|
||||
Applications on the nRF9160 may contain a Secure and a Non-Secure firmware
|
||||
image. The Secure image can be built using either Zephyr or
|
||||
`Trusted Firmware M`_ (TF-M). Non-Secure firmware images are always built
|
||||
using Zephyr. The two alternatives are described below.
|
||||
|
||||
.. note::
|
||||
|
||||
By default the Secure image for nRF9160 is built using TF-M.
|
||||
|
||||
Building the Secure firmware using Zephyr
|
||||
-----------------------------------------
|
||||
|
||||
The process requires the following steps:
|
||||
|
||||
1. Build the Secure Zephyr application using ``-DBOARD=nrf9160dk/nrf9160`` and
|
||||
``CONFIG_TRUSTED_EXECUTION_SECURE=y`` in the application project configuration file.
|
||||
2. Build the Non-Secure Zephyr application using ``-DBOARD=nrf9160dk/nrf9160/ns``.
|
||||
3. Merge the two binaries together.
|
||||
|
||||
Building the Secure firmware with TF-M
|
||||
--------------------------------------
|
||||
|
||||
The process to build the Secure firmware image using TF-M and the Non-Secure
|
||||
firmware image using Zephyr requires the following action:
|
||||
|
||||
1. Build the Non-Secure Zephyr application
|
||||
using ``-DBOARD=nrf9160dk_nrf9160_ns``.
|
||||
To invoke the building of TF-M the Zephyr build system requires the
|
||||
Kconfig option ``BUILD_WITH_TFM`` to be enabled, which is done by
|
||||
default when building Zephyr as a Non-Secure application.
|
||||
The Zephyr build system will perform the following steps automatically:
|
||||
|
||||
* Build the Non-Secure firmware image as a regular Zephyr application
|
||||
* Build a TF-M (secure) firmware image
|
||||
* Merge the output binaries together
|
||||
* Optionally build a bootloader image (MCUboot)
|
||||
|
||||
.. note::
|
||||
|
||||
Depending on the TF-M configuration, an application DTS overlay may be
|
||||
required, to adjust the Non-Secure image Flash and SRAM starting address
|
||||
and sizes.
|
||||
|
||||
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=nrf9160dk/nrf9160``.
|
||||
|
||||
|
||||
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 nRF9160 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: nrf9160dk/nrf9160
|
||||
: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 nRF9160 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/nordic_nrf/nrf9160dk/nrf9160dk_nrf9160_common.dtsi`.
|
||||
|
||||
.. _nrf9160dk_nrf52840:
|
||||
|
||||
nRF9160 DK - nRF52840
|
||||
@@ -42,7 +296,7 @@ is 32 MHz.
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The nrf9160dk_nrf52840 board configuration supports the following
|
||||
The nrf9160dk/nrf52840 board configuration supports the following
|
||||
hardware features:
|
||||
|
||||
+-----------+------------+----------------------+
|
||||
@@ -75,7 +329,7 @@ hardware features:
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
Applications for the ``nrf9160dk_nrf52840`` board configuration can be
|
||||
Applications for the ``nrf9160dk/nrf52840`` board configuration can be
|
||||
built and flashed in the usual way (see :ref:`build_an_application`
|
||||
and :ref:`application_run` for more details).
|
||||
|
||||
@@ -108,7 +362,7 @@ Then build and flash the application in the usual way.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: nrf9160dk_nrf52840
|
||||
:board: nrf9160dk/nrf52840
|
||||
:goals: build flash
|
||||
|
||||
Debugging
|
||||
@@ -134,7 +388,7 @@ specific nRF52840 SoC pins.
|
||||
other components on the DK are not simultaneously available on the DK
|
||||
connectors.
|
||||
|
||||
When compiling a project for nrf9160dk_nrf52840, the board controller firmware
|
||||
When compiling a project for nrf9160dk/nrf52840, the board controller firmware
|
||||
will be compiled and run automatically after the Kernel has been initialized.
|
||||
|
||||
By default, the board controller firmware will route the following:
|
||||
@@ -244,22 +498,33 @@ following:
|
||||
};
|
||||
|
||||
A few helper .dtsi files are provided in the directories
|
||||
:zephyr_file:`boards/arm/nrf9160dk_nrf52840/dts` and
|
||||
:zephyr_file:`boards/arm/nrf9160dk_nrf9160/dts`. They can serve as examples of
|
||||
:zephyr_file:`boards/nordic_nrf/nrf9160dk/dts/nrf52840` and
|
||||
:zephyr_file:`boards/nordic_nrf/nrf9160dk/dts/nrf9160`. They can serve as examples of
|
||||
how to configure and use the above routings. You can also include them from
|
||||
respective devicetree overlay files in your applications to conveniently
|
||||
configure the signal routing between nRF9160 and nRF52840 on the nRF9160 DK.
|
||||
For example, to use ``uart1`` on both these chips for communication between
|
||||
them, add the following line in the overlays for applications on both sides:
|
||||
them, add the following line in the overlays for applications on both sides, nRF52840:
|
||||
|
||||
.. code-block:: devicetree
|
||||
|
||||
#include <nrf9160dk_uart1_on_if0_3.dtsi>
|
||||
#include <nrf52840/nrf9160dk_uart1_on_if0_3.dtsi>
|
||||
|
||||
nRF9160:
|
||||
|
||||
.. code-block:: devicetree
|
||||
|
||||
#include <nrf9160/nrf9160dk_uart1_on_if0_3.dtsi>
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _IDAU:
|
||||
https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
|
||||
.. _nRF9160 DK website: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF9160-DK
|
||||
.. _Trusted Firmware M: https://www.trustedfirmware.org/projects/tf-m/
|
||||
.. _Nordic Low power cellular IoT: https://www.nordicsemi.com/Products/Low-power-cellular-IoT
|
||||
.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com
|
||||
.. _J-Link Software and documentation pack: https://www.segger.com/jlink-software.html
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: nrf9160dk_nrf52840
|
||||
identifier: nrf9160dk/nrf52840
|
||||
name: nRF9160-DK-NRF52840
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,18 +1,14 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_SOC_SERIES_NRF52X=y
|
||||
CONFIG_SOC_NRF52840_QIAA=y
|
||||
CONFIG_BOARD_NRF9160DK_NRF52840=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
# Enable hardware stack protection
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
|
||||
# enable uart driver
|
||||
# Enable UART driver
|
||||
CONFIG_SERIAL=y
|
||||
|
||||
# enable console
|
||||
# Enable console
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: nrf9160dk_nrf9160
|
||||
identifier: nrf9160dk/nrf9160
|
||||
name: nRF9160-DK-NRF9160
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,9 +1,5 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_SOC_SERIES_NRF91X=y
|
||||
CONFIG_SOC_NRF9160_SICA=y
|
||||
CONFIG_BOARD_NRF9160DK_NRF9160=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -13,12 +9,12 @@ CONFIG_HW_STACK_PROTECTION=y
|
||||
# Enable TrustZone-M
|
||||
CONFIG_ARM_TRUSTZONE_M=y
|
||||
|
||||
# enable GPIO
|
||||
# Enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
||||
# Enable uart driver
|
||||
# Enable UART driver
|
||||
CONFIG_SERIAL=y
|
||||
|
||||
# enable console
|
||||
# Enable console
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
@@ -1,4 +1,4 @@
|
||||
identifier: nrf9160dk_nrf9160_ns
|
||||
identifier: nrf9160dk/nrf9160/ns
|
||||
name: nRF9160-DK-NRF9160-Non-Secure
|
||||
type: mcu
|
||||
arch: arm
|
||||
@@ -1,9 +1,5 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_SOC_SERIES_NRF91X=y
|
||||
CONFIG_SOC_NRF9160_SICA=y
|
||||
CONFIG_BOARD_NRF9160DK_NRF9160_NS=y
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
@@ -16,12 +12,12 @@ CONFIG_ARM_TRUSTZONE_M=y
|
||||
# This Board implies building Non-Secure firmware
|
||||
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
|
||||
|
||||
# enable GPIO
|
||||
# Enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
||||
# Enable uart driver
|
||||
CONFIG_SERIAL=y
|
||||
|
||||
# enable console
|
||||
# Enable console
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
Reference in New Issue
Block a user