ESP32-S2 上的 Circuitpython¶
此端口将 ESP32-S2 系列模块从 Espressif 添加到 Circuitpython。ESP32-S2 模块是专为物联网应用设计的低功耗、单核 Wi-Fi 微控制器 SoC。
该端口的组织方式:¶
bindings/ 包含一些必需的 ESP-IDF 绑定,用于异常和内存。
boards/ 包含每个开发板的配置文件和端口上可用的 breakout。
common-hal/ 包含特定于端口的模块实现,由共享模块和共享绑定使用。
esp-idf/ 包含乐鑫 IoT 开发框架安装,包括端口的所有驱动程序。
modules/ 包含特定于某些 ESP32-S2 硬件模块的信息,例如用于 WROVER 和 WROOM 上的闪存和 RAM 的引脚。
外设/包含外设设置文件和外设映射信息,按系列和子变体排序。此目录中的大多数文件都可以使用tools/ 中的 python 脚本生成。
supervisor/ 包含内部闪存、串行和 USB 的特定于端口的实现,以及port.c文件,它在启动时初始化端口。
tools/ 包括用于调试和其他目的的有用 python 脚本。
在根级别,请参阅mpconfigboard.h和mpconfigport.mk以获取特定于端口的设置和已启用的 circuitpython 模块列表。
连接到 ESP32-S2¶
Saola等ESP32-S2开发板内置的USB接口并不是开发板自带的USB接口,而是一个调试和编程接口。实际的 ESP32-S2 原生 USB 暴露了 Circuitpython 驱动器和 CDC 连接,它位于 IO 引脚 19 和 20 上:
通用输入输出接口 |
USB |
---|---|
20 |
D+(绿色) |
19 |
D-(白色) |
地线 |
地(黑色) |
5V |
+5V(红色) |
建筑和闪烁¶
在构建或刷写 ESP32-S2 之前,您必须安装 esp-idf。每次更新 esp-idf 时都必须重新执行此操作,但不是每次构建时都重新执行此操作。运行from移动到 esp32s2 端口根目录,运行:cd ports/esp32s2
circuitpython/
./esp-idf/install.sh
在此初始安装后,您必须将 esp-idf 工具添加到您的路径中。每当您打开一个新的 bash 环境进行构建或刷写时,您也必须这样做::
. esp-idf/export.sh
当 Circuitpython 将 ESP-IDF 更新为新版本时,您可能需要再次运行此安装过程。所使用的确切命令也可能因您的 bash 环境而异。
诸如 Saola 之类的建筑板通常是通过make flash
完成。 默认端口是tty.SLAB_USBtoUART
,它仅适用于某些 Mac 设置。在大多数机器上,无论是 Mac 还是 Linux,您都需要通过运行ls /dev/tty.usb*
并选择仅在插入开发板时出现的端口来自己设置端口。带有端口设置的示例 make 命令如下:
make BOARD=espressif_saola_1_wrover flash PORT=/dev/tty.usbserial-1421120
调试¶
ESP32-S2 支持使用 JLink 或其他探针硬件通过 OpenOCD 进行 JTAG 调试。官方教程可以在 Espressif 网站上 这里找到,但它们主要针对内置调试的 ESP32-S2 Kaluga。
在 esp-idf 安装和设置过程中,OpenOCD 会自动安装并添加到您的 bash 环境中。您可以根据教程使用openocd --version
仔细检查它是否已安装。在不包含集成调试器的电路板上,根据 JTAG 调试说明 连接 JTAG 探针。
调试器物理连接后,必须使用附加的配置文件运行OpenOCD,并指定接口(调试器探测器)和目标或板(目标仅用于SOC,在不存在完整板配置文件时可以使用)。通过在bash中运行echo $OPENOCD_SCRIPTS
来检查OPENOCD_SCRIPTS
环境变量,可以找到这些文件的路径位置。接口将位于interface/
目录中,目标和板分别位于target/
和board/
目录中。
注意:不幸的是,除了 Kaluga 之外,esp32-s2 没有任何板文件,并且包含的target/esp32s2.cfg
目标文件默认不会在 Jlink 上用于 Saola 1 等板,因为默认速度不正确。此外,这些文件受 GPL 保护,不能包含在 Circuitpython 中。因此,您必须自己复制 esp32s2.cfg 文件并手动添加以下行,在文件开头的下方:transport select jtag
adapter_khz 1000
完成后,您的最终 OpenOCD 命令可能如下所示:
openocd -f interface/jlink.cfg -f SOMEPATH/copied-esp32s2-saola-1.cfg
Where SOMEPATH
您复制的配置文件的位置在哪里(例如,可以将其放置在 port/boards 目录中,并带有前缀以忽略它 .gitignore
)。来自 espressif 的接口、目标和板配置文件只需要它们来自 $OPENOCD_SCRIPTS 位置的路径,您不需要包含它们的完整路径。OpenOCD 运行后,使用以下命令连接到 GDB:
xtensa-esp32s2-elf-gdb build-espressif_saola_1_wrover/firmware.elf
并按照乐鑫 GDB 教程说明进行连接,或将它们添加到您的 gdbinit
:
target remote :3333
set remote hardware-watchpoint-limit 2
mon reset halt
flushregs
thb app_main
c