1.. zephyr:board:: actinius_icarus
2
3Overview
4********
5
6The Icarus is a cost-effective cellular IoT board in Adafruit's Feather/FeatherWing
7form factor. It is built around Nordic Semi's nRF9160 modem and combines
8LTE-M, NB-IoT, GPS, accelerometer, USB, LiPo charger as well as
9an eSIM and a nano SIM connector.
10
11The main uController is the Nordic Semiconductor nRF9160, with
12ARM Cortex-M33F CPU, ARMv8-M Security Extension and the
13following devices (provided directly by Nordic):
14
15* :abbr:`ADC (Analog to Digital Converter)`
16* CLOCK
17* FLASH
18* :abbr:`GPIO (General Purpose Input Output)`
19* :abbr:`I2C (Inter-Integrated Circuit)`
20* :abbr:`MPU (Memory Protection Unit)`
21* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
22* :abbr:`PWM (Pulse Width Modulation)`
23* :abbr:`RTC (nRF RTC System Clock)`
24* Segger RTT (RTT Console)
25* :abbr:`SPI (Serial Peripheral Interface)`
26* :abbr:`UARTE (Universal asynchronous receiver-transmitter with EasyDMA)`
27* :abbr:`WDT (Watchdog Timer)`
28* :abbr:`IDAU (Implementation Defined Attribution Unit)`
29
30Hardware
31********
32
33The detailed information about the on-board hardware can be found at the `Icarus Product Website`_.
34
35.. figure:: img/Icarus_pinouts.jpg
36     :align: center
37     :alt: Icarus IoT Dev Board w/ Pinouts
38
39     Icarus IoT Dev Board w/ Pinouts
40
41Pin description
42===============
43
44External Pins available to user:
45
46+------------+----------------------------+----------------------------------------------+------------------+
47| Icarus pin | Function                   | Description                                  | Device-tree node |
48+============+============================+==============================================+==================+
49| RST        | Reset                      | Active low reset with internal pullup        | -                |
50+------------+----------------------------+----------------------------------------------+------------------+
51| 3.3V       | Power output               | Main 3.3 V supply                            | -                |
52+------------+----------------------------+----------------------------------------------+------------------+
53| NC         | -                          | Not connected                                | -                |
54+------------+----------------------------+----------------------------------------------+------------------+
55| GND        | Power output               | Ground                                       | -                |
56+------------+----------------------------+----------------------------------------------+------------------+
57| 14 / A1    | GPIO / Analog in           | nRF9160 P0.14 / AIN1                         | gpio0 / adc_1    |
58+------------+----------------------------+----------------------------------------------+------------------+
59| 15 / A2    | GPIO / Analog in           | nRF9160 P0.15 / AIN2                         | gpio0 / adc_2    |
60+------------+----------------------------+----------------------------------------------+------------------+
61| 16 / A3    | GPIO / Analog in           | nRF9160 P0.16 / AIN3                         | gpio0 / adc_3    |
62+------------+----------------------------+----------------------------------------------+------------------+
63| 17 / A4    | GPIO / Analog in           | nRF9160 P0.17 / AIN4                         | gpio0 / adc_4    |
64+------------+----------------------------+----------------------------------------------+------------------+
65| 18 / A5    | GPIO / Analog in           | nRF9160 P0.18 / AIN5                         | gpio0 / adc_5    |
66+------------+----------------------------+----------------------------------------------+------------------+
67| 19 / A6    | GPIO / Analog in           | nRF9160 P0.19 / AIN6                         | gpio0 / adc_6    |
68+------------+----------------------------+----------------------------------------------+------------------+
69| 20 / SCK   | GPIO / SPI pin             | nRF9160 P0.20 / SPI SCK pin                  | gpio0 / spi3     |
70+------------+----------------------------+----------------------------------------------+------------------+
71| 21 / MOSI  | GPIO / SPI pin             | nRF9160 P0.21 / SPI MOSI pin                 | gpio0 / spi3     |
72+------------+----------------------------+----------------------------------------------+------------------+
73| 22 / MISO  | GPIO / SPI pin             | nRF9160 P0.22 / SPI MISO pin                 | gpio0 / spi3     |
74+------------+----------------------------+----------------------------------------------+------------------+
75| 23 / RX    | GPIO / UART pin	          | nRF9160 P0.23 / UART RX pin                  | gpio0 / uart1    |
76+------------+----------------------------+----------------------------------------------+------------------+
77| 24 / TX    | GPIO / UART pin            | nRF9160 P0.24 / UART TX pin                  | gpio0 / uart1    |
78+------------+----------------------------+----------------------------------------------+------------------+
79| VIN        | Power input                | Voltage input (maximum 10.2 V)               | -                |
80+------------+----------------------------+----------------------------------------------+------------------+
81| VBAT       | Power input                | Battery voltage input                        | -                |
82+------------+----------------------------+----------------------------------------------+------------------+
83| EN         | Power enable               | Power enable pin (pull low to disable power) | -                |
84+------------+----------------------------+----------------------------------------------+------------------+
85| USB        | Power input                | USB voltage input                            | gpio0            |
86+------------+----------------------------+----------------------------------------------+------------------+
87| 4          | GPIO                       | nRF9160 P0.04                                | gpio0            |
88+------------+----------------------------+----------------------------------------------+------------------+
89| 3          | GPIO                       | nRF9160 P0.03                                | gpio0            |
90+------------+----------------------------+----------------------------------------------+------------------+
91| 2          | GPIO                       | nRF9160 P0.02                                | gpio0            |
92+------------+----------------------------+----------------------------------------------+------------------+
93| 1          | GPIO                       | nRF9160 P0.01                                | gpio0            |
94+------------+----------------------------+----------------------------------------------+------------------+
95| 0          | GPIO                       | nRF9160 P0.00                                | gpio0            |
96+------------+----------------------------+----------------------------------------------+------------------+
97| 30         | GPIO                       | nRF9160 P0.30                                | gpio0            |
98+------------+----------------------------+----------------------------------------------+------------------+
99| 31         | GPIO                       | nRF9160 P0.31                                | gpio0            |
100+------------+----------------------------+----------------------------------------------+------------------+
101| SCL        | GPIO / I2C pin             | nRF9160 P0.26 / I2C SCL pin                  | gpio0 / i2c2     |
102+------------+----------------------------+----------------------------------------------+------------------+
103| SDA        | GPIO / I2C pin             | nRF9160 P0.27 / I2C SDA pin                  | gpio0 / i2c2     |
104+------------+----------------------------+----------------------------------------------+------------------+
105
106nRF9160 pins connected internally:
107
108+--------------+---------------------------------------+----------------------+
109| nRF9160 pin  | Function                              | Device-tree node     |
110+==============+=======================================+======================+
111| P0.05        | User button                           | button0              |
112+--------------+---------------------------------------+----------------------+
113| P0.10        | Red LED                               | led0 / pwm-led0      |
114+--------------+---------------------------------------+----------------------+
115| P0.11        | Green LED                             | led1 / pwm-led1      |
116+--------------+---------------------------------------+----------------------+
117| P0.12        | Blue LED                              | led2 / pwm-led2      |
118+--------------+---------------------------------------+----------------------+
119| P0.28        | Accelerometer Interrupt 1             | lis2dh12-accel       |
120+--------------+---------------------------------------+----------------------+
121| P0.29        | Accelerometer Interrupt 2             | lis2dh12-accel       |
122+--------------+---------------------------------------+----------------------+
123| P0.08        | SIM select pin                        | gpio0                |
124+--------------+---------------------------------------+----------------------+
125| P0.13 / AIN0 | Battery voltage measurement           | adc_0                |
126+--------------+---------------------------------------+----------------------+
127| P0.06        | USB - FTDI serial RX                  | uart0                |
128+--------------+---------------------------------------+----------------------+
129| P0.09        | USB - FTDI serial TX                  | uart0                |
130+--------------+---------------------------------------+----------------------+
131| P0.07        | USB - FTDI serial RTS                 | uart0                |
132|              | Charger enable pin (Icarus v2.0)      | gpio0 (Icarus v2.0)  |
133+--------------+---------------------------------------+----------------------+
134| P0.25        | USB - FTDI serial CTS                 | uart0                |
135|              | FLASH memory SPI CS pin (Icarus v2.0) | gpio0 (Icarus v2.0)  |
136+--------------+---------------------------------------+----------------------+
137
138Supported Features
139==================
140
141The actinius_icarus board configuration supports the following
142hardware features:
143
144+-----------+------------+----------------------+
145| Interface | Controller | Driver/Component     |
146+===========+============+======================+
147| ADC       | on-chip    | adc                  |
148+-----------+------------+----------------------+
149| CLOCK     | on-chip    | clock_control        |
150+-----------+------------+----------------------+
151| FLASH     | on-chip    | flash                |
152+-----------+------------+----------------------+
153| GPIO      | on-chip    | gpio                 |
154+-----------+------------+----------------------+
155| I2C(M)    | on-chip    | i2c                  |
156+-----------+------------+----------------------+
157| MPU       | on-chip    | arch/arm             |
158+-----------+------------+----------------------+
159| NVIC      | on-chip    | arch/arm             |
160+-----------+------------+----------------------+
161| PWM       | on-chip    | pwm                  |
162+-----------+------------+----------------------+
163| SPI(M/S)  | on-chip    | spi                  |
164+-----------+------------+----------------------+
165| SPU       | on-chip    | system protection    |
166+-----------+------------+----------------------+
167| UARTE     | on-chip    | serial               |
168+-----------+------------+----------------------+
169| ACCEL     | st         | lis2dh               |
170+-----------+------------+----------------------+
171
172SIM Selection
173=============
174
175The SIM choice (eSIM or nano-SIM) can be configured in Devicetree by adjusting
176the ``sim`` property in the ``sim_select`` node.
177
178Charger Enable/Disable
179======================
180
181Since hardware version 2.0 the charger can be disabled by adjusting the ``charger``
182property of the ``charger_enable`` device tree node.
183
184Security components
185===================
186
187- Implementation Defined Attribution Unit (`IDAU`_).  The IDAU is implemented
188  with the System Protection Unit and is used to define secure and non-secure
189  memory maps.  By default, all of the memory space  (Flash, SRAM, and
190  peripheral address space) is defined to be secure accessible only.
191- Secure boot.
192
193Building Secure/Non-Secure Zephyr applications
194==============================================
195
196The process requires the following steps:
197
1981. Build the Secure Zephyr application using ``-DBOARD=actinius_icarus`` and
199   ``CONFIG_TRUSTED_EXECUTION_SECURE=y`` in the application project configuration file.
2002. Build the Non-Secure Zephyr application using ``-DBOARD=actinius_icarus/ns``.
2013. Merge the two binaries together.
202
203If you are using Segger Embedded Studio v4.18 or later, the two binaries are built, merged, and
204burned automatically, unless you have disabled the feature.
205
206When building a Secure/Non-Secure application, the Secure application will
207have to set the IDAU (SPU) configuration to allow Non-Secure access to all
208CPU resources utilized by the Non-Secure application firmware. SPU
209configuration shall take place before jumping to the Non-Secure application.
210
211More information can be found in the `Icarus "Get Started" Guide`_ or the
212`Actinius Documentation Portal`_.
213
214References
215**********
216
217.. target-notes::
218
219.. _IDAU:
220   https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
221
222.. _Icarus Product Website:
223   https://www.actinius.com/icarus
224
225.. _Icarus "Get Started" Guide:
226   https://www.actinius.com/get-started
227
228.. _Actinius Documentation Portal:
229   https://docs.actinius.com
230