SDK เฟิร์มแวร์สำหรับชุดบอร์ด BENTO PSoC Edge ให้สี่อย่าง ได้แก่ ไลบรารีโมดูลที่คอมไพล์ มาแล้วหกตัว ที่ลิงก์เข้ากับแอปพลิเคชันของผู้ใช้โดยตรง เทมเพลตแอปพลิเคชันที่ build ได้จริง ซึ่งลิงก์ไลบรารีเหล่านั้นและบูตขึ้นมาเป็นเฟิร์มแวร์ที่ใช้งานได้ Tutorial ที่จัดกลุ่มตามฟีเจอร์ และ คู่มืออ้างอิง API ที่มีตัวอย่างโค้ด กำกับทุกฟังก์ชัน ทั้งหมดอยู่ในเว็บไซต์เดียว โดย Tutorial อยู่คู่กับฟีเจอร์ของตน และคู่มืออ้างอิงอยู่ท้ายสุดของทุกส่วน
- บอร์ดทำอะไรได้ และความสามารถนั้นเป็นของโมดูลใด
| ความสามารถ | โมดูลที่ลิงก์ | คอร์ | เริ่มอ่านที่ |
| อนุมาน Edge AI บนอุปกรณ์ — ทะเบียนโมเดล การป้อนข้อมูลแบบขนาน การโหลดตอนรัน | libbento_edge_ai.a | CM55 | Edge AI |
| หน้าจอและ widget, บริการข้ามคอร์ (sensor hub, LCD, UI) | libbento_ipc.a, libbento_cm55.a | CM55 | หน้า UI และ IPC |
| secure element: คู่กุญแจของอุปกรณ์, CSR, Protected Update | libbento_hsm.a | CM33_NS | ความปลอดภัย / HSM |
| BLE — agent ของ NUS ที่รับส่งโปรโตคอล Bento Buddy | libbento_secure.a | CM33_NS | BLE / Bento Buddy |
| โปรโตคอลสาย TACP และข้อมูลรับรอง WiFi ฝั่ง MicroPython | libbento_mpy.a (เฉพาะ mtb-mpy) | CM33_NS | ชุดเอกสาร mtb-mpy |
| เซนเซอร์หกตัว, LED, ปุ่ม, radar, บอร์ดฐาน QWA309 | ซอร์สของเทมเพลต — ไม่มี archive | ทั้งสองคอร์ | อุปกรณ์ต่อพ่วง: เซนเซอร์และ GPIO |
| WiFi, MQTT, mTLS ที่ยืนอยู่บน OPTIGA | ซอร์สของเทมเพลต — ไม่มี archive | CM33_NS | การเชื่อมต่อ: WiFi และคลาวด์ |
| LittleFS และที่เก็บข้อมูลรับรอง | ซอร์สของเทมเพลต + libbento_mpy.a | CM33_NS | ที่เก็บข้อมูลและข้อมูลรับรอง |
- Note
- เครดิต: โมเดล Edge AI เป็นของ Infineon ไม่ใช่ของ TESAIoT โมเดล motion, audio และ radar ที่เฟิร์มแวร์นี้ส่งมอบ (proj_cm55/modules/ai_models/model_*.c) เป็นผลลัพธ์ที่ export จาก DEEPCRAFT™ Studio และมีลิขสิทธิ์ของ Imagimob AB ซึ่งเป็นบริษัทในเครือ Infineon Technologies ส่วนโมเดล Siren, Cough และ Factory Alarm เป็น DEEPCRAFT™ Ready Model ของผู้สร้างรายเดียวกัน เผยแพร่โดย Infineon อยู่ภายใต้ Imagimob AI Model Evaluation License Agreement และไม่ได้แจกจ่ายต่อในแพ็กเกจนี้ TESAIoT ไม่ได้ฝึกและไม่ได้เป็นเจ้าของโมเดลใดเลย สิ่งที่เป็นของ TESAIoT คือ engine ที่ครอบอยู่ ซอร์สของโมเดลที่ส่งมอบมาระบุเพียง All Rights Reserved โดยไม่มีการให้สิทธิ์ใด ๆ เขียนไว้ในไฟล์ ที่นี่จึงเป็นการให้เครดิต ไม่ใช่การส่งต่อสิทธิ์ การใช้งานที่นี่เป็นไปเพื่อการวิจัยและการอบรม ไม่ใช่การใช้เชิงพาณิชย์ ผู้ที่ต้องการสิทธิ์การใช้งานต้องขอจาก Infineon และ Imagimob โดยตรง ผู้ที่ต้องการฝึกโมเดลของตนเองเริ่มได้ที่ https://www.infineon.com/design-resources/embedded-software/deepcraft-edge-ai-solutions/deepcraft-studio รายละเอียดฉบับเต็มและการอ้างอิงข้อสัญญาอยู่ที่ THIRD_PARTY_NOTICES.md §2.2, §2.4 และ §4.3
archive ทั้งหกลงลายเซ็นไว้ และ lib/verify.sh ตรวจกับ lib/manifest.txt ได้ แต่ละตัว มี include/, api.txt (บัญชี symbol ที่ export ออกมา), consumer_must_provide.txt และ overridable.txt ของตนเอง อุปกรณ์ต่อพ่วงและการเชื่อมต่อ ไม่ได้ เป็นไลบรารี ทั้งสองส่วนส่งมอบมาในรูปซอร์สที่แก้ไขได้
- หน้าตาของการใช้งาน
เอียงบอร์ดแล้วให้ LED สว่างตาม — อ่านค่า BMI270 ที่ auto-push task แคชไว้ แล้วขับ LED1
sensor_auto_bmi270_cache_t imu;
sensor_auto_get_bmi270(&imu);
if (imu.valid && (imu.ax > 3.0f || imu.ax < -3.0f)) {
Cy_GPIO_Set(CYBSP_USER_LED1_PORT, CYBSP_USER_LED1_PIN);
} else {
Cy_GPIO_Clr(CYBSP_USER_LED1_PORT, CYBSP_USER_LED1_PIN);
}
โปรแกรมนี้ฉบับเต็ม พร้อมสิ่งที่ควรสังเกตทีละบรรทัด อยู่ที่ A1 — จากไฟล์ zip ถึงโปรแกรมแรก
- ตัวอย่างอยู่ที่ใด
หน้าอ้างอิงของทุกฟังก์ชันมีตัวอย่างกำกับ ตัวอย่างที่ยกมาจากซอร์สที่ส่งมอบจริงมีหัวข้อ ที่มา ระบุไฟล์ ส่วนตัวอย่างที่ไม่มี call site ในของที่ส่งมอบมีหัวข้อ ตัวอย่าง (เขียนขึ้นเอง) กำกับตรง ๆ Tutorial เดินโค้ดจริงตามลำดับ พร้อมไฟล์และบรรทัด และ อุปกรณ์ต่อพ่วงโดยสรุป เป็นตารางล้วนของทุกการเรียก ไฟล์ บรรทัด และ gate BSP_HAS_* ของแต่ละตัว
- การ build
(cd lib && ./verify.sh) # ลายเซ็น + digest
for p in proj_cm33_s proj_cm33_ns proj_cm55; do (cd $p && make getlibs); done
make build -j && make program
ลำดับเต็ม (patch series, การตัดไฟจ่ายไฟใหม่, ข้อควรระวัง) อยู่ที่ A1 — จากไฟล์ zip ถึงโปรแกรมแรก
- Note
- ชุดเอกสารนี้เป็นของแพ็กเกจ mtb-only (ภาษา C ล้วน ไม่มี MicroPython VM ไม่มี REPL ไม่มี TACP) ชุดเอกสารของแพ็กเกจ MicroPython คือ mtb-mpy — โครงสร้างส่วนเดียวกัน URL สัมพัทธ์เดียวกัน และมีส่วนที่ variant นี้ไม่ได้บรรจุไว้เพิ่มเข้ามา หรือใช้ตัวเลือก variant ที่ส่วนหัวของหน้า
- ส่วนต่าง ๆ ตามลำดับการอ่าน
- เริ่มต้นใช้งาน — แผนที่ของ SDK (ความสามารถแต่ละอย่างเป็นของโมดูลใด และ "อยากทำ X ต้องเปิดบทไหน") จากนั้นเป็นเส้นทางจากไฟล์ zip ถึงโปรแกรมแรก
- สถาปัตยกรรมและการบูต — การเดินตามลำดับการบูตของ CM33_NS และ CM55 และ ข้อกำหนดการเรียกใช้ของ IPC สามชุดที่ทุกหน้า (page) พึ่งพา
- อุปกรณ์ต่อพ่วง: เซนเซอร์และ GPIO — บัสเซนเซอร์และ lock ของบัสนั้น เซนเซอร์ทั้งหกตัว auto-push task, LED และปุ่ม บอร์ดฐาน QWA309 และ radar พร้อมตารางอ้างอิงอย่างเร็วของทุกการเรียกใช้และ gate BSP_HAS_* ของแต่ละตัว
- Edge AI — select → confirm → start, parallel set, การ stop/unload/staged โมเดล และข้อมูลวินิจฉัย จากนั้นเป็นคู่มืออ้างอิง API ของ Edge AI
- ความปลอดภัย / HSM — ระเบียบการเข้าถึงชิป OPTIGA, การลงทะเบียนและ Protected Update ตั้งแต่ต้นจนจบ, ข้อกำหนดการเรียกใช้ของ weak symbol จากนั้นเป็นคู่มืออ้างอิง API ของ TESAIoT HSM
- การเชื่อมต่อ: WiFi และคลาวด์ — WiFi, ที่เก็บข้อมูลรับรองสองแห่ง, Tutorial MQTT และ mTLS พร้อมแผนผังว่า API แต่ละตระกูลถูกจัดวางไว้ที่ส่วนใด
- หน้า UI และ IPC — การเพิ่มหน้าจอและการสั่ง widget ผ่าน IPC จากนั้นเป็นคู่มืออ้างอิง API ของ IPC Core และ CM55 Core
- BLE / Bento Buddy — การเปิดใช้งาน BLE, กฎ single-RF, ส่วนที่เรียกใช้ได้ของโปรโตคอล NUS จากนั้นเป็นคู่มืออ้างอิง API ของ BLE NUS
- ที่เก็บข้อมูลและข้อมูลรับรอง — bento_storage, ที่เก็บข้อมูลรับรองฝั่ง C และสัญญาณชีพ (heartbeat) จากนั้นเป็นคู่มืออ้างอิง API ของ storage/credentials (หน้า lfs_wifi_creds_* อยู่ที่ส่วนนี้ทั้งสอง variant)
- ภาคผนวก — แผนที่สัญญาณ (การแปลความบรรทัดคอนโซล รหัส LED และ marker บอกความผิดพลาด) กับดักและ anti-pattern และบัญชี symbol ที่ผู้ใช้ไลบรารีต้องจัดหาเอง
- รูปแบบการเขียน Tutorial
ทุกบทใช้รูปแบบเดียวกัน คือ เป้าหมายของหัวข้อนี้ → ลำดับการทำงานจริงของเฟิร์มแวร์ (อ้างถึงไฟล์และบรรทัดที่ส่งมอบจริง พร้อมบล็อก snippet ที่ยกมาจากซอร์สที่ส่งมอบเมื่อมี marker กำกับไว้) → ทีละขั้น โดยแต่ละขั้นจบด้วยกล่อง สิ่งที่ควรสังเกต ซึ่งยกมาเฉพาะสัญญาณที่ตรวจแล้วว่าพิมพ์ออกมาจริง → กับดัก → variant ที่ใช้ได้ การแยกตาม variant แสดงเป็นแผงที่มีป้ายกำกับอยู่ภายในบท สิ่งที่ต่างกันระหว่างชุดเอกสารทั้งสองมีเพียงการตัดทั้งบทออกเท่านั้น (docs/tutorials/<variant>/INCLUDED.list)
- การค้นหา
ช่องค้นหาจับคู่ symbol และชื่อหน้า/ชื่อหัวข้อจากคำนำหน้า และไม่ค้นหาเนื้อความใน Tutorial