용어집¶
- 베어메탈(baremetal)¶
(완전한 기능을 갖춘) 운영 체제가 없는 시스템으로, 예를 들면 MCU 기반 시스템입니다. 베어메탈 시스템에서 실행될 때 MicroPython은 사용자 프로그램을 실행하고 명령 인터프리터(REPL)를 제공하는 작은 운영 체제처럼 효과적으로 동작합니다.
- 버퍼 프로토콜(buffer protocol)¶
bytes,bytearray,memoryview,str객체처럼 바이트로 자동 변환될 수 있는 모든 Python 객체로, 이들은 모두 “버퍼 프로토콜”을 구현합니다.- 보드(board)¶
일반적으로 마이크로컨트롤러 와 지원 부품을 포함하는 인쇄 회로 기판(PCB)을 가리킵니다. MicroPython 펌웨어는 일반적으로 보드별로 제공되는데, 펌웨어가 MCU별 기능뿐만 아니라 드라이버나 핀 이름 같은 보드 수준 기능도 포함하기 때문입니다.
- 바이트코드(bytecode)¶
Python 소스 코드를 컴파일하여 생성되는 Python 프로그램의 압축된 표현입니다. 이것이 VM이 실제로 실행하는 것입니다. 바이트코드는 일반적으로 런타임에 자동으로 생성되며 사용자에게는 보이지 않습니다. CPython 과 MicroPython 모두 바이트코드를 사용하지만 형식은 서로 다르다는 점에 유의하십시오. cross-compiler 를 사용하여 소스 코드를 오프라인으로 미리 컴파일할 수도 있습니다.
- 피호출자 소유 튜플(callee-owned tuple)¶
이는 MicroPython 고유의 구성으로, 효율성을 위해 일부 내장 함수나 메서드가 데이터를 반환할 때 동일한 기반 튜플 객체를 재사용할 수 있습니다. 이를 통해 호출할 때마다 새 튜플을 할당할 필요가 없어지고 heap 단편화가 줄어듭니다. 프로그램은 피호출자 소유 튜플에 대한 참조를 보유해서는 안 되며, 대신 그것에서 데이터를 추출하기만(또는 복사하기만) 해야 합니다.
- CircuitPython¶
Adafruit Industries 에서 개발한 MicroPython의 변형입니다.
- CPython¶
CPython은 Python 프로그래밍 언어의 참조 구현이자 가장 잘 알려진 구현입니다. 그러나 이는 (Jython, IronPython, PyPy, MicroPython을 포함한) 여러 구현 중 하나입니다. MicroPython의 구현은 CPython과 상당히 다르지만 가능한 한 많은 호환성을 유지하는 것을 목표로 합니다.
- 크로스 컴파일러(cross-compiler)¶
mpy-cross라고도 합니다. 이 도구는 PC에서 실행되며 MicroPython 코드가 포함된 .py file 을 MicroPython bytecode 가 포함된 .mpy file 로 변환합니다. 이를 통해 더 빠르게 로드되고(보드가 코드를 컴파일할 필요가 없음) 플래시 공간을 더 적게 사용합니다(바이트코드가 공간 효율이 더 높음).- 드라이버(driver)¶
센서나 디스플레이 같은 특정 구성 요소에 대한 지원을 구현하는 MicroPython 라이브러리입니다.
- FFI¶
Foreign Function Interface의 약어입니다. MicroPython Unix port 가 운영 체제 기능에 접근하는 데 사용하는 메커니즘입니다. 이는 baremetal 포트에서는 사용할 수 없습니다.
- 파일시스템(filesystem)¶
대부분의 MicroPython 포트와 보드는 플래시에 저장된 파일시스템을 제공하며, 이는
open()같은 표준 Python 파일 API를 통해 사용자 코드에서 사용할 수 있습니다. 일부 보드는 이 내부 파일시스템을 USB 대용량 저장소를 통해 호스트에서도 접근할 수 있게 합니다.- 고정 모듈(frozen module)¶
크로스 컴파일 되어 펌웨어 이미지에 번들로 묶인 Python 모듈입니다. 코드가 플래시에서 직접 실행되므로 RAM 요구량이 줄어듭니다.
- 가비지 컬렉터(Garbage Collector)¶
Python(및 MicroPython)에서 실행되어 heap 의 사용되지 않는 메모리를 회수하는 백그라운드 프로세스입니다.
- GPIO¶
범용 입출력(General-purpose input/output). 마이크로컨트롤러에서 전기 신호(흔히 “핀”이라고 함)를 제어하는 가장 단순한 수단입니다. GPIO는 일반적으로 핀을 입력 또는 출력으로 설정하고 디지털 값(논리 “0” 또는 “1”)을 설정하거나 가져올 수 있게 합니다. MicroPython은
machine.Pin및machine.Signal클래스를 사용하여 GPIO 접근을 추상화합니다.- GPIO 포트(GPIO port)¶
일반적으로 이 핀들의 하드웨어 속성(예: 동일한 레지스터로 제어 가능)에 따라 묶인 GPIO 핀 그룹입니다.
- 힙(heap)¶
MicroPython이 동적 데이터를 저장하는 RAM 영역입니다. Garbage Collector 에 의해 자동으로 관리됩니다. 서로 다른 MCU와 보드는 힙에 사용할 수 있는 RAM 양이 크게 다르므로, 이는 프로그램이 얼마나 복잡할 수 있는지에 영향을 미칩니다.
- 인터닝된 문자열(interned string)¶
문자열 작업의 효율성을 개선하기 위해 MicroPython이 사용하는 최적화입니다. 인터닝된 문자열은 주소가 아니라 (고유한) 정체성으로 참조되므로 식별자만으로 빠르게 비교할 수 있습니다. 또한 동일한 문자열이 메모리에서 중복 제거될 수 있음을 의미합니다. 문자열 인터닝은 거의 항상 사용자에게 보이지 않습니다.
- MCU¶
마이크로컨트롤러(Microcontroller). 마이크로컨트롤러는 일반적으로 데스크톱, 노트북, 휴대폰보다 자원이 훨씬 적지만 더 작고 저렴하며 훨씬 적은 전력을 필요로 합니다. MicroPython은 평균적인 최신 마이크로컨트롤러에서 실행될 수 있을 만큼 작고 충분히 최적화되도록 설계되었습니다.
- micropython-lib¶
MicroPython은 (보통) 몇 개의 내장 모듈만 있는 단일 실행 파일/바이너리 파일로 배포됩니다. CPython 의 것에 견줄 만한 방대한 표준 라이브러리는 없습니다. 대신 관련은 있지만 별개의 프로젝트인 micropython-lib 가 있으며, 이는 CPython 표준 라이브러리의 많은 모듈에 대한 구현을 제공합니다.
일부 모듈은 순수 Python으로 구현되어 모든 포트에서 실행됩니다. OpenMV 펌웨어는 이들 중 일부 선택된 모듈(센서 드라이버, 네트워킹, 유틸리티 헬퍼)을 펌웨어 이미지에 직접 고정하여 아무것도 설치하지 않고도 임포트할 수 있게 합니다. 더 적은 수의 micropython-lib 모듈은 FFI 를 사용하며 MicroPython Unix port 에서만 동작합니다. 이러한 모듈은 OpenMV Cam에서는 사용할 수 없습니다.
CPython 표준 라이브러리와 달리, 고정되지 않은 micropython-lib 모듈은 개별적으로 설치됩니다. 파일시스템에 복사하거나, 네트워크 지원 보드에서는 mip 을 사용하여 설치합니다.
- MicroPython 포트(MicroPython port)¶
MicroPython은 다양한 보드, RTOS, OS를 지원하며 비교적 쉽게 새 시스템에 맞게 적응될 수 있습니다. 특정 시스템에 대한 지원이 포함된 MicroPython을 그 시스템으로의 “포트”라고 합니다. 서로 다른 포트는 기능이 크게 다를 수 있습니다. 이 문서는 서로 다른 포트에서 공통으로 사용할 수 있는 일반 API(“MicroPython 코어”)에 대한 참조가 되는 것을 목적으로 합니다. 일부 포트는 (예: 자원 제약으로 인해) 여기에 설명된 일부 API를 여전히 생략할 수 있다는 점에 유의하십시오. 그러한 차이점과 MicroPython 코어 기능을 넘어서는 포트별 확장은 별도의 포트별 문서에 설명됩니다.
- MicroPython Unix 포트(MicroPython Unix port)¶
Unix 포트는 주요 MicroPython 포트 중 하나입니다. Linux, MacOS, FreeBSD, Solaris 등 POSIX 호환 운영 체제에서 실행되도록 만들어졌습니다. 또한 Windows 포트의 기반 역할도 합니다. Unix 포트는 MicroPython 언어 및 머신 독립적 기능을 빠르게 개발하고 테스트하는 데 매우 유용합니다. CPython 의
python실행 파일과 유사한 방식으로도 동작할 수 있습니다.- mip¶
MicroPython용 패키지 설치 프로그램입니다(mip - “mip installs packages”). micropython-lib, GitHub 또는 임의의 URL에서 MicroPython 패키지를 설치합니다. mip은 네트워크 지원 보드에서 장치 내에서 사용할 수 있으며, mpremote 같은 도구에서 내부적으로도 사용됩니다.
mip사용에 대한 자세한 내용은 패키지 관리 를 참조하십시오.- mpremote¶
MicroPython 장치와 상호 작용하기 위한 도구입니다. MicroPython 원격 제어: mpremote 를 참조하십시오.
- .mpy 파일(.mpy file)¶
cross-compiler 의 출력입니다. Python 소스 코드 대신 MicroPython bytecode 를 포함하는 .py file 의 컴파일된 형식입니다.
- 네이티브(native)¶
일반적으로 “네이티브 코드”, 즉 대상 마이크로컨트롤러를 위한 기계어 코드(Cortex-M 기반 OpenMV Cam에서는 ARM Thumb)를 가리킵니다.
@micropython.native데코레이터를 MicroPython 함수에 적용하면 해당 함수에 대해 bytecode 대신 네이티브 코드를 생성할 수 있으며, 이는 더 빠를 가능성이 높지만 RAM을 더 많이 사용합니다.- 포트(port)¶
일반적으로 MicroPython port 의 줄임말이지만, GPIO port 를 가리킬 수도 있습니다.
- .py 파일(.py file)¶
Python 소스 코드가 포함된 파일입니다.
- pyboard.py¶
MicroPython 보드와 상호 작용하기 위한 이제는 대체된 호스트 측 도구로, 원시 REPL 을 통해 스크립트를 실행하고 파일시스템에 접근합니다. 그 대체품인 mpremote 를 참조하십시오.
- REPL¶
“Read, Eval, Print, Loop”의 약어입니다. 이는 대화형 Python 프롬프트로, 짧은 코드 조각을 디버깅하거나 테스트하는 데 유용합니다. OpenMV Cam은 REPL을 USB(USB CDC 직렬 장치)를 통해 호스트 PC에서 사용할 수 있게 합니다.
- 작은 정수(small integer)¶
MicroPython은 “작은” 값이 heap 의 공간을 차지하지 않고 그 값을 사용한 계산이 힙 할당을 필요로 하지 않도록 정수의 내부 표현을 최적화합니다. 대부분의 32비트 포트에서 이는
-2**30 <= x < 2**30구간의 값에 해당하지만, 이는 구현 세부 사항으로 간주되어야 하며 이에 의존해서는 안 됩니다.- 스트림(stream)¶
“파일 유사 객체”라고도 합니다. 기반 데이터에 대한 순차적 읽기-쓰기 접근을 제공하는 Python 객체입니다. 스트림 객체는
read(),write(),readinto(),seek(),flush(),close()등의 메서드로 구성된 해당 인터페이스를 구현합니다. 스트림은 MicroPython에서 중요한 개념입니다. 많은 I/O 객체가 스트림 인터페이스를 구현하므로 서로 다른 맥락에서 일관되고 교환 가능하게 사용될 수 있습니다. MicroPython의 스트림에 대한 자세한 내용은io모듈을 참조하십시오.- UART¶
“Universal Asynchronous Receiver/Transmitter”의 약어입니다. 한 쌍의 핀(TX 및 RX)을 통해 데이터를 보내는 주변장치입니다. 많은 보드가 적어도 하나의 UART를 USB를 통해 직렬 포트로 호스트 PC에서 사용할 수 있게 하는 방법을 포함합니다.
- upip¶
CPython 의 pip에서 영감을 받았지만 훨씬 작고 기능이 축소된, 이제는 사용되지 않는 MicroPython용 패키지 관리자입니다. 그 대체품인 mip 을 참조하십시오.
- webrepl¶
브라우저에서 인터넷을 통해 장치의 REPL 에 연결하고 (파일을 전송하는) 방법입니다. https://micropython.org/webrepl 을 참조하십시오.