1.. zephyr:board:: actinius_icarus_som_dk
2
3Overview
4********
5
6The Icarus SoM DK is a single board development kit for
7evaluation and development on the Icarus SoM (`Icarus SoM Docs`_).
8The Icarus SoM features the nRF9160 SiP from Nordic Semiconductor,
9a low-power 3-axis accelerometer and an on-board eSIM.
10The development kit provides interfacing to the SoM through USB-C,
11a set of user LEDs, a reset and a user button, a battery charging port,
12and a external nano SIM connector.
13The board is also Arduino Uno Rev3 compatible which makes
14using external shields possible.
15
16The main uController is the Nordic Semiconductor nRF9160, with
17ARM Cortex-M33F CPU, ARMv8-M Security Extension and the
18following devices (provided directly by Nordic):
19
20* :abbr:`ADC (Analog to Digital Converter)`
21* CLOCK
22* FLASH
23* :abbr:`GPIO (General Purpose Input Output)`
24* :abbr:`I2C (Inter-Integrated Circuit)`
25* :abbr:`MPU (Memory Protection Unit)`
26* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
27* :abbr:`PWM (Pulse Width Modulation)`
28* :abbr:`RTC (nRF RTC System Clock)`
29* Segger RTT (RTT Console)
30* :abbr:`SPI (Serial Peripheral Interface)`
31* :abbr:`UARTE (Universal asynchronous receiver-transmitter with EasyDMA)`
32* :abbr:`WDT (Watchdog Timer)`
33* :abbr:`IDAU (Implementation Defined Attribution Unit)`
34
35.. figure:: img/icarus_som_dk_block_diagram.jpg
36     :width: 450px
37     :align: center
38     :alt: Icarus SoM DK Block Diagram
39
40     Icarus SoM DK Block Diagram
41
42Hardware
43********
44
45The detailed information about the on-board hardware can be found at the `Icarus SoM Product Website`_
46and the `Icarus SoM DK Product Website`_.
47
48Pin description
49===============
50
51External Pins available to user:
52
53+----+-------+------------------------------------+------------------+
54| #  | Label | Description                        | Device-tree node |
55+====+=======+====================================+==================+
56|  1 | NC    | Not Connected                      | -                |
57+----+-------+------------------------------------+------------------+
58|  2 | IOREF | I/O reference, connected to 3.3V   | -                |
59+----+-------+------------------------------------+------------------+
60|  3 | RST   | Reset of the nRF9160               | -                |
61+----+-------+------------------------------------+------------------+
62|  4 | 3.3V  | 3.3V Power output                  | -                |
63+----+-------+------------------------------------+------------------+
64|  5 | 4.4V  | Power output between Vbat and 4.4V | -                |
65+----+-------+------------------------------------+------------------+
66|  6 | GND   | Ground pin                         | -                |
67+----+-------+------------------------------------+------------------+
68|  7 | GND   | Ground pin                         | -                |
69+----+-------+------------------------------------+------------------+
70|  8 | VIN   | Power input pin (4.35V to 10.5V)   | -                |
71+----+-------+------------------------------------+------------------+
72|  9 | A2    | AIN2 / nRF9160 P0.15               | gpio0            |
73+----+-------+------------------------------------+------------------+
74| 10 | A3    | AIN3 / nRF9160 P0.16               | gpio0            |
75+----+-------+------------------------------------+------------------+
76| 11 | A4    | AIN4 / nRF9160 P0.17               | gpio0            |
77+----+-------+------------------------------------+------------------+
78| 12 | A5    | AIN5 / nRF9160 P0.18               | gpio0            |
79+----+-------+------------------------------------+------------------+
80| 13 | A6    | AIN6 / nRF9160 P0.19               | gpio0            |
81+----+-------+------------------------------------+------------------+
82| 14 | A7    | AIN7 / nRF9160 P0.20               | gpio0            |
83+----+-------+------------------------------------+------------------+
84| 15 | P4    | nRF9160 P0.04                      | gpio0            |
85+----+-------+------------------------------------+------------------+
86| 16 | P5    | nRF9160 P0.05                      | gpio0            |
87+----+-------+------------------------------------+------------------+
88| 17 | P2    | nRF9160 P0.02                      | gpio0            |
89+----+-------+------------------------------------+------------------+
90| 18 | P1    | nRF9160 P0.01                      | gpio0            |
91+----+-------+------------------------------------+------------------+
92| 19 | P23   | nRF9160 P0.23                      | gpio0            |
93+----+-------+------------------------------------+------------------+
94| 20 | P0    | nRF9160 P0.00                      | gpio0            |
95+----+-------+------------------------------------+------------------+
96| 21 | P26   | nRF9160 P0.26                      | gpio0            |
97+----+-------+------------------------------------+------------------+
98| 22 | P27   | nRF9160 P0.27                      | gpio0            |
99+----+-------+------------------------------------+------------------+
100| 23 | P30   | nRF9160 P0.30                      | gpio0            |
101+----+-------+------------------------------------+------------------+
102| 24 | P31   | nRF9160 P0.31                      | gpio0            |
103+----+-------+------------------------------------+------------------+
104| 25 | P7    | nRF9160 P0.07                      | gpio0            |
105+----+-------+------------------------------------+------------------+
106| 26 | P13   | nRF9160 P0.13 or NC (Jumper-dependent) | gpio0        |
107+----+-------+------------------------------------+------------------+
108| 27 | P14   | nRF9160 P0.14 or NC (Jumper-dependent) | gpio0        |
109+----+-------+------------------------------------+------------------+
110| 28 | P3    | nRF9160 P0.03                      | gpio0            |
111+----+-------+------------------------------------+------------------+
112| 29 | GND   | Ground pin                         | -                |
113+----+-------+------------------------------------+------------------+
114| 30 | AREF  | NC or AIN1 (Jumper-dependent)      | gpio0            |
115+----+-------+------------------------------------+------------------+
116| 31 | SDA   | I2C SDA pin                        | i2c2             |
117+----+-------+------------------------------------+------------------+
118| 32 | SCL   | I2C SCL pin                        | i2c2             |
119+----+-------+------------------------------------+------------------+
120|  - | TS    | Pin for optional battery thermistor| -                |
121+----+-------+------------------------------------+------------------+
122|  - | CHG   | Pin for battery charging indication| -                |
123+----+-------+------------------------------------+------------------+
124|  - | CE    | Pin for enabling/disabling charging| -                |
125+----+-------+------------------------------------+------------------+
126
127
128nRF9160 pins connected internally:
129
130+--------------+------------------------------+---------------------+
131| nRF9160 pin  | Function                     | Device-tree node    |
132+==============+==============================+=====================+
133| P0.03        | Blue LED                     | led0 / pwm-led0     |
134+--------------+------------------------------+---------------------+
135| P0.08        | NeoPixel RGB LED             | spi1                |
136+--------------+------------------------------+---------------------+
137| P0.12        | SIM select pin               | gpio0               |
138+--------------+------------------------------+---------------------+
139| P0.23        | Connected to the user button | gpio0 / button0     |
140+--------------+------------------------------+---------------------+
141| P0.24        | SPI NOR Flash chip select    | gpio0 / spi3        |
142+--------------+------------------------------+---------------------+
143| P0.28        | Accelerometer Interrupt 2    | lis2dh12-accel      |
144+--------------+------------------------------+---------------------+
145| P0.29        | Accelerometer Interrupt 1    | lis2dh12-accel      |
146+--------------+------------------------------+---------------------+
147
148Supported Features
149==================
150
151The actinius_icarus_som_dk board configuration supports the following
152hardware features:
153
154+-----------+------------+----------------------+
155| Interface | Controller | Driver/Component     |
156+===========+============+======================+
157| ADC       | on-chip    | adc                  |
158+-----------+------------+----------------------+
159| CLOCK     | on-chip    | clock_control        |
160+-----------+------------+----------------------+
161| FLASH     | on-chip    | flash                |
162+-----------+------------+----------------------+
163| GPIO      | on-chip    | gpio                 |
164+-----------+------------+----------------------+
165| I2C(M)    | on-chip    | i2c                  |
166+-----------+------------+----------------------+
167| MPU       | on-chip    | arch/arm             |
168+-----------+------------+----------------------+
169| NVIC      | on-chip    | arch/arm             |
170+-----------+------------+----------------------+
171| PWM       | on-chip    | pwm                  |
172+-----------+------------+----------------------+
173| SPI(M/S)  | on-chip    | spi                  |
174+-----------+------------+----------------------+
175| SPU       | on-chip    | system protection    |
176+-----------+------------+----------------------+
177| UARTE     | on-chip    | serial               |
178+-----------+------------+----------------------+
179| ACCEL     | st         | lis2dh               |
180+-----------+------------+----------------------+
181
182SIM selection
183*************
184
185The sim choice (eSIM or nano-SIM) can be configured in Devicetree by adjusting
186the ``sim`` property in the ``sim_select`` node.
187
188Security components
189===================
190
191- Implementation Defined Attribution Unit (`IDAU`_).  The IDAU is implemented
192  with the System Protection Unit and is used to define secure and non-secure
193  memory maps.  By default, all of the memory space  (Flash, SRAM, and
194  peripheral address space) is defined to be secure accessible only.
195- Secure boot.
196
197Building Secure/Non-Secure Zephyr applications
198==============================================
199
200The process requires the following steps:
201
2021. Build the Secure Zephyr application using ``-DBOARD=actinius_icarus_som_dk``.
2032. Build the Non-Secure Zephyr application using ``-DBOARD=actinius_icarus_som_dk/ns``.
2043. Merge the two binaries together.
205
206If you are using Segger Embedded Studio v4.18 or later, the two binaries are built, merged, and
207burned automatically, unless you have disabled the feature.
208
209When building a Secure/Non-Secure application, the Secure application will
210have to set the IDAU (SPU) configuration to allow Non-Secure access to all
211CPU resources utilized by the Non-Secure application firmware. SPU
212configuration shall take place before jumping to the Non-Secure application.
213
214More information can be found in the `Icarus SoM Product Website`_,
215the `Icarus SoM DK Product Website`_ or the `Actinius Documentation Portal`_.
216
217References
218**********
219
220.. target-notes::
221
222.. _IDAU:
223   https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
224
225.. _Icarus SoM Product Website:
226   https://www.actinius.com/icarus-som
227
228.. _Icarus SoM DK Product Website:
229   https://www.actinius.com/icarus-som-dk
230
231.. _Icarus SoM Docs:
232   https://docs.actinius.com/icarus-som/introduction
233
234.. _Actinius Documentation Portal:
235   https://docs.actinius.com
236