之前用 platformio ( pio ) 开发 ESP32S3 的墨水屏天气、时钟功能,虽然有 simulator 加持,但是,修改后,编译、链接的过程虽然比较简单,但是每次固件下载,即便上 921600 或者 usb cdc 也感觉慢(2MB 多的固件)。而且,布局改动、调整就需要重复编译、链接、下载的过程。不是很灵活,所以,就考虑用 micropython ,虽然执行速度上慢些,但是它的灵活性应该较好,毕竟,墨水屏刷新本身就慢,执行速度上的损失,也是不是那么明显呢。
那为什么不是 CircuitPython 呢?开头也考虑用它,毕竟它的功能模块比 mpy 更多、更丰富,要啥有啥,比如 ttf 支持, 图片支持, usb 支持。但是,代码很庞大,感觉 hold 不住它,所以,还是先用 mpy 飞起来在说。
【资料图】
micropython 的理想开发环境是 Linux,Windows 上我们可以使用 WSL2 来进行。而且,编译出来的 unix port 可以配合 sdl2 直接模拟墨水屏显示。方便开发模块。
WSL2 安装不做描述。直接进入 mpy 的环境搭建。
1. 修改系统 apt 源
比如为清华的 tuna, sudo vim /etc/apt/
注意 源的完整信息在 /help/ubuntu/,此处将 https 改为了 http,避免下载包的时候, ssl 之类的错误。
然后 sudo apt-get update 一下,就可以开始下包了
2. 安装 esp-idf
可以从 github 上下载,可能要梯子。也可以,先从乐鑫官网下载
以及 /dl/esp-idf/ 。解压到 ~/esp 中,然后就是安装工具链。需要
然后再 ./ 这样会快上很多。完成后,如果需要编译 esp32 的工程,则需要执行 . ./ 即可。
3. 编译 mpy
指导文档比较多,
大致思路就是,先 mpy-cross,然后 ports/xxx。首次编译的时候,这个过程,需要从 github 拉很多依赖库。
下载代码的时候, 不需要 --recursive,就把 mpy 的仓库下载到 wsl2 下面即可。如果是 windows 下用 git 或者 tortoisegit 下载,可能会有符号链接文件转换,导致编译失败(比如 )。所以,最好是在 wsl2 下执行
我的步骤,一般是
然后再到 ports/esp32 下去构建。注意那个 'make submodules' 。
下一篇在说,如何构建 efonts 用户模块,以提供 ttf 字体渲染,png, jpg 图片显示支持。