맨위로가기

마이크로파이썬

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

마이크로파이썬은 2013년 데미안 조지가 킥스타터 후원 캠페인을 통해 처음 개발한, 마이크로컨트롤러 및 임베디드 시스템용 파이썬 프로그래밍 언어이다. 다양한 ARM 기반 아키텍처, ESP8266, ESP32 등을 지원하며, BBC Micro Bit 및 CircuitPython과 같은 파생 버전도 존재한다. 파이썬의 문법을 따르면서도 하드웨어 제어에 특화되어 있으며, 코드 이식성, 모듈, REPL(Read-Eval-Print Loop) 기능을 제공한다. 마이크로파이썬은 표준 파이썬 라이브러리의 하위 집합과 마이크로파이썬 특정 라이브러리를 제공하며, 교육, 장치 개발 및 테스트, 복잡한 응용 프로그램의 모니터링 및 구성에 활용된다.

더 읽어볼만한 페이지

  • 파이썬 - 귀도 반 로섬
    귀도 반 로섬은 네덜란드 출신의 프로그래머로, 1989년 크리스마스 기간에 취미로 파이썬 프로그래밍 언어를 개발했으며, 구글과 드롭박스 등에서 일하다 2020년 마이크로소프트에 수석 엔지니어로 합류했다.
  • 파이썬 - 모조 (프로그래밍 언어)
    모조는 모듈러사에서 개발한 파이썬과 유사한 구문의 고성능 프로그래밍 언어로, AI 애플리케이션 개발에 초점을 맞추고 러스트의 영향을 받은 메모리 안전성을 제공하며 향후 오픈 소스로 전환될 예정이다.
  • MIT 라이선스 소프트웨어 - MS-DOS
    MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다.
  • MIT 라이선스 소프트웨어 - Zcash
    Zcash는 존스 홉킨스 대학교 연구를 기반으로 개발된 익명성 강화 암호화폐로, zk-SNARK 영지식 증명을 통해 거래 당사자의 익명성을 보장하지만, 범죄 악용 우려와 규제 대상 가능성이 존재한다.
  • C로 작성된 자유 소프트웨어 - PostgreSQL
    PostgreSQL은 캘리포니아 대학교 버클리 분교의 Ingres 프로젝트에서 시작되어 전 세계 개발자들의 협력을 통해 발전해온 객체 관계형 데이터베이스 관리 시스템(ORDBMS)이다.
  • C로 작성된 자유 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
마이크로파이썬 - [IT 관련 정보]에 관한 문서
기본 정보
MicroPython 로고
MicroPython 로고
개발자데미안 P. 조지
출시일2014년 5월 3일
최신 버전1.19
최신 릴리스 날짜2022년 1월 17일
프로그래밍 언어C
플랫폼ARM Cortex-M
STM32
ESP8266
ESP32
16비트 PIC
Unix
Microsoft Windows
Zephyr
자바스크립트
RP2040
라이선스MIT 라이선스
웹사이트MicroPython 공식 웹사이트

2. 역사

2020년에 출시되었으며 MicroPython이 내장된 카시오 FX-9860GIII 계산기


마이크로파이썬은 2013년 킥스타터 모금 캠페인 성공 이후 오스트레일리아의 프로그래머이자 물리학자인 데미안 조지(Damien George)에 의해 개발되었다.[6] ARM 기반 아키텍처를 지원하도록 개발되었으며,[7] 2016년에는 BBC Micro Bit을 위한 마이크로파이썬 버전이 파이썬 소프트웨어 재단과 BBC의 Micro Bit 파트너십의 일환으로 만들어졌다.[12] 2017년 7월에는 교육과 사용 편의성에 중점을 둔 마이크로파이썬의 포크인 CircuitPython이 만들어졌다.[13]

2. 1. 초기 개발

MicroPython은 2013년 킥스타터 후원 캠페인 성공 이후 오스트레일리아의 프로그래머 데미안 조지(Damien George)에 의해 처음 만들어졌다.[6] 최초의 킥스타터 캠페인은 STM32F4 기반 개발 보드 "pyboard"와 함께 MicroPython을 출시했다. 그동안 MicroPython은 여러 ARM 기반 아키텍처를 지원하도록 개발되었다.[7]

2. 2. 지원 플랫폼 확장

MicroPython은 여러 ARM 기반 아키텍처를 지원하도록 개발되었다.[7]

주요 지원 포트는 다음과 같다:

  • ARM Cortex-M (다수의 STM32[8] 보드, RP2040 보드, TI CC3200/WiPy, Teensy 보드, Nordic nRF 시리즈, SAMD21 및 SAMD51)
  • ESP8266
  • ESP32[9]
  • 16비트 PIC
  • Unix
  • Windows
  • Zephyr
  • JavaScript[10]


이 외에도, 주류에서 지원되지 않는 다양한 시스템 및 하드웨어 플랫폼을 위한 많은 포크가 존재한다.[11]

2. 3. BBC Micro:bit 및 CircuitPython

2016년, BBC Micro Bit을 위한 MicroPython 버전이 Python Software Foundation과 BBC의 Micro Bit 파트너십의 일환으로 만들어졌다.[12]

2017년 7월, 교육과 사용 편의성에 중점을 둔 MicroPython의 포크인 CircuitPython이 만들어졌다. MicroPython과 CircuitPython은 지원하는 하드웨어가 약간 다르다. 예를 들어 CircuitPython은 Atmel SAM D21 및 D51 보드를 지원하지만 ESP8266에 대한 지원은 중단되었다. CircuitPython 버전 4.0은 MicroPython 버전 1.9.4를 기반으로 한다.[13]

2. 4. 기타 플랫폼 포팅

2017년, Microsemi는 RISC-V (RV32 및 RV64) 아키텍처용 MicroPython 포트를 만들었다.[14]

2019년 4월, 레고 마인드스톰 EV3를 위한 MicroPython 버전이 만들어졌다.[15]

2021년 1월, RP2040 (ARM Cortex-M0+, Raspberry Pi Pico 등)용 MicroPython 포트가 생성되었다.[16]

3. 특징

마이크로파이썬은 마이크로컨트롤러에서 실행되는 완전한 Python 컴파일러이자 런타임 환경이며, 명령어 즉시 실행을 위한 대화형 프롬프트(REPL)를 제공한다. MicroPython은 Python 코어 라이브러리뿐만 아니라 하위 계층 접근을 제공하는 모듈도 포함한다.[19]

2013년 킥스타터에서 자금 모금에 성공한 후, 호주 프로그래머이자 물리학자인 데미안 조지(Damien George)가 마이크로파이썬을 개발했다. 원래 킥스타터 프로젝트는 pyboard라는 STM32F4영어 탑재 마이크로컨트롤러 보드와 함께 출시되었지만, 이후 MicroPython은 다양한 ARM 아키텍처 기반 아키텍처를 지원하게 되었다. 메인라인에서 지원되는 아키텍처는 ARM Cortex-M(STM32 사용 보드, TI CC3200/WiPy, Teensy 보드, Nordic nRF 시리즈, SAMD21, SAMD51), ESP8266, ESP32, 16비트 PIC, Unix, Windows, Zephyr, JavaScript 등이다. 이 외에도 메인라인에서 지원되지 않는 다양한 시스템 및 하드웨어를 위한 수많은 포크가 존재한다.

2016년, BBC와의 Micro Bit 파트너십 일환으로 Python 소프트웨어 재단이 BBC Micro:bit용 MicroPython 버전을 개발했다.

2017년 7월에는 교육용 및 사용 편의성을 강조한 MicroPython 포크인 CircuitPython이 제작되었다. MicroPython과 CircuitPython은 지원 하드웨어가 약간 다르다(예: CircuitPython은 Atmel SAM D21 및 D51을 지원하지만, ESP8266은 지원하지 않는다). 현재 CircuitPython 버전 4.0은 MicroPython 버전 1.9.4를 기반으로 한다.

2017년, Microsemi영어는 MicroPython을 RISC-V(RV32 및 RV64) 아키텍처로 이식하고 있다.

2021년 1월, Raspberry Pi Pico 등에 채택된 RP2040(ARM Cortex-M0+ 아키텍처)으로의 MicroPython 이식 버전이 제작되었다.

소스 코드는 GitHub에서 MIT 라이선스로 공개되어 있다.

3. 1. 파이썬 실행 능력

마이크로파이썬은 사용자가 간단하고 이해하기 쉬운 파이썬 프로그램을 만들 수 있도록 파이썬 실행 기능을 제공한다.[17] 많은 표준 파이썬 라이브러리를 지원하며, 파이썬에서 가장 많이 사용되는 라이브러리의 80% 이상을 지원한다.[17] 마이크로컨트롤러와 파이썬 간의 성능 격차를 지원하기 위해 특별히 설계되었다.[18] 파이썬 코드는 하드웨어에 직접 접근하고 상호 작용할 수 있어, 운영 체제에서 실행되는 일반적인 파이썬 응용 프로그램에서는 사용할 수 없는 하드웨어 기능을 확장한다.[19]

3. 2. 코드 이식성

마이크로파이썬은 하드웨어 추상화 계층(HAL) 기술을 활용하여, 동일 계열 또는 플랫폼 내의 다양한 마이크로컨트롤러와 마이크로파이썬을 지원하고 다운로드할 수 있는 장치 간에 개발된 코드를 이식할 수 있도록 한다.[20] 프로그램은 종종 고성능 마이크로컨트롤러에서 개발 및 테스트되고, 최종 응용 프로그램은 저성능 마이크로컨트롤러에서 사용되도록 배포된다.[20]

3. 3. 모듈

마이크로파이썬은 새로운 코드를 작성한 후, 펌웨어의 일부로 사용할 수 있는 고정 모듈을 생성하여 라이브러리로 활용할 수 있는 기능을 제공한다. 이 기능은 이미 오류가 없고 테스트된 동일한 코드를 마이크로파이썬 환경으로 반복적으로 다운로드할 필요성을 줄여준다. 이러한 유형의 모듈은 컴파일러를 위해 마이크로컨트롤러의 모듈 디렉토리에 저장되어 마이크로컨트롤러에 업로드되며, 여기서 라이브러리는 파이썬의 import 명령을 사용하여 반복적으로 사용할 수 있게 된다.[20]

3. 4. REPL (Read-Eval-Print Loop)

REPL은 개발자가 개별 코드 줄을 입력하면 터미널 에뮬레이터에서 즉시 실행할 수 있게 해준다.[21] 리눅스 및 macOS 시스템에는 직렬 USB 연결을 사용하여 마이크로파이썬 장치의 REPL에 직접 연결하는 데 사용할 수 있는 터미널 에뮬레이터가 있다. REPL은 코드의 각 부분을 실행하고 결과를 시각적으로 검사할 수 있으므로 응용 소프트웨어의 일부를 즉시 테스트하는 데 도움이 된다.[17]

REPL의 유용한 명령은 다음과 같다(직렬 콘솔에 연결된 경우).[21]

  • '''Ctrl+C''': 키보드 인터럽트
  • '''Ctrl+D''': 다시 로드
  • `help()`: 도움말 메시지
  • `help("modules")`: 내장 모듈 환경 나열
  • `import board` 입력 후 `dir(board)`: 프로그램 코드에서 사용할 수 있는 마이크로컨트롤러 보드의 모든 핀 나열

3. 5. 한계

마이크로파이썬은 파이썬 3.4와 3.5 버전의 많은 기능을 구현했지만, 3.5 이후에 나온 모든 기능을 구현하지는 않는다.[22] 다만, 3.6 버전의 새로운 구문과 3.8 버전의 할당 표현식, 그리고 3.9 버전과 같은 최신 기능 중 일부는 포함한다. 또한, 표준 라이브러리의 일부분만을 포함하고 있다.[23]

아두이노와 같은 다른 인기 있는 플랫폼에 비해 마이크로컨트롤러 시장에서 하드웨어 지원이 제한적이며, 마이크로파이썬을 지원하는 마이크로컨트롤러 종류도 적다.[18] 다른 플랫폼과는 다르게 통합 개발 환경(IDE)이나 특정 편집기가 포함되어 있지 않다.[18]

4. 문법 및 의미론

마이크로파이썬의 문법은 명확하고 이해하기 쉬운 스타일과 강력함으로 인해 파이썬에서 채택되었다.[24] 대부분의 다른 프로그래밍 언어와 달리 가독성을 우선시하기 위해 구두점이 적고 문법적 조작이 적게 사용된다.[17]

마이크로파이썬은 함수, 조건 또는 루프에 속하는 코드를 들여쓰는 방식으로 파이썬의 코드 블록 스타일을 채택했다.[17] 이는 블록을 구분하기 위해 기호나 키워드를 사용하는 대부분의 다른 언어와 다르다.[17] 콜론(:)은 조건문의 끝을 나타내는 데 사용되는 핵심 기호이다.[17] 들여쓰기 크기는 탭 하나 또는 공백 4개와 같다.

마이크로파이썬은 원시 및 논리 연산을 사용하여 다양한 수학적 연산을 수행할 수 있다.[19]

4. 1. 코드 블록

마이크로파이썬은 함수, 조건 또는 루프에 속하는 코드를 들여쓰는 방식으로 파이썬의 코드 블록 스타일을 채택했다.[17] 이는 블록을 구분하기 위해 기호나 키워드를 사용하는 대부분의 다른 언어와 다르다.[17] 이러한 방식은 시각적 구조가 의미 구조를 반영하므로 마이크로파이썬 코드의 가독성을 높이는 데 도움이 된다. 이 핵심 기능은 단순하지만 중요하며, 들여쓰기를 잘못 사용하면 잘못된 조건에서 코드가 실행되거나 인터프리터에서 전반적인 오류가 발생할 수 있다.[17]

콜론(:)은 조건문의 끝을 나타내는 데 사용되는 핵심 기호이다.[17] 들여쓰기 크기는 탭 하나 또는 공백 4개와 같다.

4. 2. 연산

마이크로파이썬은 원시 및 논리 연산을 사용하여 다양한 수학적 연산을 수행할 수 있다.[19]

지원되는 연산[19]
유형연산자이름예시
산술+덧셈변수 + 1
-뺄셈변수 - 1
*곱셈변수 * 4
/나눗셈변수 / 4
%나머지 연산변수 % 4
비교==같음표현식1 == 표현식2
!=같지 않음표현식1 != 표현식2
<미만표현식1 < 표현식2
>초과표현식1 > 표현식2
<=이하표현식1 <= 표현식2
>=이상표현식1 >= 표현식2
논리&비트 단위 AND변수1 & 변수2
|비트 단위 OR변수1 | 변수2
^비트 단위 XOR변수1 ^ 변수2
~비트 단위 NOT~변수1
and논리 AND변수1 and 변수2
or논리 OR변수1 or 변수2


5. 라이브러리

MicroPython은 마이크로컨트롤러에서 실행되도록 설계되어, 표준 파이썬 라이브러리의 기능을 축소하거나 수정한 버전의 라이브러리를 제공한다. 또한, 하드웨어 접근을 위한 특정 라이브러리도 포함하고 있다.[19]

마이크로파이썬은 각 마이크로컨트롤러 보드마다 언어와 라이브러리 사용 가능 여부가 다를 수 있어, 고도로 맞춤화 및 구성이 가능하다. 즉, 모듈의 일부 함수나 클래스, 또는 전체 모듈을 사용하지 못하거나 변경될 수 있다.[19]

5. 1. 표준 파이썬 라이브러리

마이크로파이썬은 표준 파이썬 라이브러리와 유사한 라이브러리를 가지고 있지만, 메모리 절약을 위해 기능을 축소하거나 수정하여 더 작게 만들었습니다.[19] 일부 표준 파이썬 라이브러리는 마이크로파이썬과 구별하기 위해 이름이 변경되었습니다.[19]

마이크로파이썬은 각 마이크로컨트롤러 보드마다 언어와 라이브러리 사용 가능 여부가 다를 수 있어, 고도로 맞춤화 및 구성이 가능합니다. 즉, 모듈의 일부 함수나 클래스, 또는 전체 모듈을 사용하지 못하거나 변경될 수 있습니다.[19]

마이크로파이썬의 표준 파이썬 라이브러리[4]
라이브러리 이름설명
array배열 연산
cmath복소수 수학 함수
gc가비지 컬렉터
math부동 소수점 숫자에 대한 기본 수학 연산
sys시스템 수준 함수, 인터프리터 변수 접근
binascii이진수ASCII 간 변환
collections다양한 객체 저장 컬렉션 및 컨테이너 유형 연산
errno오류 코드 접근
hashlib바이너리 해시 알고리즘 연산
heapq힙 큐 알고리즘 구현 연산
io입출력 스트림 처리 연산
jsonJSON 문서와 파이썬 객체 간 변환 처리
os파일 시스템 접근 및 기본 운영 체제 함수
re정규 표현식 일치 연산 구현
select여러 스트림 이벤트 처리 함수
socket소켓 연결, 소켓 인터페이스 접근
struct기본 데이터 유형 패킹 및 언패킹, 파이썬 객체 변환 수행
time시간 간격 측정 및 지연 구현 등 시간 및 날짜 함수
zlib바이너리 데이터 압축 해제 연산


5. 2. 마이크로파이썬 특정 라이브러리

마이크로파이썬 특정 라이브러리[4]
라이브러리 이름설명
framebuf디스플레이로 전송할 비트맵 이미지를 생성하는 데 사용할 수 있는 프레임 버퍼를 제공한다.
machine하드웨어 블록에 접근하고 상호 작용하는 데 도움이 되는 기능
micropython마이크로파이썬 내부 접근 및 제어
network네트워크 드라이버 설치를 지원하여 네트워크를 통한 상호 작용을 허용한다.
ctypes바이너리 데이터 구조에 접근


5. 3. 사용자 정의 라이브러리

마이크로파이썬은 사용자가 직접 라이브러리를 만들어 기능을 확장할 수 있도록 지원한다. 새로운 코드를 작성한 후 펌웨어의 일부로 사용할 수 있는 고정 모듈을 생성하여 라이브러리로 사용할 수 있다. 이 기능은 이미 오류가 없고 테스트된 동일한 코드를 마이크로파이썬 환경으로 반복적으로 다운로드하는 것을 방지하는 데 도움이 된다.[20] 이러한 모듈은 컴파일러를 위해 마이크로컨트롤러의 모듈 디렉토리에 저장되어 마이크로컨트롤러에 업로드되며, 여기서 라이브러리는 파이썬의 import 명령을 사용하여 반복적으로 사용할 수 있게 된다.[20]

표준 마이크로파이썬 라이브러리와 드라이버가 충분하지 않은 연산이나 계산으로 요구 사항을 충족하지 못할 경우, 사용자는 기존 라이브러리와 펌웨어의 기능을 확장하는 사용자 정의 라이브러리를 만들 수 있다.[20]

마이크로파이썬에서는 .py로 끝나는 파일이 다른 라이브러리 별칭보다 우선하므로, 사용자는 기존 라이브러리의 사용 및 구현을 확장할 수 있다.[19]

6. 지원 하드웨어

마이크로파이썬은 다양한 마이크로컨트롤러 보드에서 실행할 수 있다. 크게 두 가지 유형으로 나뉘는데, 제조 시 마이크로파이썬이 기본 설치되어 바로 사용 가능한 보드와 사용자가 직접 펌웨어를 설치해야 하는 보드이다. 마이크로파이썬 설치는 잘 문서화되어 있어 사용자 친화적이다.[20]

마이크로파이썬은 2013년 킥스타터 모금으로 시작되어, STM32F4 마이크로컨트롤러를 탑재한 파이보드(pyboard)와 함께 출시되었다.[19] 이후, ARM 아키텍처 기반의 다양한 마이크로컨트롤러를 지원하도록 확장되었다. 주요 지원 대상은 ARM Cortex-M 시리즈 (STM32, TI CC3200/WiPy, Teensy, Nordic nRF, SAMD21, SAMD51), ESP8266, ESP32 등이다.[19]

2016년에는 BBC와의 협력으로 BBC Micro:bit용 마이크로파이썬이 개발되었고,[19] 2017년에는 교육용 및 사용 편의성을 강조한 CircuitPython이 만들어졌다.[19] CircuitPython은 마이크로파이썬 기반이지만, 지원 하드웨어에 차이가 있다. (예: CircuitPython은 Atmel SAM D21 및 D51 지원, ESP8266 미지원)[19] 2021년 1월에는 Raspberry Pi Pico 등에 사용되는 RP2040 (ARM Cortex-M0+ 아키텍처)용 마이크로파이썬 포팅 버전이 제작되었다.[19]

6. 1. 실행 코드

프로그램을 마이크로파이썬 보드로 옮기려면, 파일을 생성하여 실행하기 위해 마이크로컨트롤러에 복사해야 한다. 컴퓨터와 같은 장치에 하드웨어를 연결하면 장치에 보드의 플래시 드라이브가 나타나 파일을 플래시 드라이브로 옮길 수 있다. 일반적으로 수정하지 않는 boot.py와 main.py 두 개의 파이썬 파일이 존재한다. main.py는 마이크로컨트롤러가 부팅될 때마다 프로그램을 실행하려는 경우 수정할 수 있으며, 그렇지 않으면 REPL 콘솔을 사용하여 프로그램을 실행한다.[19]

6. 2. Pyboard

Pyboard는 마이크로파이썬 소프트웨어 기능을 완벽하게 지원하는 공식 마이크로파이썬 마이크로컨트롤러 보드이다.[4] Pyboard의 하드웨어 기능은 다음과 같다.[4]

  • 마이크로컨트롤러(MCU, CPU, 플래시 ROM 및 RAM)
  • 마이크로 USB 커넥터
  • 마이크로 SD 카드 슬롯
  • IO 핀
  • 스위치, LED, 서보 포트, 실시간 시계, 가속도계

6. 2. 1. 부팅 과정

파이보드(pyboard)는 `/flash`라는 이름의 내부 드라이브(파일 시스템)를 포함하며, 이 드라이브는 보드의 플래시 메모리에 저장된다. 또한 microSD 카드를 슬롯에 삽입할 수 있으며, `/sd`를 통해 접근할 수 있다. 부팅 시 파이보드는 `/flash` 또는 `/sd` 중 부팅할 파일 시스템을 선택해야 하며, 현재 디렉터리는 `/flash` 또는 `/sd`로 설정된다. 기본적으로 SD 카드가 삽입되어 있으면 `/sd`가 사용되고, 그렇지 않으면 `/flash`가 사용된다. 필요한 경우 `/flash/SKIPSD`라는 빈 파일을 생성하여 부팅 과정에서 SD 카드를 사용하지 않도록 할 수 있다. 이 파일은 보드에 남아 있으며, 파이보드가 부팅될 때 존재하면 부팅 과정에서 SD 카드를 건너뛴다.[4]

6. 2. 2. 부팅 모드

pyboard가 정상적으로 전원을 켜거나 재설정 버튼을 누르면 표준 모드로 부팅된다. 즉, boot.py 파일이 실행된 다음 USB가 구성되고 마지막으로 파이썬 프로그램이 실행된다.[4]

사용자 스위치를 누른 상태에서 보드가 부팅되는 동안 재설정 버튼을 누르고 사용자 스위치를 계속 누르고 있으면 표준 부팅 시퀀스를 재정의할 수 있다. pyboard의 LED는 모드 사이를 깜박이며 LED가 사용자가 원하는 모드에 도달하면 사용자 스위치를 놓을 수 있으며 보드는 특정 모드로 부팅된다.[4]

부팅 모드는 다음과 같다.[4]

부팅 모드LED 상태설명
표준 부팅녹색 LED만 켜짐boot.py 실행 후 파이썬 프로그램 실행
안전 부팅주황색 LED만 켜짐부팅 중 스크립트 실행 안 함
파일 시스템 재설정녹색 및 주황색 LED가 함께 켜짐플래시 드라이브를 공장 상태로 재설정하고 안전 모드로 부팅. 파일 시스템이 손상되었을 때 해결책으로 사용됨.


6. 2. 3. 오류

빨간색과 녹색 LED가 번갈아 깜박이면 파이썬 스크립트에 오류가 발생한 것이므로 REPL을 사용해 디버깅해야 한다.[4] 4개의 LED가 모두 켜졌다 꺼졌다를 반복하면 복구할 수 없는 하드 오류가 발생한 것이므로 하드 리셋이 필요하다.[4]

7. 바이트코드

마이크로파이썬은 마이크로파이썬 바이트코드(파일 확장자 '.mpy')를 생성하는 크로스 컴파일러를 포함한다. 파이썬 코드는 마이크로컨트롤러에서 직접 바이트코드로 컴파일하거나 다른 곳에서 미리 컴파일할 수 있다.

마이크로파이썬 펌웨어는 컴파일러 없이 빌드할 수 있으며, 미리 컴파일된 '.mpy' 프로그램을 실행할 수 있는 가상 머신만 남게 된다.

8. 구현 및 활용

마이크로파이썬은 표준 소프트웨어를 통해 특정 마이크로컨트롤러에 펌웨어를 플래시 메모리에 로드하여 사용되며, 직렬 인터페이스를 에뮬레이션하는 컴퓨터에 로드된 터미널 응용 프로그램을 사용하여 통신한다.[20] 마이크로파이썬은 마이크로컨트롤러에서 실행되는 완전한 Python 컴파일러 및 런타임이며, 지원되는 명령을 즉시 실행하기 위한 대화형 프롬프트(REPL)도 제공된다.

마이크로파이썬의 주요 사용 사례는 교육, 장치 및 센서 설계 개발 및 테스트, 복잡한 응용 프로그램 설계를 위한 모니터링 및 구성 도구 등으로 나눌 수 있다.[20]

구현은 표준 및 지원 라이브러리의 가용성, 그리고 마이크로컨트롤러의 플래시 메모리 및 RAM 크기에 따라 달라질 수 있다.[20] MicroPython은 Python의 코어 라이브러리뿐만 아니라 하위 계층에 대한 접근을 제공하는 모듈도 포함되어 있다.

MicroPython은 2013년 킥스타터(Kickstarter)에서 자금 모금에 성공한 후, 호주의 프로그래머이자 물리학자인 데미안 조지(Damien George)에 의해 개발되었다. 원래 킥스타터 프로젝트에서는 pyboard라는 STM32#STM32 F4를 탑재한 마이크로컨트롤러 보드와 함께 출시되었지만, MicroPython은 많은 ARM 아키텍처 기반 아키텍처를 지원한다. 메인라인에서 지원되는 것은 ARM Cortex-M(STM32를 사용한 다양한 보드, TI CC3200/WiPy, Teensy 보드, Nordic nRF 시리즈, SAMD21, SAMD51), ESP8266, ESP32, 16비트 PIC, Unix, Windows, Zephyr, JavaScript이다. 이 외에도 메인라인에서 지원되지 않는 다양한 시스템 및 하드웨어를 위한 수많은 포크가 있다.

2016년에는 BBC Micro:bit용 MicroPython 버전이 BBC와의 Micro Bit 파트너십의 일환으로 Python 소프트웨어 재단에 의해 개발되었다.

2017년 7월에는 MicroPython의 포크로서 교육용 및 사용 편의성을 강조한 CircuitPython이 제작되었다. MicroPython과 CircuitPython은 지원하는 하드웨어가 약간 다르다(예: CircuitPython은 Atmel SAM D21 및 D51을 지원하지만, ESP8266은 지원하지 않는다). 현재 CircuitPython 버전 4.0은 MicroPython 버전 1.9.4를 기반으로 한다.

2017년, 는 MicroPython을 RISC-V(RV32 및 RV64) 아키텍처로 이식하고 있다.

2021년 1월, MicroPython의 RP2040(ARM Cortex-M0+ 아키텍처, Raspberry Pi Pico 등에서 채택)으로의 이식 버전이 제작되었다.

소스 코드는 GitHub에서 MIT 라이선스로 공개되어 있다.

8. 1. 구현

마이크로파이썬은 표준 소프트웨어를 통해 특정 마이크로컨트롤러에 펌웨어를 플래시 메모리에 로드하여 사용하며, 직렬 인터페이스를 에뮬레이션하는 컴퓨터에 로드된 터미널 응용 프로그램을 사용하여 통신한다.[20]

마이크로파이썬의 구현은 표준 및 지원 라이브러리의 가용성, 그리고 마이크로컨트롤러의 플래시 메모리 및 RAM 크기에 따라 달라질 수 있다.[20]

8. 2. 활용 사례

마이크로파이썬의 주요 사용 사례는 다음 3가지 범주로 일반화할 수 있다.[20]

  • '''교육 목적''': 마이크로컨트롤러와 상호 작용하기 위해 마이크로파이썬의 읽기-평가-출력 루프(REPL)를 사용함으로써, 더 복잡한 프로그래밍 언어보다 간단한 방식으로 데이터 처리 및 보드와의 통신 개념을 시각적으로 설명할 수 있다.
  • '''장치 및 센서 설계 개발 및 테스트''': 마이크로파이썬은 주변 장치 통신 설정 및 제어를 구현하는 개발자의 일반적인 작업을 해결하는, 마이크로컨트롤러에 사용되는 인터페이스의 검증되고 버그가 없으며 철저히 테스트된 참조 구현을 제공한다. 마이크로파이썬은 장치 레지스터에 직접적이고 상호 작용적인 접근성을 제공하므로 하드웨어 부품 및 장치, 그리고 장치로부터 데이터를 제어하고 획득하는 알고리즘을 쉽게 검증하고 개발하며 테스트할 수 있다.
  • '''복잡한 응용 프로그램 설계를 위한 모니터링 및 구성 도구''': 특정 응용 프로그램은 고성능 마이크로컨트롤러에서 특정 응용 프로그램을 필요로 한다. 마이크로파이썬은 시스템 매개변수의 상태 모니터링 및 설정을 지원할 수 있다.


마이크로파이썬 구현은 표준 및 지원 라이브러리의 가용성, 그리고 마이크로컨트롤러의 플래시 메모리 및 RAM 크기에 따라 달라질 수 있다.[20]

참조

[1] 웹사이트 micropython/LICENSE at master · micropython/micropython https://github.com/m[...] 2014-05-04
[2] 간행물 Micro Python: more powerful than Arduino, simpler than the Raspberry Pi https://www.wired.co[...] 2013-12-06
[3] 뉴스 Micro Python's tiny circuits: Python variant targets microcontrollers http://www.infoworld[...] InfoWorld 2014-07-05
[4] 웹사이트 MicroPython - Python for microcontrollers https://micropython.[...]
[5] 웹사이트 MicroPython on GitHub https://github.com/m[...] 2022-02-07
[6] 웹사이트 Micro Python: Python for microcontrollers https://www.kickstar[...] 2016-02-26
[7] 뉴스 Prototype to production: MicroPython under the hood http://www.edn.com/e[...] EDN Network 2016-07-11
[8] 웹사이트 MicroPython on Nucleo STM32, STM32F411CE, and STM32F401CC: flashing firmware and basic tools https://mischianti.o[...] 2023-08-00
[9] 웹사이트 MicroPython with esp8266 and esp32: flashing firmware and programming with basic tools https://mischianti.o[...] 2023-06-07
[10] 웹사이트 micropython/ports at master · micropython/micropython https://github.com/m[...]
[11] 웹사이트 Awesome MicroPython https://github.com/p[...]
[12] 웹사이트 Hands on with the BBC Micro-Bit user interface http://www.electroni[...] 2015-07-07
[13] 웹사이트 CircuitPython 4.0.1 released! https://blog.adafrui[...] Adafruit Industries 2019-05-22
[14] 웹사이트 RISC-V Poster Preview — 7th RISC-V Workshop https://content.risc[...] 2017-11-28
[15] 웹사이트 LEGO releases MicroPython for EV3 based on ev3dev and Pybricks https://www.ev3dev.o[...]
[16] 웹사이트 Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 https://www.raspberr[...] 2021-01-21
[17] 서적 MicroPython Cookbook Packt Publishing 2019-00-00
[18] 웹사이트 An Introduction to MicroPython https://all3dp.com/2[...] 2021-11-25
[19] 서적 MicroPython for the Internet of Things Apress 2017-00-00
[20] 학술 Development of IoT applications based on the MicroPython platform for Industry 4.0 implementation 2020-00-00
[21] 웹사이트 The REPL http://learn.adafrui[...] Adafruit Learning System
[22] 웹사이트 MicroPython differences from CPython — MicroPython latest documentation https://docs.micropy[...]
[23] 웹사이트 MicroPython - Python for microcontrollers https://www.micropyt[...]
[24] 학술 An Efficient Control-flow based Obfuscator for Micropython Bytecode 2021-00-00
[25] 학술 MicroPython-based educational mobile robot for computer coding learning 2017-00-00
[26] 문서 MicroPython version 1.19 released https://forum.microp[...]
[27] 웹사이트 micropython/LICENSE at master · micropython/micropython https://github.com/m[...] 2014-05-04
[28] 웹사이트 MicroPython - Python for microcontrollers http://micropython.o[...]
[29] 뉴스 Micro Python: more powerful than Arduino, simpler than the Raspberry Pi https://www.wired.co[...] Wired 2013-12-06
[30] 뉴스 Micro Python's tiny circuits: Python variant targets microcontrollers http://www.infoworld[...] InfoWorld 2014-07-05
[31] 웹사이트 Micro Python: Python for microcontrollers https://www.kickstar[...] Kickstarter
[32] 뉴스 Prototype to production: MicroPython under the hood http://www.edn.com/e[...] EDN Network 2016-07-11
[33] 웹사이트 micropython/ports at master · micropython/micropython https://github.com/m[...]
[34] 웹사이트 Awesome MicroPython https://github.com/p[...]
[35] 웹사이트 Hands on with the BBC Micro-Bit user interface http://www.electroni[...]
[36] 웹사이트 CircuitPython 4.0.1 released! https://blog.adafrui[...] Adafruit Industries 2019-06-11
[37] 웹사이트 RISC-V Poster Preview — 7th RISC-V Workshop https://content.risc[...] 2017-11-28
[38] 웹사이트 Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 https://www.raspberr[...] 2021-01-21
[39] 웹사이트 MicroPython on GitHub https://github.com/m[...] 2017-10-24
[40] 웹인용 micropython/LICENSE at master · micropython/micropython https://github.com/m[...] 2017-02-11
[41] 잡지 Micro Python: more powerful than Arduino, simpler than the Raspberry Pi https://www.wired.co[...] 2013-12-06
[42] 뉴스 Micro Python's tiny circuits: Python variant targets microcontrollers http://www.infoworld[...] InfoWorld 2014-07-05
[43] 웹인용 MicroPython - Python for microcontrollers https://micropython.[...] 2017-08-12
[44] 웹인용 MicroPython on GitHub https://github.com/m[...] 2022-02-07



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com