|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (ModusToolbox)
|
dist/edge_ai/api.txt แสดงรายการ symbol ที่ส่งออกไว้ 39 ตัว ในจำนวนนั้นมี 2 ตัว — printf และ puts — ที่ ไม่ใช่ API ไม่ใช่สัญญาณรบกวนจากการสกัดรายการ และห้ามเรียกใช้โดยตั้งใจเด็ดขาด ทั้ง 2 ตัวถูกบันทึกไว้ที่นี่เพราะการลิงก์ archive (ไฟล์ไลบรารีแบบสแตติก .a) ตัวนี้เข้าไปเปลี่ยนพฤติกรรมของโค้ดที่ผู้อ่านเขียนขึ้นเอง
ข้อกำหนดการเรียกใช้ — อันตราย (hazard) libbento_edge_ai.a นิยาม printf เป็น no-op stub โดยเจตนา (ai_engine.c:276-288: (void)fmt; return 0;) nm -S บน archive รายงาน T printf ขนาด 8 ไบต์ ใน bento_core_0.o — ซึ่งคือ stub ไม่ใช่ newlib ผลที่ตามมาสำหรับผู้ใช้ไลบรารีฝั่ง CM55 มีดังนี้:
สิ่งที่สังเกตได้บน CM55 จึงเป็นรหัส LED และหน้าจอ ซึ่งมีทั้งสอง variant บวกกับ ui._diag() บน mtb-mpy (หรือ ipc_ui_platform_diag() จาก C บน mtb-only) — ไม่ใช่คอนโซลอนุกรม (serial console) เลย
dist/edge_ai/include/bento_secure_undeclared.h:10-11 บันทึก symbol ตัวนี้ไว้ว่า "exported, but no declaration found in the tree": ไม่มี header ที่ส่งมอบจริงตัวใดประกาศมันไว้ เพราะไม่มีสิ่งใดที่ตั้งใจจะเรียกมัน
ข้อกำหนดการเรียกใช้ — อันตราย เหมือนกับ printf: เป็น no-op T puts ขนาด 4 ไบต์ (ai_engine.c:283-288) ที่กลืน puts ทุกตัวในอิมเมจของ CM55 รวมถึงตัวที่คอมไพเลอร์สังเคราะห์ขึ้นจาก printf("literal\n") ห้ามพึ่งพาสองตัวนี้เพื่อให้ CM55 แสดงผล; ให้ส่งข้อมูลวินิจฉัยผ่านเส้นทาง platform-diag ของ IPC แทน