อภิธานศัพท์#

baremetal#

ระบบที่ไม่มีระบบปฏิบัติการ (เต็มรูปแบบ) เช่น ระบบบนพื้นฐาน MCU เมื่อทำงานบนระบบ baremetal MicroPython จะทำหน้าที่เหมือนระบบปฏิบัติการขนาดเล็ก โดยรันโปรแกรมผู้ใช้และจัดเตรียมตัวแปลคำสั่ง (REPL)

buffer protocol#

ออบเจกต์ Python ใดก็ตามที่สามารถแปลงเป็น bytes ได้โดยอัตโนมัติ เช่น ออบเจกต์ bytes, bytearray, memoryview และ str ซึ่งทั้งหมดนำ "buffer protocol" มาใช้งาน

board#

โดยทั่วไปหมายถึงแผงวงจรพิมพ์ (PCB) ที่มี microcontroller และส่วนประกอบสนับสนุน เฟิร์มแวร์ MicroPython มักจัดเตรียมต่อบอร์ด เนื่องจากเฟิร์มแวร์มีทั้งฟังก์ชันเฉพาะ MCU และฟังก์ชันระดับบอร์ด เช่น ไดรเวอร์หรือชื่อพิน

bytecode#

การแสดงแบบกะทัดรัดของโปรแกรม Python ที่สร้างขึ้นโดยการคอมไพล์ซอร์สโค้ด Python นี่คือสิ่งที่ VM ประมวลผลจริงๆ bytecode มักถูกสร้างโดยอัตโนมัติในระหว่างรันไทม์และมองไม่เห็นสำหรับผู้ใช้ โปรดทราบว่าแม้ CPython และ MicroPython ทั้งคู่ใช้ bytecode แต่รูปแบบต่างกัน คุณยังสามารถคอมไพล์ซอร์สโค้ดล่วงหน้าแบบออฟไลน์โดยใช้ cross-compiler

callee-owned tuple#

นี่คือโครงสร้างเฉพาะของ MicroPython ที่ฟังก์ชันหรือเมธอดภายในบางตัวอาจนำออบเจกต์ tuple เดิมมาใช้ซ้ำเพื่อส่งคืนข้อมูล เพื่อประสิทธิภาพ ซึ่งหลีกเลี่ยงการต้องจัดสรร tuple ใหม่ในทุกการเรียก และลดการแตกเป็นชิ้นๆ ของ heap โปรแกรมไม่ควรเก็บการอ้างอิงไปยัง callee-owned tuples แต่ควรดึงข้อมูลออกจาก tuple เหล่านั้น (หรือทำสำเนา) เท่านั้น

CircuitPython#

ตัวแปรของ MicroPython ที่พัฒนาโดย Adafruit Industries

CPython#

CPython เป็น implementation อ้างอิงของภาษาโปรแกรม Python และเป็นที่รู้จักมากที่สุด อย่างไรก็ตาม เป็นเพียงหนึ่งในหลาย implementation (รวมถึง Jython, IronPython, PyPy และ MicroPython) แม้ว่า implementation ของ MicroPython จะแตกต่างจาก CPython อย่างมาก แต่มุ่งหมายที่จะรักษาความเข้ากันได้ให้มากที่สุดเท่าที่จะเป็นไปได้

cross-compiler#

หรือที่รู้จักในชื่อ mpy-cross เครื่องมือนี้ทำงานบน PC และแปลง .py file ที่มีโค้ด MicroPython เป็น .mpy file ที่มี MicroPython bytecode ซึ่งทำให้โหลดได้เร็วขึ้น (บอร์ดไม่ต้องคอมไพล์โค้ด) และใช้พื้นที่บนแฟลชน้อยลง (bytecode มีประสิทธิภาพพื้นที่มากกว่า)

driver#

ไลบรารี MicroPython ที่ใช้งานการรองรับส่วนประกอบเฉพาะ เช่น เซนเซอร์หรือจอแสดงผล

FFI#

ตัวย่อของ Foreign Function Interface กลไกที่ใช้โดย MicroPython Unix port เพื่อเข้าถึงฟังก์ชันของระบบปฏิบัติการ ไม่มีให้ใช้งานบนพอร์ต baremetal

filesystem#

พอร์ตและบอร์ด MicroPython ส่วนใหญ่จัดเตรียมระบบไฟล์ที่จัดเก็บในแฟลช ซึ่งโค้ดผู้ใช้สามารถเข้าถึงได้ผ่าน Python file API มาตรฐาน เช่น open() บางบอร์ดยังทำให้ระบบไฟล์ภายในนี้เข้าถึงได้จากโฮสต์ผ่าน USB mass-storage

frozen module#

โมดูล Python ที่ถูก cross compiled และรวมเข้าไปในอิมเมจเฟิร์มแวร์ ซึ่งช่วยลดความต้องการ RAM เนื่องจากโค้ดทำงานโดยตรงจากแฟลช

Garbage Collector#

กระบวนการที่ทำงานอยู่เบื้องหลังใน Python (และ MicroPython) เพื่อเรียกคืนหน่วยความจำที่ไม่ได้ใช้งานใน heap

GPIO#

General-purpose input/output วิธีที่ง่ายที่สุดในการควบคุมสัญญาณไฟฟ้า (มักเรียกว่า "pins") บน microcontroller GPIO โดยทั่วไปอนุญาตให้ตั้งค่าพินเป็น input หรือ output และตั้งค่าหรือรับค่า digital ของพิน (ค่าลอจิก "0" หรือ "1") MicroPython ทำให้การเข้าถึง GPIO เป็นนามธรรมโดยใช้คลาส machine.Pin และ machine.Signal

GPIO port#

กลุ่มของพิน GPIO ที่โดยทั่วไปอ้างอิงจากคุณสมบัติของฮาร์ดแวร์ (เช่น สามารถควบคุมได้โดย รีจิสเตอร์เดียวกัน)

heap#

พื้นที่ RAM ที่ MicroPython ใช้จัดเก็บข้อมูลแบบไดนามิก จัดการโดยอัตโนมัติด้วย Garbage Collector MCU และบอร์ดต่างๆ มีปริมาณ RAM ที่ใช้ได้สำหรับ heap แตกต่างกันมาก ซึ่งจะส่งผลต่อความซับซ้อนของโปรแกรมที่สามารถรันได้

interned string#

การปรับให้เหมาะสมที่ MicroPython ใช้เพื่อเพิ่มประสิทธิภาพการทำงานกับสตริง สตริงที่ intern แล้วจะถูกอ้างอิงโดย identity (ที่ไม่ซ้ำกัน) แทนที่อยู่ และสามารถเปรียบเทียบได้รวดเร็วเพียงแค่ใช้ตัวระบุ ยังหมายความว่าสตริงที่เหมือนกันสามารถนำมาใช้ร่วมกันในหน่วยความจำได้ การ intern สตริงแทบจะมองไม่เห็นสำหรับผู้ใช้เสมอ

MCU#

Microcontroller โดยทั่วไป microcontroller มีทรัพยากรน้อยกว่า desktop, laptop หรือโทรศัพท์มาก แต่มีขนาดเล็กกว่า ราคาถูกกว่า และต้องการพลังงานน้อยกว่า MicroPython ได้รับการออกแบบให้มีขนาดเล็กและเพิ่มประสิทธิภาพพอที่จะทำงานบน microcontroller สมัยใหม่ทั่วไป

micropython-lib#

MicroPython (โดยทั่วไป) จะถูกแจกจ่ายเป็นไฟล์ executable/binary เดียวที่มีเพียงไม่กี่โมดูลในตัว ไม่มีไลบรารีมาตรฐานที่ครอบคลุมเทียบเท่ากับของ CPython แต่มีโปรเจกต์ที่เกี่ยวข้องแต่แยกต่างหาก micropython-lib ซึ่งจัดเตรียม implementation สำหรับโมดูลจำนวนมากจากไลบรารีมาตรฐานของ CPython

โมดูลบางส่วนถูก implement ใน Python บริสุทธิ์และทำงานบนพอร์ตใดก็ได้ เฟิร์มแวร์ OpenMV จะ freeze การเลือกเหล่านี้ (ไดรเวอร์ sensor, เครือข่าย และตัวช่วยยูทิลิตี) ไว้ในอิมเมจเฟิร์มแวร์โดยตรง เพื่อให้สามารถ import ได้โดยไม่ต้องติดตั้งอะไร โมดูล micropython-lib จำนวนน้อยกว่าใช้ FFI และทำงานได้เฉพาะบน MicroPython Unix port เท่านั้น ซึ่งโมดูลเหล่านั้นไม่มีให้ใช้งานบน OpenMV Cams

ต่างจาก stdlib ของ CPython โมดูล micropython-lib ที่ไม่ได้ถูก freeze จะถูกติดตั้งทีละโมดูล ไม่ว่าจะโดยการคัดลอกลงในระบบไฟล์ หรือบนบอร์ดที่รองรับเครือข่าย โดยใช้ mip

MicroPython port#

MicroPython รองรับ boards RTOS และ OS ที่แตกต่างกัน และสามารถปรับตัวเข้ากับระบบใหม่ได้ค่อนข้างง่าย MicroPython ที่รองรับระบบเฉพาะเรียกว่า "port" สำหรับระบบนั้น พอร์ตต่างๆ อาจมีฟังก์ชันที่แตกต่างกันอย่างมาก เอกสารนี้มีจุดประสงค์เป็นข้อมูลอ้างอิงของ API ทั่วไปที่ใช้งานได้ในพอร์ตต่างๆ ("MicroPython core") โปรดทราบว่าบางพอร์ตอาจยังคงละเว้น API บางส่วนที่อธิบายไว้ที่นี่ (เช่น เนื่องจากข้อจำกัดทรัพยากร) ความแตกต่างดังกล่าวและส่วนขยายเฉพาะพอร์ตที่เกินกว่าฟังก์ชัน MicroPython core จะอธิบายไว้ในเอกสารเฉพาะพอร์ตแยกต่างหาก

MicroPython Unix port#

unix port เป็นหนึ่งใน MicroPython ports หลัก ออกแบบให้ทำงานบนระบบปฏิบัติการที่เข้ากันได้กับ POSIX เช่น Linux, MacOS, FreeBSD, Solaris เป็นต้น และยังเป็นพื้นฐานของ Windows port ด้วย Unix port มีประโยชน์มากสำหรับการพัฒนาและทดสอบภาษา MicroPython และฟีเจอร์ที่ไม่ขึ้นกับเครื่องอย่างรวดเร็ว ยังสามารถทำงานในลักษณะเดียวกับ executable python ของ CPython

mip#

ตัวติดตั้งแพ็กเกจสำหรับ MicroPython (mip - "mip installs packages") ติดตั้งแพ็กเกจ MicroPython จาก micropython-lib, GitHub หรือ URL ใดก็ได้ mip สามารถใช้งานบนอุปกรณ์บนบอร์ดที่รองรับเครือข่าย และภายในโดยเครื่องมืออย่าง mpremote

ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ mip

mpremote#

เครื่องมือสำหรับโต้ตอบกับอุปกรณ์ MicroPython ดู MicroPython การควบคุมระยะไกล: mpremote

.mpy file#

ผลลัพธ์จาก cross-compiler เป็นรูปแบบที่คอมไพล์แล้วของ .py file ที่มี MicroPython bytecode แทนที่ซอร์สโค้ด Python

native#

โดยทั่วไปหมายถึง "native code" คือ machine code สำหรับ microcontroller เป้าหมาย (ARM Thumb บน OpenMV Cams ที่ใช้ Cortex-M) decorator @micropython.native สามารถนำไปใช้กับฟังก์ชัน MicroPython เพื่อสร้าง native code แทน bytecode สำหรับฟังก์ชันนั้น ซึ่งน่าจะเร็วกว่าแต่ใช้ RAM มากกว่า

port#

โดยทั่วไปเป็นคำย่อของ MicroPython port แต่อาจหมายถึง GPIO port ด้วย

.py file#

ไฟล์ที่มีซอร์สโค้ด Python

pyboard.py#

เครื่องมือฝั่งโฮสต์ที่ถูกแทนที่แล้วสำหรับโต้ตอบกับบอร์ด MicroPython ซึ่งรันสคริปต์และเข้าถึงระบบไฟล์ผ่าน raw REPL ดูตัวแทนที่ mpremote

REPL#

ตัวย่อของ "Read, Eval, Print, Loop" นี่คือ Python prompt แบบโต้ตอบ มีประโยชน์สำหรับการดีบักหรือทดสอบโค้ดสั้นๆ OpenMV Cams ทำให้ REPL พร้อมใช้งานสำหรับ PC โฮสต์ผ่าน USB (อุปกรณ์ serial USB CDC)

small integer#

MicroPython ปรับปรุงการแสดงภายในของจำนวนเต็มเพื่อให้ค่า "เล็ก" ไม่ใช้พื้นที่บน heap และการคำนวณกับค่าเหล่านั้นไม่ต้องการการจัดสรร heap บนพอร์ต 32-bit ส่วนใหญ่ สอดคล้องกับค่าในช่วง -2**30 <= x < 2**30 แต่ควรถือเป็นรายละเอียดการ implement และไม่ควรพึ่งพา

stream#

หรือที่รู้จักในชื่อ "file-like object" ออบเจกต์ Python ที่ให้การเข้าถึงข้อมูลพื้นฐานแบบอ่านเขียนตามลำดับ ออบเจกต์ stream ใช้งาน interface ที่สอดคล้อง ซึ่งประกอบด้วยเมธอดเช่น read(), write(), readinto(), seek(), flush(), close() เป็นต้น stream เป็นแนวคิดสำคัญใน MicroPython ออบเจกต์ I/O จำนวนมากนำ stream interface มาใช้งาน และสามารถใช้งานอย่างสอดคล้องและแทนกันได้ในบริบทที่แตกต่างกัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ stream ใน MicroPython ดูที่โมดูล io

UART#

ตัวย่อของ "Universal Asynchronous Receiver/Transmitter" นี่คืออุปกรณ์ต่อพ่วงที่ส่งข้อมูลผ่านคู่พิน (TX & RX) บอร์ดจำนวนมากมีวิธีทำให้ UART อย่างน้อยหนึ่งตัวพร้อมใช้งานสำหรับ PC โฮสต์เป็น serial port ผ่าน USB

upip#

ตัวจัดการแพ็กเกจที่ล้าสมัยแล้วสำหรับ MicroPython ที่ได้รับแรงบันดาลใจจาก pip ของ CPython แต่มีขนาดเล็กกว่ามากและมีฟังก์ชันจำกัดกว่า ดูตัวแทนที่ mip

webrepl#

วิธีเชื่อมต่อกับ REPL (และถ่ายโอนไฟล์) บนอุปกรณ์ผ่านอินเทอร์เน็ตจากเบราว์เซอร์ ดู https://micropython.org/webrepl