Skip to content

Commit 093f2f0

Browse files
committed
Document update on bare metal supported APIs.
1 parent d001b27 commit 093f2f0

File tree

3 files changed

+214
-82
lines changed

3 files changed

+214
-82
lines changed

docs/api/api.md

Lines changed: 93 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,41 @@
11
# Full API list
22
<!--these are now just the APIs - do I want to add the tutorials?-->
33

4+
This document lists Mbed OS components supported APIs. In general, it lists both common APIs (RTOS and the bare metal profile supported), and RTOS only supported APIs, but occasionally, It has either one.
5+
46
## RTOS and event handling
57

68
The Mbed OS RTOS capabilities include managing objects such as threads, synchronization objects and timers. It also provides interfaces for attaching an application-specific idle hook function, reads the OS tick count and implements functionality to report RTOS errors.
79

10+
Most of the Mbed OS APIs are also supported with the Mbed OS bare metal profile.
811

912
<table>
1013
<tbody>
1114
<tr>
12-
<td><a href="rtos-apis.html">Thread</a></td>
13-
<td><a href="thisthread.html">ThisThread</a></td>
14-
<td><a href="mutex.html">Mutex</a></td>
1515
<td><a href="semaphore.html">Semaphore</a></td>
16+
<td><a href="userallocatedevent.html">UserAllocatedEvent</a></td>
17+
<td><a href="eventflags.html">EventFlags</a></td>
18+
<td><a href="kernel-interface-functions.html">Kernel interface functions</a></td>
1619
</tr>
1720
<tr>
18-
<td><a href="queue.html">Queue</a></td>
21+
<td><a href="thisthread.html">ThisThread</a></td>
22+
<td><a href="event.html">Event</a></td>
1923
<td><a href="eventqueue.html">EventQueue</a></td>
20-
<td><a href="userallocatedevent.html">UserAllocatedEvent</a></td>
21-
<td><a href="mail.html">Mail</a></td>
2224
</tr>
25+
</tbody>
26+
</table>
27+
28+
### RTOS only supported APIs
29+
<table>
30+
<tbody>
2331
<tr>
24-
<td><a href="eventflags.html">EventFlags</a></td>
25-
<td><a href="event.html">Event</a></td>
32+
<td><a href="rtos-apis.html">Thread</a></td>
33+
<td><a href="mutex.html">Mutex</a></td>
34+
<td><a href="queue.html">Queue</a></td>
35+
</tr>
36+
<tr>
37+
<td><a href="mail.html">Mail</a></td>
2638
<td><a href="conditionvariable.html">Conditionvariable</a></td>
27-
<td><a href="kernel-interface-functions.html">Kernel interface functions</a></td>
2839
</tr>
2940
</tbody>
3041
</table>
@@ -121,6 +132,12 @@ The data storage APIs include file system APIs, for file system operations, and
121132
<td><a href="spi-flash-block-device.html">SPI Flash block device</a></td>
122133
<td><a href="qspifblockdevice.html">QSPIFBlockDevice</a></td>
123134
</tr>
135+
</tbody>
136+
</table>
137+
138+
### RTOS only supported APIs
139+
<table>
140+
<tbody>
124141
<tr>
125142
<td><a href="psa-internal-storage.html">PSA internal storage</a></td>
126143
<td><a href="psa-protected-storage.html">PSA protected storage</a></td>
@@ -131,7 +148,32 @@ The data storage APIs include file system APIs, for file system operations, and
131148

132149
## Connectivity
133150

134-
### Network interface
151+
### Common APIs
152+
<table>
153+
<tbody>
154+
<tr>
155+
<td><a href="#ble">BLE</a></td>
156+
<td><a href="#nfc">NFC</a></td>
157+
<td><a href="#lorawan">LoRaWAN</a></td>
158+
</tr>
159+
</tbody>
160+
</table>
161+
162+
### RTOS only supported APIs
163+
<table>
164+
<tbody>
165+
<tr>
166+
<td><a href="#network-interface">Network interface</a></td>
167+
<td><a href="#socket">Socket</a></td>
168+
</tr>
169+
<tr>
170+
<td><a href="#secure-socket">Secure socket</a></td>
171+
<td><a href="#dns">DNS</a></td>
172+
</tr>
173+
</tbody>
174+
</table>
175+
176+
#### Network interface
135177

136178
Network interfaces are the application level APIs where users choose the driver, connectivity method and IP stack. These include ethernet, Wi-Fi, cellular and mesh interfaces.
137179

@@ -153,7 +195,7 @@ Network interfaces are the application level APIs where users choose the driver,
153195
</tbody>
154196
</table>
155197

156-
### Socket
198+
#### Socket
157199

158200
Socket APIs include the application programming interface for IP networking. In Mbed OS, this API supports both TCP and UDP protocols.
159201

@@ -169,7 +211,7 @@ Socket APIs include the application programming interface for IP networking. In
169211
</tbody>
170212
</table>
171213

172-
### Secure socket
214+
#### Secure socket
173215

174216
<table>
175217
<tbody>
@@ -180,7 +222,7 @@ Socket APIs include the application programming interface for IP networking. In
180222
</tbody>
181223
</table>
182224

183-
### DNS
225+
#### DNS
184226

185227
<table>
186228
<tbody>
@@ -190,7 +232,7 @@ Socket APIs include the application programming interface for IP networking. In
190232
</tbody>
191233
</table>
192234

193-
### BLE
235+
#### BLE
194236

195237
Bluetooth low energy (BLE) is a low power wireless technology standard for building personal area networks. Typical applications of BLE are health care, fitness trackers, beacons, smart home, security, entertainment, proximity sensors, industrial and automotive.
196238

@@ -210,7 +252,7 @@ Bluetooth low energy (BLE) is a low power wireless technology standard for build
210252
</tbody>
211253
</table>
212254

213-
### NFC
255+
#### NFC
214256

215257
You can use Near-Field Communication (NFC), a short-range radio technology, for use cases such as contactless payments, access control and device pairing.
216258

@@ -223,7 +265,7 @@ You can use Near-Field Communication (NFC), a short-range radio technology, for
223265
</tbody>
224266
</table>
225267

226-
### LoRaWAN
268+
#### LoRaWAN
227269

228270
Arm Mbed OS provides a native network stack for LoRaWAN. LoRaWAN is a technology designed for low-power battery-powered devices. These devices operate in an unlicensed spectrum, creating high density wide-area networks.
229271

@@ -247,10 +289,9 @@ The Mbed OS classes providing USB peripheral functionality, also known as USB co
247289
<td><a href="usbaudio.html">USBAudio</a></td>
248290
<td><a href="ubshid.html">USBHID</a></td>
249291
<td><a href="usbcdc.html">USBCDC</a></td>
250-
<td><a href="usbcdc-ecm.html">USBCDC_ECM</a></td>
292+
<td><a href="usbmsd.html">USBMSD</a></td>
251293
</tr>
252294
<tr>
253-
<td><a href="usbmsd.html">USBMSD</a></td>
254295
<td><a href="usbmidi.html">USBMIDI</a></td>
255296
<td><a href="usbmouse.html">USBMouse</a></td>
256297
<td><a href="usbkeyboard.html">USBKeyboard</a></td>
@@ -259,16 +300,28 @@ The Mbed OS classes providing USB peripheral functionality, also known as USB co
259300
</tbody>
260301
</table>
261302

303+
### RTOS only supported APIs
304+
<table>
305+
<tbody>
306+
<tr>
307+
<td><a href="usbcdc-ecm.html">USBCDC_ECM</a></td>
308+
</tr>
309+
</tbody>
310+
</table>
311+
262312
## Security
263313

264314
With [Arm Mbed TLS](security.html), a comprehensive SSL/TLS solution, you can include cryptographic and SSL/TLS capabilities in your code.
265315

316+
### RTOS only supported APIs
266317
<table>
267318
<tbody>
268319
<tr>
269320
<td><a href="security-apis.html">PSA initial attestation</a></td>
270321
<td><a href="psa-lifecycle.html">PSA lifecycle</a></td>
271322
<td><a href="mbed-crypto.html">Mbed Crypto</a></td>
323+
</tr>
324+
<tr>
272325
<td><a href="tls.html">TLS</a></td>
273326
<td><a href="devicekey.html">DeviceKey</a></td>
274327
</tr>
@@ -282,16 +335,24 @@ With [Arm Mbed TLS](security.html), a comprehensive SSL/TLS solution, you can in
282335
<tr>
283336
<td><a href="power-apis.html">Power management (sleep)</a></td>
284337
<td><a href="deepsleeplock.html">DeepSleepLock</a></td>
285-
<td><a href="idle-loop.html">Idle loop</a></td>
338+
<td><a href="lowpowerticker.html">LowPowerTicker</a></td>
286339
</tr>
287340
<tr>
288-
<td><a href="lowpowerticker.html">LowPowerTicker</a></td>
289341
<td><a href="lowpowertimeout.html">LowPowerTimeout</a></td>
290342
<td><a href="lowpowertimer.html">LowPowerTimer</a></td>
291343
</tr>
292344
</tbody>
293345
</table>
294346

347+
### RTOS only supported APIs
348+
<table>
349+
<tbody>
350+
<tr>
351+
<td><a href="idle-loop.html">Idle loop</a></td>
352+
</tr>
353+
</tbody>
354+
</table>
355+
295356
## Memory
296357

297358
<table>
@@ -300,6 +361,14 @@ With [Arm Mbed TLS](security.html), a comprehensive SSL/TLS solution, you can in
300361
<td><a href="mbed-statistics.html">mbed_stats (Mbed statistics)</a></td>
301362
<td><a href="mpu-management.html">mpug_mgmt (MPU management)</a></td>
302363
<td><a href="memory-tracing.html">mbed_mem_trace (Memory tracing)</a></td>
364+
</tr>
365+
</tbody>
366+
</table>
367+
368+
### RTOS only supported APIs
369+
<table>
370+
<tbody>
371+
<tr>
303372
<td><a href="memorypool.html">MemoryPool</a></td>
304373
</tr>
305374
</tbody>
@@ -344,3 +413,7 @@ If you're moving your program from Mbed OS 5 to 6, you will need to replace depr
344413
| Deprecated API | Replaced by |
345414
| - | - |
346415
| Serial | [BufferedSerial](../apis/bufferedserial.html), [UnbufferedSerial](../apis/unbufferedserial.html) |
416+
417+
**_Note_**
418+
- The components webpage is linked here most probably shows an example based on RTOS.
419+
- When the component is listed only "RTOS only supported APIs" then it likely to work only on RTOS.

docs/program-setup/bare_metal/bare_metal.md

Lines changed: 121 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,125 @@ There are many use cases for IoT devices. Different use cases require different
44

55
<span class="images">![Mbed OS bare metal profile block diagram](../../images/bare_metal_block_diagram.png)<span>Mbed OS bare metal profile block digram</span></span>
66

7-
The Mbed OS bare metal profile is a compact profile of Mbed OS without an RTOS. The Mbed OS bare metal profile is API compatible with Mbed OS and supports a subset of Mbed OS features, such as analog I/O, digital I/O, timers and digital interfaces, such as SPI, I2C, Serial and CAN. Mbed Studio, Mbed CLI and the Mbed Online Compiler all support the Mbed OS bare metal profile.
7+
The Mbed OS bare metal profile is a compact profile of Mbed OS without an RTOS. Most of the Mbed OS APIs are compatible with bare metal profile and below table shows the availability of various Mbed OS features and components on bare metal profile.
88

9-
| Features | Mbed OS bare metal | Mbed OS |
10-
| --- | --- | --- |
11-
| Analog I/O | Available | Available |
12-
| Digital I/O | Available | Available |
13-
| Digital interfaces | Available | Available |
14-
| Timers | Available | Available |
15-
| Development tools<br> (For example, Mbed CLI, Mbed Studio, Mbed Online Compiler, GCC, Arm Compiler 6 and so on) | Available | Available |
16-
| Support for Mbed Enabled development boards | Available | Available |
17-
| RTOS | Not available | Available |
18-
| Storage | Ecosystem libraries | Available |
19-
| Mbed TLS | Not available | Available |
20-
| Mbed PSA | Not available | Available |
21-
22-
To begin using the Mbed OS bare metal profile from Mbed OS 2, please follow our [instructions](../tutorials/migrating-to-mbed-os-5.html).
9+
<table>
10+
<thead>
11+
<tr>
12+
<th colspan="2">Features/Components</th>
13+
<th>Mbed OS bare metal</th>
14+
<th> Mbed OS RTOS</th>
15+
</tr>
16+
</thead>
17+
<tbody>
18+
<tr>
19+
<td rowspan="8">Mbed OS Core</td>
20+
<td >Drivers</td>
21+
<td>Available (except USBCDC_ECM)</td>
22+
<td>Available</td>
23+
</tr>
24+
<tr>
25+
<td >Events</td>
26+
<td>Available</span></td>
27+
<td>Available</td>
28+
</tr>
29+
<tr>
30+
<td >HAL APIs</td>
31+
<td>Available</span></td>
32+
<td>Available</td>
33+
</tr>
34+
<tr>
35+
<td >Platform APIs</td>
36+
<td>Available</span></td>
37+
<td>Available</td>
38+
</tr>
39+
<tr>
40+
<td >RTOS</td>
41+
<td><span style="color:red">Not Available</span></span></td>
42+
<td>Available</td>
43+
</tr>
44+
<tr>
45+
<td >RTOS APIs</td>
46+
<td>Available</td>
47+
<td>Available</td>
48+
</tr>
49+
<tr>
50+
<td >Storage</td>
51+
<td>Available</td>
52+
<td>Available</td>
53+
</tr>
54+
<tr>
55+
<td >Development tools<br> (For example, Mbed CLI, Mbed Studio, Mbed Online Compiler, GCC, Arm Compiler 6 and so on)</td>
56+
<td>Available</td>
57+
<td>Available</td>
58+
</tr>
59+
<tr>
60+
<td rowspan="9">Connectivity</td>
61+
<td >802.15.4_RF</td>
62+
<td><span style="color:red">Not Available</span></td>
63+
<td>Available</td>
64+
</tr>
65+
<tr>
66+
<td>Wifi</td>
67+
<td><span style="color:red">Not Available</span></td>
68+
<td>Available</td>
69+
</tr>
70+
<tr>
71+
<td>Cellular</td>
72+
<td><span style="color:red">Not Available</span></td>
73+
<td>Available</td>
74+
</tr>
75+
<tr>
76+
<td>LWIP stack</td>
77+
<td><span style="color:red">Not Available</span></td>
78+
<td>Available</td>
79+
</tr>
80+
<tr>
81+
<td>Nanostack</td>
82+
<td><span style="color:red">Not Available</span></td>
83+
<td>Available</td>
84+
</tr>
85+
<tr>
86+
<td>Network Socket</td>
87+
<td><span style="color:red">Not Available</span></td>
88+
<td>Available</td>
89+
</tr>
90+
</tr>
91+
<tr>
92+
<td>BLE</td>
93+
<td>Available (Except<br> TARGET_NORDIC_CORDIO)</td>
94+
<td>Available</td>
95+
</tr>
96+
<tr>
97+
<td>Lorawan</td>
98+
<td>Available</td>
99+
<td>Available</td>
100+
</tr>
101+
<tr>
102+
<td>NFC</td>
103+
<td>Available</td>
104+
<td>Available</td>
105+
</tr>
106+
<tr>
107+
<td rowspan="4">Security</td>
108+
<td>PSA</td>
109+
<td><span style="color:red">Not Available</span></td>
110+
<td>Available</td>
111+
</tr>
112+
<tr>
113+
<td>Cryptocell</td>
114+
<td>Available</td>
115+
<td>Available</td>
116+
</tr>
117+
<tr>
118+
<td>Device key</td>
119+
<td>Available</td>
120+
<td>Available</td>
121+
</tr>
122+
<tr>
123+
<td>Mbed TLS</td>
124+
<td>Available</td>
125+
<td>Available</td>
126+
</tr>
127+
</tbody>
128+
</table>

0 commit comments

Comments
 (0)