|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
|
symbol ที่ export ออกมา 2 ตัว เป็น ข้อมูล ไม่ใช่ฟังก์ชัน: คืออ็อบเจ็กต์โมดูล MicroPython ของ optiga และ edge_ai ทั้ง 2 ตัวถูกนิยามไว้ภายใน archive เท่านั้น (modoptiga.c และ modedgeai.c คอมไพล์รวมอยู่ใน libbento_mpy.a ไม่ได้ส่งมอบมาเป็นซอร์ส) และ bento_secure_undeclared.h บันทึกไว้ว่า ไม่มีคำประกาศอยู่ที่ใดเลยในทรีนี้ การใช้งานในเทมเพลตมีที่เดียว คือบล็อกลงทะเบียนใน template/bento_libs/claw/common/mpy/bento_archived_qstrs.c
ผู้ใช้ไลบรารีไม่เรียกและไม่อ้างถึง symbol 2 ตัวนี้โดยตรง มันถูกใช้ผ่าน MP_REGISTER_MODULE และคอมเมนต์ที่ล้อมอยู่คือข้อกำหนด: บล็อก qstr / root-pointer ถูกคัดลอกมาทีละไบต์จาก header ที่เครื่องสร้างขึ้น ไม่ใช่การหาใหม่จากซอร์ส — root_pointers.h เรียงลำดับตามสตริงคำประกาศเต็ม ช่องว่างที่เปลี่ยนไปหนึ่งช่องจึงเลื่อน offset ของ struct และอ็อบเจ็กต์โมดูลที่อยู่ใน archive ก็จะถูกวางเทียบกับ pool ที่ผิดตัว
ข้อกำหนดการเรียกใช้ อ็อบเจ็กต์โมดูล optiga (ส่วนของ OPTIGA Trust M ที่เปิดให้ Python เรียกใช้) โค้ดของผู้ใช้ไลบรารีห้ามอ้างถึงมันเลย; การใช้มาโครลงทะเบียนคือการใช้งานที่ถูกต้องเพียงอย่างเดียว และมาโครนั้นต้องอยู่ภายในบล็อก qstr ที่คัดลอกมาทีละไบต์ เพื่อให้ดัชนี qstr ของโมดูลตรงกับ pool ที่ archive ถูกคอมไพล์เทียบไว้ — บรรทัด _Static_assert เหนือบล็อกนั้นคือสิ่งที่ทำให้ build ล้มเหลวเมื่อ pool ขยับ bento_secure_undeclared.h บันทึกไว้ว่าไม่มีคำประกาศอยู่ในทรีนี้ ห้ามเขียนขึ้นมาเอง
ตัวอย่าง — บล็อกการลงทะเบียน
ข้อกำหนดการเรียกใช้ อ็อบเจ็กต์โมดูล edge_ai ข้อควรระวังเหมือนกับ mp_module_optiga ทุกข้อ: ใช้เพื่อลงทะเบียนเท่านั้น และต้องอยู่ภายในบล็อกที่คัดลอกมาทีละไบต์; ห้ามหาบล็อก qstr / root-pointer ขึ้นใหม่จากซอร์ส; ไม่มีคำประกาศอยู่ในทรีนี้
ตัวอย่าง — บล็อกการลงทะเบียนบล็อกเดียวกัน