|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (ModusToolbox)
|
Topics | |
| คอนโซล LCD และพาเนล | |
| Sensor hub | |
| Service | |
| container ของ UI | |
| Widget manager (IPC dispatch) | |
| Weak hook (ให้นิยามเอง ห้ามเรียก) | |
| การ init และลำดับการเรียก | |
| บันทึกการใช้งาน | |
ipc_core คือกลุ่มฟังก์ชันฝั่งรับ IPC บน CM55 ได้แก่ pipe client ที่แปลงข้อความ (message) จาก CM33_NS (MicroPython บน mtb-mpy และแอปพลิเคชันภาษา C บน mtb-only) ให้กลายเป็น widget ของ LVGL ข้อความบนคอนโซล snapshot ของเซนเซอร์ และการเรียก service ส่งมอบมาเป็น archive (ไฟล์ไลบรารีแบบสแตติก .a ) ที่คอมไพล์ไว้ล่วงหน้าหนึ่งไฟล์ คือ template/lib/ipc_core/COMPONENT_CM55/COMPONENT_HARDFP/TOOLCHAIN_GCC_ARM/libbento_ipc.a สร้างจากไฟล์ซอร์ส 5 ไฟล์ที่ไม่ได้ส่งมอบมาด้วย (dist/ipc_core/PROVENANCE.txt): ipc_service.c, ipc_lcd.c, ipc_ui.c, ui_widget_mgr.c, ipc_sensorhub.c สิ่งที่ส่งมอบมามีเพียง header เท่านั้น และมาในรูปสำเนาที่เหมือนกัน 2 ชุด (template/lib/ipc_core/include/ และ template/bento_libs/claw/common/modules/)
CM55 ไม่ขึ้นกับ variant: gate ของ MicroPython ที่มีผลตอนคอมไพล์บนคอร์นี้มีเพียง proj_cm55/Makefile:237 กับป้ายบอกเวอร์ชันเท่านั้น ทุกรายการในคู่มืออ้างอิงนี้จึงใช้ได้กับ zip ทั้งสองแบบ
dist/ipc_core/PROVENANCE.txt บันทึกข้อเท็จจริงที่ชี้ขาดว่า archive ตัวนี้จะใช้ในโปรเจกต์หนึ่ง ๆ ได้หรือไม่:
PAGE_ID_PLAYGROUND ordinal compiled into this archive: 7 Valid ONLY for a project whose page_id_t gives that value. Linking it into a project with a different page order succeeds with no diagnostic and compares the wrong page. Check yours: grep -n PAGE_ID_PLAYGROUND proj_cm55/modules/*/page_manager.h
auto-navigate แบบยิงครั้งเดียวของ archive (การที่ lcd.print() กระโดดไปหน้า Playground เมื่อเริ่มเซสชัน MicroPython ใหม่) เทียบหน้า (page) ปัจจุบันกับค่าคงที่ 7 ตรง ๆ หาก enum page_id_t ใน page_manager.h — ซึ่งเป็นไฟล์แยกของแต่ละโปรเจกต์ ไม่เคยใช้ร่วมกัน — วาง PAGE_ID_PLAYGROUND ไว้ที่ตำแหน่งอื่น การลิงก์จะสำเร็จ ไม่มีคำเตือนใด ๆ และ auto-navigate จะไปตกที่หน้าผิด ให้รัน grep ข้างต้นก่อนลิงก์ทุกครั้ง