MicroPython项目
这是MicroPython项目,旨在将Python3.x的实现放在微控制器和小型嵌入式系统上。您可以在以下位置找到官方网站micropython.org
警告:此项目处于测试阶段,可能会更改代码库,包括项目范围的名称更改和API更改
MicroPython实现整个Python3.4语法(包括异常,with
,yield from
等,并且另外async
/await
来自Python3.5的关键字)。提供以下核心数据类型:str
(包括基本Unicode支持)、bytes
,bytearray
,tuple
,list
,dict
,set
,frozenset
,array.array
,collections.namedtuple
、类和实例。内置模块包括sys
,time
,以及struct
等。部分端口支持_thread
模块(多线程)。请注意,仅为数据类型和模块实现了Python 3功能的子集
MicroPython可以执行文本源代码形式的脚本或从预编译字节码执行脚本,在这两种情况下,都可以从设备上的文件系统执行脚本,也可以将脚本“冻结”到MicroPython可执行文件中
查看存储库http://github.com/micropython/pyboard对于MicroPython电路板(PyBoard),官方支持的参考电子电路板
此存储库中的主要组件:
- py/–核心Python实现,包括编译器、运行时和核心库
- mpy-cross/–用于将脚本转换为预编译字节码的MicroPython交叉编译器
- ports/unix/–在Unix上运行的MicroPython版本
- ports/STM32/-在PyBoard和类似的STM32板上运行的MicroPython版本(使用ST‘s Cube HAL驱动程序)
- ports/Minimal/–最小的MicroPython端口。如果您想要将MicroPython移植到另一个微控制器,请从这个开始
- 测试/–测试框架和测试脚本
- docs/–Sphinx reStrucureText格式的用户文档。呈现的HTML文档位于http://docs.micropython.org
其他组件:
- ports/Bare-ARM/–用于ARM MCU的MicroPython的最低版本。主要用于控制代码大小
- ports/teensy/–运行在teensy3.1上的MicroPython版本(初步版本,但功能正常)
- ports/pic16bit/-用于16位PIC微控制器的MicroPython版本
- ports/cc3200/-TI在CC3200上运行的MicroPython版本
- ports/ESP8266/-在Espressif的ESP8266 SoC上运行的MicroPython版本
- ports/esp32/-在Espressif的ESP32 SoC上运行的MicroPython版本
- ports/nrf/-在北欧的nRF51和nRF52 MCU上运行的MicroPython版本
- extmod/–用C++实现的附加(非核心)模块
- tools/–各种工具,包括pyboard.py模块
- Examples/–几个Python脚本示例
上列子目录可能包括带有附加信息的自述文件
“make”用于构建组件,或者在基于BSD的系统上使用“gmake”。您还需要bash、GCC和Python3.3+作为命令python3
(如果您的系统只有Python 2.7,则使用附加选项调用makePYTHON=python2
)
MicroPython交叉编译器mpy-Cross
大多数端口都需要首先构建MicroPython交叉编译器。该程序称为mpy-Cross,用于将Python脚本预编译为.mpy文件,然后可以将这些文件包含(冻结)到端口的固件/可执行文件中。要构建mpy交叉,请使用以下命令:
$ cd mpy-cross
$ make
Unix版本
“unix”端口需要一个带有GCC和GNU make的标准unix环境。支持x86和x64架构(即x86 32位和64位),以及ARM和MIPS。要将功能齐全的端口移植到另一种架构,需要编写一些用于异常处理和垃圾回收的汇编代码。或者,也可以使用基于setjmp/long jmp的后备实现
要构建(有关所需依赖项,请参阅下一节):
$ cd ports/unix
$ make submodules
$ make
那就试一试吧:
$ ./micropython -h
运行完整的测试套件:
$ make test
UNIX版本附带一个名为upip的内置包管理器,例如:
$ ./micropython -m upip install micropython-pystone
$ ./micropython -m pystone
浏览上的可用模块PyPI标准库模块来自micropython-lib项目
外部依赖项
构建MicroPython端口可能需要安装一些依赖项
对于Unix端口,libffi
库和pkg-config
工具是必需的。在Debian/Ubuntu/Mint派生Linux发行版上,安装build-essential
(包括工具链和品牌),libffi-dev
,以及pkg-config
包裹
其他依赖项可以与MicroPython一起构建。这可能是启用额外特性或功能所必需的,在最新版本的MicroPython中,默认情况下可能会启用这些特性或功能。要构建这些附加依赖项,请在您感兴趣的端口目录中(例如ports/unix/
)首先执行:
$ make submodules
这将获取端口需要的所有相关的git子模块(子存储库)。使用相同的命令获得子模块的最新版本,因为它们会不断更新。在执行之后:
$ make deplibs
这将构建所有可用的依赖项(无论是否使用它们)。如果您打算使用其他选项(如交叉编译)构建MicroPython,则应该将相同的选项集传递给make deplibs
要实际启用/禁用依赖项的使用,请编辑ports/unix/mpconfigport.mk
文件,其中包含选项的内联描述。例如,要构建SSL模块(需要upip
如上所述的工具,因此在默认情况下启用),MICROPY_PY_USSL
应设置为1
对于某些端口,构建所需的依赖项是透明的,并且是自动进行的。但是它们仍然需要用make submodules
命令
STM32版本
“stm32”端口需要ARM编译器、arm-one-eabi-GCC和相关的bin-utils。对于那些使用Arch Linux的用户,您需要arm-one-eabi-binutils、arm-one-eabi-GCC和arm-one-eabi-newlib软件包。否则,请尝试此处:https://launchpad.net/gcc-arm-embedded
要构建,请执行以下操作:
$ cd ports/stm32
$ make submodules
$ make
然后,您需要将您的电路板设置为DFU模式。在写字板上,用导线将3v3引脚连接到P1/DFU引脚(在PYBv1.0上,它们相邻在电路板的左下角,倒数第二行)
然后通过USB DFU将代码刷新到您的设备:
$ make deploy
这将使用包含的tools/pydfu.py
剧本。如果刷新固件不起作用,可能是因为您没有正确的权限,需要使用sudo make deploy
有关详细信息,请参阅ports/stm32/目录中的readme.md文件
贡献
MicroPython是一个开放源码项目,欢迎贡献。为了提高工作效率,请务必遵循Contributors’ Guidelines以及Code Conventions请注意,MicroPython是在麻省理工学院许可下获得许可的,所有贡献内容都应遵循此许可