构建电路Python

欢迎使用 CircuitPython!

本文档仅作为快速入门指南。

有关如何构建 CircuitPython 的详细指南可以在 https://learn.adafruit.com/building-circuitpython/ 的 Adafruit 学习系统中找到

设置

请确保按照指南正确设置构建环境。你会需要:

  • Linux: https://learn.adafruit.com/building-circuitpython/linux

  • MacOS: https://learn.adafruit.com/building-circuitpython/macos

  • 适用于 Linux 的 Windows 子系统 (WSL): https://learn.adafruit.com/building-circuitpython/windows-subsystem-for-linux

子模块

这个项目有一堆 git 子模块。您需要定期更新它们。

git submodule sync
git submodule update --init

所需的 Python 包

不安装这些将阻止正确构建。

pip3 install -r requirements-dev.txt

交叉

作为构建过程的一部分,需要使用 mpy-cross 将 .py 文件编译为 .mpy 文件。编译(或重新编译) mpy-cross:

make -C mpy-cross

建筑

有许多 CircuitPython 的端口!要为您的电路板构建,请更改到适当的端口目录并构建。

例子:

cd ports/atmel-samd
make BOARD=circuitplayground_express

cd ports/nrf
make BOARD=circuitplayground_bluefruit

如果您不确定存在哪些板,请查看您的端口的板子目录。如果您有一台具有许多内核的快速计算机,请考虑添加 -j到您的构建标志中,例如-j17 在 6 核 12 线程机器上。

测试

如果您正在对核心语言进行更改,您可能会发现运行测试套件很有用。顶级tests目录中的测试套件。它需要unix端口才能运行。

cd ports/unix
make axtls
make micropython

然后你可以运行测试套件:

cd ../../tests
./run-tests

成功的运行会说类似的话

676 tests performed (19129 individual testcases)
676 tests passed
30 tests skipped: buffered_writer builtin_help builtin_range_binop class_delattr_setattr cmd_parsetree extra_coverage framebuf1 framebuf16 framebuf2 framebuf4 framebuf8 framebuf_subclass mpy_invalid namedtuple_asdict non_compliant resource_stream schedule sys_getsizeof urandom_extra ure_groups ure_span ure_sub ure_sub_unmatched vfs_basic vfs_fat_fileio1 vfs_fat_fileio2 vfs_fat_more vfs_fat_oldproto vfs_fat_ramdisk vfs_userfs

调试

在硬件上调试 CircuitPython 的最简单方法是使用 JLink 设备、JLinkGDBServer 和适当的 GDB。说明可以在 https://learn.adafruit.com/debugging-the-samd21-with-gdb 找到

如果使用 JLink,则需要同时运行JLinkGDBServerarm-none-eabi-gdb

例子:

JLinkGDBServer -if SWD -device ATSAMD51J19
arm-none-eabi-gdb build-metro_m4_express/firmware.elf -iex "target extended-remote :2331"

如果您的 port/build 包含arm-none-eabi-gdb-py,请考虑使用它,因为它可以用于更好地注册调试 https://github.com/bnahill/PyCortexMDebug

代码质量检查

我们使用预提交来应用代码质量检查。每个系统安装一次预提交

python3 -mpip install pre-commit

每个 git clone 激活一次

pre-commit --install

预提交还需要通过你的包管理器安装一些额外的程序:

  • 标准的 Unix 工具,例如 make、find 等

  • Tgettext 包,任何现代版本

  • uncrustify 0.71 版(也测试了 0.72)

每次创建 git commit 时,都会运行提交前的质量检查。您还可以运行它们,例如,使用或运行所有文件,无论是否修改。 pre-commit run foo.c pre-commit run --all

一些提交前的质量检查需要您主动注意解决,其他的(例如 uncrustify 的格式检查)是自动进行的,并且必须通过提交将它们简单地合并到您的代码更改中。