boards: arm: Add support for Actinius Icarus Bee (uC: Nordic nRF9160)
Add support for the Actinius Icarus Bee (nRF9160). Signed-off-by: Alex Tsamakos <alex@actinius.com>
This commit is contained in:
parent
b8c5eda2d2
commit
181192f364
19 changed files with 667 additions and 0 deletions
7
boards/arm/actinius_icarus_bee/CMakeLists.txt
Normal file
7
boards/arm/actinius_icarus_bee/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021 Actinius
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
zephyr_library()
|
||||||
|
zephyr_library_sources(board.c)
|
17
boards/arm/actinius_icarus_bee/Kconfig
Normal file
17
boards/arm/actinius_icarus_bee/Kconfig
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# Actinius Icarus board configuration
|
||||||
|
|
||||||
|
# Copyright (c) 2021 Actinius
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
if BOARD_ACTINIUS_ICARUS_BEE || BOARD_ACTINIUS_ICARUS_BEE_NS
|
||||||
|
|
||||||
|
config BOARD_SELECT_SIM_EXTERNAL
|
||||||
|
bool "Use external SIM"
|
||||||
|
help
|
||||||
|
Use the external SIM for communication, instead of the eSIM
|
||||||
|
|
||||||
|
module = BOARD_ICARUS_BEE
|
||||||
|
module-str = Board Control
|
||||||
|
source "subsys/logging/Kconfig.template.log_config"
|
||||||
|
|
||||||
|
endif # BOARD_ACTINIUS_ICARUS_BEE || BOARD_ACTINIUS_ICARUS_BEE_NS
|
14
boards/arm/actinius_icarus_bee/Kconfig.board
Normal file
14
boards/arm/actinius_icarus_bee/Kconfig.board
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Actinius Icarus Bee board configuration
|
||||||
|
|
||||||
|
# Copyright (c) 2021 Actinius
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
if SOC_NRF9160_SICA
|
||||||
|
|
||||||
|
config BOARD_ACTINIUS_ICARUS_BEE
|
||||||
|
bool "Actinius Icarus Bee"
|
||||||
|
|
||||||
|
config BOARD_ACTINIUS_ICARUS_BEE_NS
|
||||||
|
bool "Actinius Icarus Bee Non-Secure"
|
||||||
|
|
||||||
|
endif # SOC_NRF9160_SICA
|
38
boards/arm/actinius_icarus_bee/Kconfig.defconfig
Normal file
38
boards/arm/actinius_icarus_bee/Kconfig.defconfig
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# Actinius Icarus Bee board configuration
|
||||||
|
|
||||||
|
# Copyright (c) 2021 Actinius
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
if BOARD_ACTINIUS_ICARUS_BEE || BOARD_ACTINIUS_ICARUS_BEE_NS
|
||||||
|
|
||||||
|
config BOARD
|
||||||
|
default "actinius_icarus_bee"
|
||||||
|
|
||||||
|
# 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_ACTINIUS_ICARUS_BEE && TRUSTED_EXECUTION_SECURE
|
||||||
|
|
||||||
|
if BOARD_ACTINIUS_ICARUS_BEE_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_ACTINIUS_ICARUS_BEE_NS
|
||||||
|
|
||||||
|
endif # BOARD_ACTINIUS_ICARUS_BEE || BOARD_ACTINIUS_ICARUS_BEE_NS
|
19
boards/arm/actinius_icarus_bee/actinius_icarus_bee.dts
Normal file
19
boards/arm/actinius_icarus_bee/actinius_icarus_bee.dts
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Actinius
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <nordic/nrf9160_sica.dtsi>
|
||||||
|
#include "actinius_icarus_bee_common.dts"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee.yaml
Normal file
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
identifier: actinius_icarus_bee
|
||||||
|
name: Actinius Icarus Bee
|
||||||
|
type: mcu
|
||||||
|
arch: arm
|
||||||
|
toolchain:
|
||||||
|
- gnuarmemb
|
||||||
|
- xtools
|
||||||
|
- zephyr
|
||||||
|
ram: 64
|
||||||
|
flash: 256
|
||||||
|
supported:
|
||||||
|
- gpio
|
||||||
|
- i2c
|
||||||
|
- pwm
|
||||||
|
- spi
|
||||||
|
- watchdog
|
||||||
|
- counter
|
221
boards/arm/actinius_icarus_bee/actinius_icarus_bee_common.dts
Normal file
221
boards/arm/actinius_icarus_bee/actinius_icarus_bee_common.dts
Normal file
|
@ -0,0 +1,221 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Actinius
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Actinius Icarus Bee";
|
||||||
|
compatible = "actinius,icarus_bee";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
zephyr,console = &uart0;
|
||||||
|
zephyr,shell-uart = &uart0;
|
||||||
|
zephyr,uart-mcumgr = &uart0;
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
|
red_led: led_0 {
|
||||||
|
gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "Red LED";
|
||||||
|
};
|
||||||
|
|
||||||
|
green_led: led_1 {
|
||||||
|
gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "Green LED";
|
||||||
|
};
|
||||||
|
|
||||||
|
blue_led: led_2 {
|
||||||
|
gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "Blue LED";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pwmleds {
|
||||||
|
compatible = "pwm-leds";
|
||||||
|
|
||||||
|
red_pwm_led: led_pwm_0 {
|
||||||
|
pwms = <&pwm0 21>;
|
||||||
|
label = "Red PWM LED";
|
||||||
|
};
|
||||||
|
|
||||||
|
green_pwm_led: led_pwm_1 {
|
||||||
|
pwms = <&pwm0 22>;
|
||||||
|
label = "Green PWM LED";
|
||||||
|
};
|
||||||
|
|
||||||
|
blue_pwm_led: led_pwm_2 {
|
||||||
|
pwms = <&pwm0 25>;
|
||||||
|
label = "Blue PWM LED";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
buttons {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
|
||||||
|
button0: button_0 {
|
||||||
|
gpios = <&gpio0 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||||
|
label = "Push Button 1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
led0 = &red_led;
|
||||||
|
led1 = &green_led;
|
||||||
|
led2 = &blue_led;
|
||||||
|
pwm-led0 = &red_pwm_led;
|
||||||
|
pwm-led1 = &green_pwm_led;
|
||||||
|
pwm-led2 = &blue_pwm_led;
|
||||||
|
red-pwm-led = &red_pwm_led;
|
||||||
|
green-pwm-led = &green_pwm_led;
|
||||||
|
blue-pwm-led = &blue_pwm_led;
|
||||||
|
sw0 = &button0;
|
||||||
|
bootloader-led0 = &green_pwm_led;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&adc {
|
||||||
|
status ="okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpiote {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
current-speed = <115200>;
|
||||||
|
tx-pin = <2>;
|
||||||
|
rx-pin = <5>;
|
||||||
|
cts-pin = <14>;
|
||||||
|
rts-pin = <18>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
compatible = "nordic,nrf-twim";
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
clock-frequency = <I2C_BITRATE_FAST>;
|
||||||
|
sda-pin = <10>;
|
||||||
|
scl-pin = <11>;
|
||||||
|
|
||||||
|
lis2dh12-accel@19 {
|
||||||
|
compatible = "st,lis2dh12", "st,lis2dh";
|
||||||
|
reg = <0x19>;
|
||||||
|
irq-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>,
|
||||||
|
<&gpio0 29 GPIO_ACTIVE_HIGH>;
|
||||||
|
label = "LIS2DH12-ACCEL";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi3 {
|
||||||
|
compatible = "nordic,nrf-spim";
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
sck-pin = <6>;
|
||||||
|
mosi-pin = <3>;
|
||||||
|
miso-pin = <8>;
|
||||||
|
|
||||||
|
cs-gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
w25q64: w25q64jv@0 {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <80000000>;
|
||||||
|
label = "W25Q64";
|
||||||
|
jedec-id = [ef 40 17];
|
||||||
|
size = <0x4000000>;
|
||||||
|
has-dpd;
|
||||||
|
t-enter-dpd = <3500>;
|
||||||
|
t-exit-dpd = <3500>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pwm0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
ch0-pin = <21>;
|
||||||
|
ch0-inverted;
|
||||||
|
|
||||||
|
ch1-pin = <22>;
|
||||||
|
ch1-inverted;
|
||||||
|
|
||||||
|
ch2-pin = <25>;
|
||||||
|
ch2-inverted;
|
||||||
|
};
|
||||||
|
|
||||||
|
&timer0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&timer1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&timer2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flash0 {
|
||||||
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
boot_partition: partition@0 {
|
||||||
|
label = "mcuboot";
|
||||||
|
reg = <0x00000000 0x10000>;
|
||||||
|
};
|
||||||
|
slot0_partition: partition@10000 {
|
||||||
|
label = "image-0";
|
||||||
|
};
|
||||||
|
slot0_ns_partition: partition@50000 {
|
||||||
|
label = "image-0-nonsecure";
|
||||||
|
};
|
||||||
|
slot1_partition: partition@80000 {
|
||||||
|
label = "image-1";
|
||||||
|
};
|
||||||
|
slot1_ns_partition: partition@c0000 {
|
||||||
|
label = "image-1-nonsecure";
|
||||||
|
};
|
||||||
|
scratch_partition: partition@f0000 {
|
||||||
|
label = "image-scratch";
|
||||||
|
reg = <0x000f0000 0xa000>;
|
||||||
|
};
|
||||||
|
storage_partition: partition@fa000 {
|
||||||
|
label = "storage";
|
||||||
|
reg = <0x000fa000 0x00006000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/ {
|
||||||
|
|
||||||
|
reserved-memory {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
sram0_s: image_s@20000000 {
|
||||||
|
/* Secure image memory */
|
||||||
|
};
|
||||||
|
|
||||||
|
sram0_modem: image_modem@20010000 {
|
||||||
|
/* Modem (shared) memory */
|
||||||
|
};
|
||||||
|
|
||||||
|
sram0_ns: image_ns@20020000 {
|
||||||
|
/* Non-Secure image memory */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Include partition configuration file */
|
||||||
|
#include "actinius_icarus_bee_partition_conf.dts"
|
24
boards/arm/actinius_icarus_bee/actinius_icarus_bee_defconfig
Normal file
24
boards/arm/actinius_icarus_bee/actinius_icarus_bee_defconfig
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
CONFIG_SOC_SERIES_NRF91X=y
|
||||||
|
CONFIG_SOC_NRF9160_SICA=y
|
||||||
|
CONFIG_BOARD_ACTINIUS_ICARUS_BEE=y
|
||||||
|
|
||||||
|
# Enable MPU
|
||||||
|
CONFIG_ARM_MPU=y
|
||||||
|
|
||||||
|
# Enable hardware stack protection
|
||||||
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
|
|
||||||
|
# Enable TrustZone-M
|
||||||
|
CONFIG_ARM_TRUSTZONE_M=y
|
||||||
|
|
||||||
|
# enable GPIO
|
||||||
|
CONFIG_GPIO=y
|
||||||
|
|
||||||
|
# Enable uart driver
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
|
||||||
|
# enable console
|
||||||
|
CONFIG_CONSOLE=y
|
||||||
|
CONFIG_UART_CONSOLE=y
|
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee_ns.dts
Normal file
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee_ns.dts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Actinius
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <nordic/nrf9160ns_sica.dtsi>
|
||||||
|
#include "actinius_icarus_bee_common.dts"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
chosen {
|
||||||
|
zephyr,flash = &flash0;
|
||||||
|
zephyr,sram = &sram0_ns;
|
||||||
|
zephyr,code-partition = &slot0_ns_partition;
|
||||||
|
};
|
||||||
|
};
|
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee_ns.yaml
Normal file
17
boards/arm/actinius_icarus_bee/actinius_icarus_bee_ns.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
identifier: actinius_icarus_bee_ns
|
||||||
|
name: Actinius Icarus Bee Non-Secure
|
||||||
|
type: mcu
|
||||||
|
arch: arm
|
||||||
|
toolchain:
|
||||||
|
- gnuarmemb
|
||||||
|
- xtools
|
||||||
|
- zephyr
|
||||||
|
ram: 128
|
||||||
|
flash: 192
|
||||||
|
supported:
|
||||||
|
- gpio
|
||||||
|
- i2c
|
||||||
|
- pwm
|
||||||
|
- spi
|
||||||
|
- watchdog
|
||||||
|
- counter
|
|
@ -0,0 +1,27 @@
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
CONFIG_SOC_SERIES_NRF91X=y
|
||||||
|
CONFIG_SOC_NRF9160_SICA=y
|
||||||
|
CONFIG_BOARD_ACTINIUS_ICARUS_BEE_NS=y
|
||||||
|
|
||||||
|
# Enable MPU
|
||||||
|
CONFIG_ARM_MPU=y
|
||||||
|
|
||||||
|
# Enable hardware stack protection
|
||||||
|
CONFIG_HW_STACK_PROTECTION=y
|
||||||
|
|
||||||
|
# Enable TrustZone-M
|
||||||
|
CONFIG_ARM_TRUSTZONE_M=y
|
||||||
|
|
||||||
|
# This Board implies building Non-Secure firmware
|
||||||
|
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
|
||||||
|
|
||||||
|
# enable GPIO
|
||||||
|
CONFIG_GPIO=y
|
||||||
|
|
||||||
|
# Enable uart driver
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
|
||||||
|
# enable console
|
||||||
|
CONFIG_CONSOLE=y
|
||||||
|
CONFIG_UART_CONSOLE=y
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Actinius
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default Flash planning for actinius_icarus_bee.
|
||||||
|
*
|
||||||
|
* Zephyr build for nRF9160 with ARM TrustZone-M support,
|
||||||
|
* implies building Secure and Non-Secure Zephyr images.
|
||||||
|
*
|
||||||
|
* Secure image will be placed, by default, in flash0
|
||||||
|
* (or in slot0, if MCUboot is present).
|
||||||
|
* Secure image will use sram0 for system memory.
|
||||||
|
*
|
||||||
|
* Non-Secure image will be placed in slot0_ns, and use
|
||||||
|
* sram0_ns for system memory.
|
||||||
|
*
|
||||||
|
* Note that the Secure image only requires knowledge of
|
||||||
|
* the beginning of the Non-Secure image (not its size).
|
||||||
|
*/
|
||||||
|
|
||||||
|
&slot0_partition {
|
||||||
|
reg = <0x00010000 0x40000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&slot0_ns_partition {
|
||||||
|
reg = <0x00050000 0x30000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&slot1_partition {
|
||||||
|
reg = <0x00080000 0x40000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&slot1_ns_partition {
|
||||||
|
reg = <0x000c0000 0x30000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Default SRAM planning when building for nRF9160 with
|
||||||
|
* ARM TrustZone-M support
|
||||||
|
* - Lowest 64 kB SRAM allocated to Secure image (sram0_s).
|
||||||
|
* - 64 kB SRAM reserved for and used by the modem library
|
||||||
|
* (sram0_modem). This memory is Non-Secure.
|
||||||
|
* - Upper 128 kB allocated to Non-Secure image (sram0_ns).
|
||||||
|
*/
|
||||||
|
|
||||||
|
&sram0_s {
|
||||||
|
reg = <0x20000000 DT_SIZE_K(64)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&sram0_modem {
|
||||||
|
reg = <0x20010000 DT_SIZE_K(64)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&sram0_ns {
|
||||||
|
reg = <0x20020000 DT_SIZE_K(128)>;
|
||||||
|
};
|
44
boards/arm/actinius_icarus_bee/board.c
Normal file
44
boards/arm/actinius_icarus_bee/board.c
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Actinius
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <init.h>
|
||||||
|
#include <drivers/gpio.h>
|
||||||
|
|
||||||
|
#include <logging/log.h>
|
||||||
|
LOG_MODULE_REGISTER(board_control, CONFIG_BOARD_ICARUS_BEE_LOG_LEVEL);
|
||||||
|
|
||||||
|
#define SIM_SELECT_PIN 12
|
||||||
|
|
||||||
|
static void select_sim(void)
|
||||||
|
{
|
||||||
|
const struct device *port = device_get_binding(DT_LABEL(DT_NODELABEL(gpio0)));
|
||||||
|
|
||||||
|
if (!port) {
|
||||||
|
LOG_ERR("Could not get GPIO Device Binding");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_SELECT_SIM_EXTERNAL
|
||||||
|
gpio_pin_configure(port, SIM_SELECT_PIN, GPIO_OUTPUT_LOW);
|
||||||
|
LOG_INF("External SIM is selected");
|
||||||
|
#else
|
||||||
|
gpio_pin_configure(port, SIM_SELECT_PIN, GPIO_OUTPUT_HIGH);
|
||||||
|
LOG_INF("eSIM is selected");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int board_actinius_icarus_bee_init(const struct device *dev)
|
||||||
|
{
|
||||||
|
ARG_UNUSED(dev);
|
||||||
|
|
||||||
|
select_sim();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SYS_INIT(board_actinius_icarus_bee_init, POST_KERNEL,
|
||||||
|
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
5
boards/arm/actinius_icarus_bee/board.cmake
Normal file
5
boards/arm/actinius_icarus_bee/board.cmake
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
board_runner_args(jlink "--device=cortex-m33" "--speed=4000")
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
Binary file not shown.
After Width: | Height: | Size: 470 KiB |
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
BIN
boards/arm/actinius_icarus_bee/doc/img/icarus-bee.png
Normal file
BIN
boards/arm/actinius_icarus_bee/doc/img/icarus-bee.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 232 KiB |
135
boards/arm/actinius_icarus_bee/doc/index.rst
Normal file
135
boards/arm/actinius_icarus_bee/doc/index.rst
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
.. _actinius_icarus_bee:
|
||||||
|
|
||||||
|
Actinius Icarus Bee
|
||||||
|
###################
|
||||||
|
|
||||||
|
Overview
|
||||||
|
********
|
||||||
|
|
||||||
|
.. figure:: img/icarus-bee.png
|
||||||
|
:width: 450px
|
||||||
|
:align: center
|
||||||
|
:alt: Icarus Bee
|
||||||
|
|
||||||
|
Icarus Bee (nRF9160 Bee)
|
||||||
|
|
||||||
|
The Icarus Bee is a cellular IoT board in Bee/xBee form factor.
|
||||||
|
It is built around Nordic Semi's nRF9160 modem and combines
|
||||||
|
LTE-M, NB-IoT, GPS, accelerometer, SPI Flash, RGB LED, Button,
|
||||||
|
as well as an eSIM and a nano SIM connector.
|
||||||
|
|
||||||
|
The main uController is the Nordic Semiconductor nRF9160, with
|
||||||
|
ARM Cortex-M33F CPU, ARMv8-M Security Extension and the
|
||||||
|
following devices (provided directly by Nordic):
|
||||||
|
|
||||||
|
* :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/icarus-bee-external-pins.png
|
||||||
|
:width: 450px
|
||||||
|
:align: center
|
||||||
|
:alt: Icarus Bee w/ Pinouts
|
||||||
|
|
||||||
|
Icarus Bee w/ Pinouts
|
||||||
|
|
||||||
|
.. figure:: img/icarus-bee-peripherals-pins.png
|
||||||
|
:width: 200px
|
||||||
|
:align: center
|
||||||
|
:alt: Icarus Bee
|
||||||
|
|
||||||
|
Internal Pinouts
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
********
|
||||||
|
|
||||||
|
The detailed information about the on-board hardware can be found at the `Icarus Bee Product Website`_.
|
||||||
|
|
||||||
|
Supported Features
|
||||||
|
==================
|
||||||
|
|
||||||
|
The actinius_icarus_bee 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 |
|
||||||
|
+-----------+------------+----------------------+
|
||||||
|
| SPI(M/S) | on-chip | spi |
|
||||||
|
+-----------+------------+----------------------+
|
||||||
|
| SPU | on-chip | system protection |
|
||||||
|
+-----------+------------+----------------------+
|
||||||
|
| UARTE | on-chip | serial |
|
||||||
|
+-----------+------------+----------------------+
|
||||||
|
| ACCEL | st | lis2dh |
|
||||||
|
+-----------+------------+----------------------+
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Building Secure/Non-Secure Zephyr applications
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
The process requires the following steps:
|
||||||
|
|
||||||
|
1. Build the Secure Zephyr application using ``-DBOARD=actinius_icarus_bee``.
|
||||||
|
2. Build the Non-Secure Zephyr application using ``-DBOARD=actinius_icarus_bee_ns``.
|
||||||
|
3. Merge the two binaries together.
|
||||||
|
|
||||||
|
If you are using Segger Embedded Studio v4.18 or later, the two binaries are built, merged, and
|
||||||
|
burned automatically, unless you have disabled the feature.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
More information can be found in the `Icarus Bee Product Website`_ or the
|
||||||
|
`Actinius Documentation Portal`_.
|
||||||
|
|
||||||
|
References
|
||||||
|
**********
|
||||||
|
|
||||||
|
.. target-notes::
|
||||||
|
|
||||||
|
.. _IDAU:
|
||||||
|
https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
|
||||||
|
|
||||||
|
.. _Icarus Bee Product Website:
|
||||||
|
https://www.actinius.com/icarus-bee
|
||||||
|
|
||||||
|
.. _Actinius Documentation Portal:
|
||||||
|
https://docs.actinius.com
|
7
boards/arm/actinius_icarus_bee/pre_dt_board.cmake
Normal file
7
boards/arm/actinius_icarus_bee/pre_dt_board.cmake
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# 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")
|
Loading…
Add table
Add a link
Reference in a new issue