SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
Loading...
Searching...
No Matches
การเข้าถึง 2 ชั้น — ใครเรียกอะไรได้บ้าง

ชั้นของผู้เรียกมี 2 ชั้นพอดี และทั้ง 2 ชั้นไม่ทับซ้อนกัน:

  • โค้ด C ที่คอมไพล์เข้าไปใน proj_cm55 เรียก ai_engine_* และ ai_model_staged_* ได้โดยตรง ผู้เรียกที่มีอยู่จริงในของที่ส่งมอบทุกรายของส่วนนี้ ล้วนอยู่ภายใน libbento_cm55.a ที่คอมไพล์มาแล้วเอง (สร้างจาก page_edge_ai.c, deepcraft_task.c และ tesaiot_display.c ตาม dist/cm55_core/PROVENANCE.txt) เทมเพลตส่งมอบ call site ในไฟล์ .c มาศูนย์จุด สำหรับฟังก์ชันเหล่านี้; lib/cm55_core/consumer_must_provide.txt แสดงรายการ symbol ai_* จำนวน 35 ตัวที่มีผู้เรียกที่มีอยู่จริงในของที่ส่งมอบ ส่วนอีก 2 ตัวที่ไม่อยู่ในรายการนั้น (ai_engine_dq_calls(), ai_engine_resume_sensor()) ไม่มีผู้เรียกที่ใดเลย
  • MicroPython ทำงานบน CM33_NS และ เรียก ai_engine_* ไม่ได้เลย มันเข้าถึงโมดูลนี้ได้ทาง model link บน IPC เท่านั้น — โมดูล edge_ai.* (mp_module_edge_ai ซึ่งส่งออกจาก dist/mpy_secure/api.txt) ส่งคำสั่ง MODEL_LINK_* ที่ deepcraft_task.c ให้บริการอยู่บน CM55 และ task นั้นเองคือสิ่งที่เรียกเข้ามาใน archive นี้ โปรแกรม MicroPython จึงไม่เคยเห็น prototype ฝั่ง C จากหน้านี้เลย; สิ่งที่เห็นคือ edge_ai.select(), edge_ai.result(), edge_ai.diag() และตัวอื่น ๆ ซึ่งมีความหมายตามที่ระบุไว้ที่นี่

เนื่องจากผู้เรียกทั้งหมดถูกเก็บอยู่ใน archive ตัวอย่างทุกตัวอย่างในหน้าเหล่านี้จึงเป็นอย่างใดอย่างหนึ่ง คือคัดมาตามตัวอักษรจากซอร์สที่อยู่ใน archive (มีย่อหน้า Origin กำกับไว้พร้อมชื่อไฟล์และช่วงบรรทัด — คอมไพล์รวมอยู่ใน libbento_cm55.a ไม่ได้ส่งมอบมาเป็นซอร์ส) หรือเป็นตัวอย่างที่เขียนขึ้นเองสำหรับฟังก์ชัน 2 ตัวที่ไม่มีผู้เรียก (กำกับไว้ว่า Example (authored — no shipped call site))