SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (ModusToolbox)
Loading...
Searching...
No Matches
IPC Core (libbento_ipc.a)

Topics

 คอนโซล LCD และพาเนล
 Sensor hub
 Service
 container ของ UI
 Widget manager (IPC dispatch)
 Weak hook (ให้นิยามเอง ห้ามเรียก)
 การ init และลำดับการเรียก
 บันทึกการใช้งาน

Detailed Description

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/)

variant ที่ใช้ได้
mtb-mpy และ mtb-only

CM55 ไม่ขึ้นกับ variant: gate ของ MicroPython ที่มีผลตอนคอมไพล์บนคอร์นี้มีเพียง proj_cm55/Makefile:237 กับป้ายบอกเวอร์ชันเท่านั้น ทุกรายการในคู่มืออ้างอิงนี้จึงใช้ได้กับ zip ทั้งสองแบบ

อันตราย (hazard) ของ archive: PAGE_ID_PLAYGROUND มีลำดับเลข (ordinal) เป็น 7

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 ข้างต้นก่อนลิงก์ทุกครั้ง