|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
|
เมื่อจบบทนี้ จะตอบได้ 3 ข้อโดยไม่ต้องเปิดค้น: บอร์ดนี้ทำอะไรได้บ้าง ความสามารถแต่ละอย่างเป็นของโมดูลใด และเมื่อต้องการทำสิ่งหนึ่ง ต้องเปิดบทไหน บทนี้เป็นบทเดียวในเว็บไซต์นี้ที่ไม่มีอะไรให้รัน — เป็นแผนที่ ไม่ใช่ Tutorial
สิ่งที่อยู่ในแพ็กเกจมี 4 อย่าง
archive ที่ส่งมอบมามี 6 ตัว (lib/manifest.txt) — 3 ตัวลิงก์เข้ากับ CM55 และ 3 ตัวลิงก์เข้ากับ CM33_NS ทั้ง 2 คอร์ไม่เข้ากันในระดับ ABI การลิงก์ผิดคอร์จึงล้มเหลวตอนลิงก์ ไม่ใช่ตอนรัน
| โมดูล | Archive | คอร์ | symbol ที่ export | ทำอะไร | เริ่มอ่านที่ |
|---|---|---|---|---|---|
| Edge AI | libbento_edge_ai.a | CM55 | 39 | เอนจินอนุมานบนอุปกรณ์: ทะเบียนโมเดล, ตัวจัดเส้นทางป้อนข้อมูลจากเซนเซอร์ที่ทำให้โมเดลหลายตัวทำงานพร้อมกันได้ และตัวโหลดโมเดลจาก manifest ตอนรัน | Edge AI |
| IPC Core | libbento_ipc.a | CM55 | 58 | บริการภายในข้ามคอร์: sensor hub, LCD, UI และการกระจายงาน | หน้า UI และ IPC |
| CM55 Core | libbento_cm55.a | CM55 | 30 | การเปิดใช้งานจอแสดงผล, ระนาบควบคุมการเชื่อมโมเดล และขั้นตอนการ provision HSM ตามที่ใช้งานจริง | หน้า UI และ IPC |
| TESAIoT HSM | libbento_hsm.a | CM33_NS | 18 | การลงทะเบียน OPTIGA Trust M: คู่กุญแจของอุปกรณ์, CSR และเส้นทาง Protected Update ที่แยกออกมา | ความปลอดภัย / HSM |
| BLE NUS | libbento_secure.a | CM33_NS | 87 | agent ของ BLE NUS ที่รับส่งโปรโตคอล Bento Buddy | BLE / Bento Buddy |
| MicroPython Secure | libbento_mpy.a | CM33_NS | 46 | โปรโตคอลสาย TACP และการจัดการข้อมูลรับรอง WiFi ตามที่ชั้น MicroPython ใช้ (เฉพาะ mtb-mpy) | ชุดเอกสาร mtb-mpy |
ส่วนของ MicroPython Secure อยู่ที่ MicroPython Agent (BentoClaw)
สิ่งที่ไม่ได้เป็นไลบรารี และเป็นเรื่องที่ต้องรู้ก่อนไปหา ได้แก่ อุปกรณ์ต่อพ่วง (เซนเซอร์, LED, ปุ่ม, radar, บอร์ดฐาน QWA309) และการเชื่อมต่อ (WiFi, MQTT, mTLS) ทั้ง 2 ส่วนส่งมอบมาในรูป ซอร์สของเทมเพลต ไม่มี libbento_peripherals.a และไม่มีไลบรารีการเชื่อมต่อ อยู่ที่ใดเลย แผนที่ว่า API แต่ละตระกูลอยู่ที่ส่วนใดของเว็บไซต์นี้อยู่ที่ API ของอุปกรณ์ต่อพ่วงอยู่ที่ใด และ API แต่ละตัวอยู่ที่ใด ส่วนที่เก็บข้อมูลกับข้อมูลรับรองอยู่ที่ ที่เก็บข้อมูลและข้อมูลรับรอง
| อยากทำ | เปิดที่ | หมายเหตุ |
|---|---|---|
| ทำให้บอร์ดรันโค้ดของตัวเองเป็นครั้งแรก | A1 — จากไฟล์ zip ถึงโปรแกรมแรก | unpack → build → flash → โปรแกรมแรก |
| อ่านค่าเซนเซอร์ | J1 — บัสของเซนเซอร์และ lock ของมัน แล้ว อุปกรณ์ต่อพ่วงโดยสรุป | bus lock มาก่อนเสมอ |
| ขับ LED หรืออ่านปุ่ม | อุปกรณ์ต่อพ่วงโดยสรุป (pq_pins) | brightness() เป็นกลไก 2 แบบ มีเพียงสามขาที่หรี่ด้วยฮาร์ดแวร์ได้ |
| รู้ว่าเซนเซอร์บนหน้าจออัปเดตอย่างไร | J3 — task ดันข้อมูลอัตโนมัติกับ sensor hub | auto-push task เขียนลง IPC sensor hub |
| ใช้ radar | J6 — เรดาร์ | |
| รันโมเดล Edge AI | E1 — Select, confirm, start: REQUESTED เทียบกับ ACTIVE | REQUESTED ไม่เท่ากับ ACTIVE |
| รันหลายโมเดลพร้อมกัน | E2 — Parallel set และการวนถามผลลัพธ์ | |
| หยุด/ถอดโมเดล หรือโหลดโมเดลที่ staged ไว้ | E3 — Stop, unload และโมเดล staged | |
| หาสาเหตุที่อนุมานแล้วผลไม่เข้าท่า | E4 — การอ่านข้อมูลวินิจฉัยของ Edge AI | |
| ต่อ WiFi | C1 — WiFi: ที่เก็บข้อมูลรับรอง 2 แห่งกับการเชื่อมต่ออัตโนมัติตอนบูต | ที่เก็บข้อมูลรับรองมี 2 แห่ง |
| สั่ง scan/connect จากหน้าจอ | C2 — WiFi จาก UI ผ่าน IPC | |
| ส่งข้อมูลขึ้นคลาวด์ | C3 — TESAIoT cloud: ไฟล์ config → MQTT task → broker | |
| ใช้ตัวตน mTLS ที่ยืนอยู่บนชิปนิรภัย | C4 — mTLS: ตัวตนของ TLS ที่ยึดกับ OPTIGA | |
| คุยกับ OPTIGA Trust M | D1 — วินัยการเข้าถึงชิป: gate, lock, touch-hold | ระเบียบการเข้าถึงมาก่อนการเรียกใด ๆ |
| ลงทะเบียนอุปกรณ์ / ออก CSR / Protected Update | D2 — การลงทะเบียนและ Protected Update ตั้งแต่ต้นจนจบ | |
| เพิ่มหน้าจอใหม่ | F1 — การเพิ่มหน้าจอ: 3 ไฟล์ กับความจริงเรื่อง Makefile | ต้องต่อสายครบทั้งสามที่ หรือไม่ต่อเลย |
| สั่ง widget จากอีกคอร์หนึ่ง | F2 — การขับ widget จาก MicroPython ผ่าน IPC | |
| เก็บไฟล์หรือค่าตั้งไว้ข้ามการรีบูต | G1 — bento_storage กับที่เก็บข้อมูลรับรองฝั่ง C | |
| เปิด BLE / ต่อกับ Bento Buddy | I1 — การ bring-up BLE และกฎวิทยุเดียว | วิทยุมีชุดเดียว WiFi กับ BLE ใช้พร้อมกันไม่ได้ |
| เข้าใจว่าเฟิร์มแวร์บูตขึ้นมาอย่างไร | B1 — เดินดูลำดับการบูตของ CM33_NS แล้ว B2 — การบูต CM55 จนถึงเฟรมแรก | |
| แปลความบรรทัดบนคอนโซลหรือรหัส LED | ภาคผนวก W — แผนที่สัญญาณ | อยู่ในภาคผนวก |
| รู้ว่าอะไรเคยทำให้คนอื่นเสียเวลามาแล้ว | ภาคผนวก X — กับดักและ anti-pattern | |
| รู้ว่าตัวเองต้องจัดหา symbol ใดให้ archive | ภาคผนวก Y — symbol ที่ผู้ใช้ไลบรารีต้องจัดหา และ symbol ที่เขียนทับได้ | หนึ่งหัวข้อต่อหนึ่งโมดูล |
มีสามที่ และตั้งใจให้ต่างกัน
เปิดส่วนของมันในแถบด้านข้าง สังเกตรูปแบบ: Tutorial มาก่อน คู่มืออ้างอิง API มาหลัง ทุกส่วนเรียงแบบนี้เหมือนกันหมด
หาหัวข้อ ที่มา หรือ ตัวอย่าง (เขียนขึ้นเอง) บนหน้านั้น
บทถัดไป พาไปจากไฟล์ zip ถึงโปรแกรมแรกที่เขียนเอง ซึ่งเป็นจุดที่แผนที่ข้างต้นเริ่มมีประโยชน์จริง