编译固件本身不复杂,困难在于安装编译需要的工具链。因为安装工具链需要访问 github,从github上下载较多的文件,而目前github访问不太稳定,因此会带来一些麻烦。
编译推荐在linux环境下进行,可以是真实Linux主机,或者虚拟机,以及windows的Linux子系统。
编译 esp32c6 和编译其它 esp32 源码的方法类似,主要就是安装合适版本的 ESP-IDF。因为ESP-IDF更新较快,而micropython只适配了部分版本,因此当 ESP-IDF 更新后,新版本的 ESP-IDF 就不一定能编译成功了。因此编译时需要多参考文档(有时文档说明也不一定是对的,因为文档可能没有即时更新),以及多尝试。
目前 micropython 官方源码中尚未包括 esp32c6(因为很快会包括了),只有第三方的代码仓库,但是方法都是一样的。在文档中描述当前源码仅支持v5.0.4、v5.0.5、v5.1.2、v5.2.0,经过测试v5.2.0版可以正确编译。
git clone https://github.com/tytgatlieven/micropython-esp32c6
- 然后安装必要的软件
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
sudo yum -y update && sudo yum install git wget flex bison gperf python3 python3-setuptools cmake ninja-build ccache dfu-util libusbx
sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
git clone -b v5.2 --recursive https://github.com/espressif/esp-idf.git
如果已经用git下载了 esp-idf,可以切换到 5.2版
cd esp-idf
git checkout v5.2
git submodule update --init --recursive
cd esp-idf
./install.sh
安装时需要从github下载大量文件,如果github访问速度太慢,可以改从espressif服务器下载
cd esp-idf
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh
安装需要占用数G磁盘空间(包括下载的文件和编译产生的文件),因此需要注意留出足够空间(至少需要10G空间,特别是使用虚拟机时)。如果以后micropython更新,也需要根据情况更新 esp-idf。
安装完成后,会提示输入 . ./export.sh ,完成编译环境设置(自动设置编译器目录等环境变量)。以后每次编译前,也需要设置一次编译环境。
和编译其它固件一样,先构建 mpy-cross。在micropython源码目录下,输入命令:
make -C mpy-cross
然后
make -C ports/esp32 BOARD=ESP32_GENERIC_C6
编译时,Linux主机下会自动利用多核加速编译,在 Winodws(包括Linux子系统)下可以用 -jn 开关指定多核加速编译速度。如:
make -C ports/esp32 BOARD=ESP32_GENERIC_C6 -j8
如果没有其它问题,经过数分钟编译,就会产生对应的固件文件。编译后的文件在 ./ports/esp32/build-ESP32_GENERIC_C6/ 目录下,固件文件名是 firmware.bin,将它用 esptool.py 等工具下载到 esp32c6 中就完成固件升级。