|
SDK for TESAIoT Dev Kit
API reference & tutorials (ModusToolbox)
|
By the end of this chapter you can answer three questions without looking anything up: what this board can do, which module owns each capability, and which chapter to open when you want to do a particular thing. This is the one chapter on the site with nothing to run — it is a map, not a lesson.
Four things ship in the package:
Six archives ship (lib/manifest.txt) — three link into CM55, three into CM33_NS. The two cores are not ABI-compatible, so linking one into the wrong core's image fails at the link step rather than at run time.
| Module | Archive | Core | Exported symbols | What it does | Start at |
|---|---|---|---|---|---|
| Edge AI | libbento_edge_ai.a | CM55 | 39 | The on-device inference engine: the model registry, the sensor feed router that keeps several models running at once, and the run-time loader that builds a model from a staged manifest | Edge AI |
| IPC Core | libbento_ipc.a | CM55 | 58 | Core IPC management of internal services: sensor hub, LCD, UI and service dispatch | UI Pages & IPC |
| CM55 Core | libbento_cm55.a | CM55 | 30 | CM55 display bring-up, the model-link control plane and the HSM provisioning flow as operated | UI Pages & IPC |
| TESAIoT HSM | libbento_hsm.a | CM33_NS | 18 | OPTIGA Trust M enrolment: device keypair, CSR and the isolated Protected Update path | Security / HSM |
| BLE NUS | libbento_secure.a | CM33_NS | 87 | The BLE NUS agent carrying the Bento Buddy protocol | BLE / Bento Buddy |
| MicroPython Secure | libbento_mpy.a | CM33_NS | 46 | The TACP wire protocol and WiFi credential management, as used by the MicroPython layer (mtb-mpy only) | the mtb-mpy set |
What is not a library, and is worth knowing before you go looking: the peripherals (sensors, LEDs, buttons, radar, the QWA309 base board) and connectivity (WiFi, MQTT, mTLS). Both ship as template source. There is no libbento_peripherals.a and no connectivity library anywhere. The map from API family to the section that homes it is Where the peripheral APIs live and Where the APIs live; storage and credentials are Storage & Credentials.
| I want to | Open | Note |
|---|---|---|
| get the board running my own code for the first time | A1 — From the zip to your first program | unpack → build → flash → first program |
| read a sensor | J1 — The sensor bus and its lock, then Peripherals at a glance | the bus lock comes first, always |
| drive an LED or read a button | Peripherals at a glance (pq_pins) | brightness() is two mechanisms; only three pins dim in hardware |
| know how the on-screen sensor values get there | J3 — The auto-push task and the sensor hub | the auto-push task writes the IPC sensor hub |
| use the radar | J6 — Radar | |
| run an Edge AI model | E1 — Select, confirm, start: REQUESTED versus ACTIVE | REQUESTED is not ACTIVE |
| run several models at once | E2 — Parallel sets and result polling | |
| stop, unload or load a staged model | E3 — Stop, unload, and staged models | |
| work out why inference looks wrong | E4 — Reading the Edge AI diagnostics | |
| get onto WiFi | C1 — WiFi: the two credential stores and boot auto-connect | there are two credential stores |
| scan and connect from the screen | C2 — WiFi from the UI over IPC | |
| publish to the cloud | C3 — TESAIoT cloud: config file → MQTT task → broker | |
| use an mTLS identity held in the secure element | C4 — mTLS: the OPTIGA-backed TLS identity | |
| talk to the OPTIGA Trust M | D1 — The chip-access discipline: gate, lock, touch-hold | the access discipline precedes every call |
| enrol a device, issue a CSR, run a Protected Update | D2 — Enrolment and Protected Update end to end | |
| add a screen | F1 — Adding a screen: three files, plus the Makefile truth | all three wirings or none |
| drive a widget from the other core | F2 — Driving widgets from MicroPython over IPC | |
| keep files or settings across reboots | G1 — bento_storage and the C credential store | |
| bring up BLE / pair with Bento Buddy | I1 — BLE bring-up and the single-RF rule | one radio: WiFi and BLE are mutually exclusive |
| understand how the firmware boots | B1 — CM33_NS boot walk-through, then B2 — CM55 boot to first frame | |
| decode a console line or an LED code | Appendix W — The signal atlas | it is in the Appendices |
| find out what has already cost somebody a day | Appendix X — Traps and anti-patterns | |
| know which symbols you must supply to an archive | Appendix Y — Consumer-provided symbols and overridables | one section per module |
Three places, deliberately different:
Open its section in the sidebar and notice the shape: tutorials first, API reference after. Every section is ordered that way.
Look for the Origin or Example (authored) heading on the page.
The next chapter takes you from the zip to a first program of your own, which is where the map above starts paying.