TESA Firmware SDK for Edge AI
A hands-on C firmware course on PSOC™ Edge E84: chip architecture and SDK layers, ModusToolbox™ + VS Code, peripherals, FreeRTOS, sensor data preparation for Edge AI, MQTT, BLE and a capstone.
Original content by Asst. Prof. Dr. Santi Nuratch, Department of Control Systems and Instrumentation Engineering, Faculty of Engineering, King Mongkut’s University of Technology Thonburi (KMUTT) (https://github.com/drsanti), supported by the Thai Embedded Systems Association (TESA). Imported from drsanti/TESAIoT-Courses — C1 (commit
287c218) under CC BY 4.0.
| Level | L3 · Independent |
| Status | alpha (imported, under review) |
| Estimated time | ~26 hours (sum of the source’s module estimates) |
| Audience | developer, student, educator |
| Language | Lessons are in Thai with English technical terms and English section headings; English lesson translations are pending. |
Before you start
Section titled “Before you start”Basic C (functions, pointers, structs and callbacks appear in every lesson) and comfort installing tools and using a terminal.
What you need
Section titled “What you need”- Board: TESAIoT PSoC Edge DevKit or Infineon KIT_PSE84_EVAL with a USB cable (module 1 needs no board).
- ModusToolbox™ 3.6+ per module 2 with its bundled Arm GNU Toolchain; to build the open-source tesaiot-pse84-devkit-sdk use exactly 3.6, as its README requires.
- Visual Studio Code with the ModusToolbox™ extensions.
- Firmware HEX
tesaiot-bitstream-<version>.hexand TESAIoT Flasher from TESAIoT_Hackathon (manifestlatest= 0.2.1 at commitf5f09a6). - Bitstream Studio (VS Marketplace 0.2.2 as of 2026-09-26) or the VSIX paired with the HEX.
- Host tools: a serial terminal, MQTTX or
mosquitto_sub, and a GATT explorer (nRF Connect / LightBlue / AIROC™ Bluetooth® Connect). - Your own Wi-Fi and MQTT broker (the one in Bitstream Studio or a public test broker). Never commit passwords.
All tool versions are recorded in the toolchain field of course.yaml.
Important: which firmware the code targets
Section titled “Important: which firmware the code targets”The C code in modules 3–8 is written for the TESAIoT Bitstream firmware (the source calls it “TESA Firmware SDK”), distributed as prebuilt HEX files with Bitstream Studio in TESAIoT_Hackathon. Its source code and headers are not public yet. As of 2026-09-26, names such as cm55_trigger_mqtt_connect, cm55_get_mqtt_status and cm55_ble_periph_* appear neither in the public SDK, nor in the TESAIoT_Hackathon repository (HEX, VSIX, installers and web apps only), nor in the TESAIoT Developer Hub search. Read those snippets for the concepts and call order, and do the labs with the HEX.
The open-source SDK available today is tesaiot-pse84-devkit-sdk (Apache-2.0). It is a different code base with different API names; each C1 lesson lists the examples in it that were checked to cover the same topic (commit ef72c1b). No public equivalent was found for the PWM brightness wrapper, cm55_uart_send, IMU fusion, the Bitstream SENSOR_CFG, the JSON telemetry encoder or the BLE scan path. The ble-flet host app used in modules 7–8 is not published either; use a generic GATT explorer.
Learning outcomes
Section titled “Learning outcomes”- Map Edge AI workloads to PSOC™ Edge E84 hardware domains and to the HAL/BSP, Driver API, Utility and Application layers.
- Create, build, flash and debug a firmware project with ModusToolbox™ and VS Code on a real board.
- Drive GPIO, UART, I²C, PWM and ADC through a driver API and split work into FreeRTOS tasks (queue, mutex, event group).
- Sample sensors at a fixed period, filter, normalise and window the data to prepare it for Edge AI.
- Connect a device to a broker over MQTT/MQTTs and to a nearby host over BLE, with evidence that it works.
- Deliver a mini project that combines sensing, RTOS and connectivity, with a README others can reproduce.
Modules
Section titled “Modules”How to learn
Section titled “How to learn”Read lesson 1 of each module, then do its lab (lesson 2). Keep the sheets in resources/ open while you work on the board, follow the Read alongside this chapter tables for online documents, and answer quiz.yaml before each lab.
The source was written for instructor-led training; the wording has been adapted for self-study, but machine-specific values (Wi-Fi, broker, COM port, HEX version) are yours to set. Start from the defaults the lessons give (for example 921600 baud or the broker inside Bitstream Studio) and the tool documentation. The text keeps the source names Course 1 / 2 / 3 (Course 1 = TESA Firmware SDK for Edge AI, Course 2 = Digital Twin, Course 3 = Product Industrial Design) and M01–M08 for modules.
Suggested order across the three courses
Section titled “Suggested order across the three courses”The source suggests Course 1 → Course 2 → Course 3: firmware on the board, then firmware ↔ Digital Twin ↔ cloud, then product design → Twin → physical prototype. If you only need Blender design work, modules 1–3 of Course 3 can come first; its Twin labs are much easier after Course 2.
- Course 1: TESA Firmware SDK for Edge AI
- Course 2: Firmware Development with the VS Code-based TESA Digital Twin
- Course 3: Product Industrial Design (Blender & Twin)
Source and licence
Section titled “Source and licence”Imported from drsanti/TESAIoT-Courses folder C1/ at commit 287c218. TESA funded the original work and holds the rights; it is published here under CC BY-NC 4.0. TESA Open Knowledge kept the author’s teaching text; it added the module/lesson structure, front matter, quizzes, firmware and tool notes, fixed links for the new layout, and reworded classroom-delivery phrases (training round, grading) for open learning. Third-party tools and documents keep their own licences.
How to cite TESA
Section titled “How to cite TESA”If you reuse this course in slides, teaching material, a course specification, handouts or a code repository, credit it with:
“TESA Firmware SDK for Edge AI” from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0
If you change the material, add “(adapted)” and keep the original author credit:
Original content by Asst. Prof. Dr. Santi Nuratch, Department of Control Systems and Instrumentation Engineering, Faculty of Engineering, King Mongkut’s University of Technology Thonburi (KMUTT) (https://github.com/drsanti), supported by the Thai Embedded Systems Association (TESA)
The Bitstream Studio (VS Code) and Ternion tools used in this course are by Asst. Prof. Dr. Santi Nuratch (KMUTT).
Citing TESA does not mean that TESA or Infineon endorses your course or work. More formats and examples (slides, course specifications, handouts, code repositories) are in ATTRIBUTION.md.
Companion videos for this course
Watch on YouTube (opens in a new tab)
-
Download (from TESA Developer Hub), Build and Program via ModusToolbox to TESAIoT Dev Kit Thai Embedded Systems Association (TESA) -
Remote Flashing for PSoC Edge AI Kit via TESA Developer Hub Thai Embedded Systems Association (TESA) -
Software Development Process - EP01 : Overall Software Development Process Thai Embedded Systems Association (TESA) -
Software Development Process - EP03 : System Requirements Thai Embedded Systems Association (TESA) -
Software Development Process - EP04 : Software Requirements (ต่อ) Thai Embedded Systems Association (TESA)
Videos by Thai Embedded Systems Association (TESA) · The whole series in the playlist AIoT Foundation
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0
Content is licensed CC BY-NC 4.0. Reuse it non-commercially and credit the Thai Embedded Systems Association (TESA) every time. · How to cite TESA