ESP32S3编译固件支持ov2640
前置准备
- linux系统centos8
- esp32s3
- esp-idf工具
- micropython源码
- idf相机驱动:
- micropython的camera模块
环境配置
- esp-idf 安装
- 创建目录并下载esp-idf
cd /root mkdir esp #创建目录 cd esp #进入目录 git clone https://github.com/espressif/esp-idf.git #下载esp-idf
- 安装esp-idf
cd esp-idf #进入esp-idf目录 git checkout v5.2 #切换到v5.2分支,具体使用版本要查看micropython源码ports\esp32中的readme确定。此处使用的是5.2版本
- 更新子模块
git submodule update --init --recursive #更新子模块
- 安装
./install.sh #安装esp-idf,会下载一些内容,时间略长
- 添加环境变量
source export.sh #将esp-idf加入到环境变量,有效范围为本次会话,终端关闭后需重新执行此命令。
- 结果验证
此处结果为:idf.py ---version # 查看idf版本,此处版本号为
这里踩过的坑:socket报错
- 创建目录并下载esp-idf
- micropython准备
- 创建目录下载源码
cd /root/esp/ #进入之前创建的esp目录中 git clone https://github.com/micropython/micropython.git #克隆源码
- 进入并更新子模块
cd micropython #进入克隆的源码 git submodule update --init --recursive #更新子模块
- 创建目录下载源码
- esp-idf相机驱动安装
- 安装
cd /root/esp/esp-idf/components/ #此处根据先前安装的esp-idf目录确定 git clone https://github.com/espressif/esp32-camera #克隆idf相机驱动
- 安装
- micropython的camrea模块安装
- 安装
源码目录结构如下:cd /root/esp/micropython/examples/usercmodule/ #切换到micropython的自定义模块路径 mkdir cam #创建个自定义的文件夹名称 cd cam git clone https://github.com/lemariva/micropython-camera-driver
将上图src目录中的四个文件复制到/root/esp/micropython/examples/usercmodule/cam目录下,然后删除其他部分即可。
参数配置
- 预编译
cd /root/esp/micropython/ #切换到micropython目录 make -C mpy-cross #预编译
- 配置编译的型号
cd /root/esp/micropython/ports/esp32/ #进入esp32对应目录 vim Makefile 修改文件中对应型号,如下图:
上图中修改为ESP32S3的型号,具体填什么可以查看boards/ 目录下的文件夹。
完成以后可以编译一下当前这个不包含camera模块的固件尝试一下。make #执行编译,验证是否正常编译
- 配置camera模块
- 启用模块
关于以上配置可以查看micropython/examples/usercmodule/cam/modcamera.c文件中代码可知,若未定义则不执行后续逻辑。vim /root/esp/micropython/ports/esp32/mpconfigport.h #将模块配置启用到此文件 #在文件中加入一行:#define MODULE_CAMERA_ENABLED (1)
- 配置自定义模块路径
vim /root/esp/micropython/examples/usercmodule/micropython.cmake #编辑这个顶层cmake文件,将自定义的模块路径配置进去 #加入此语句: include(${CMAKE_CURRENT_LIST_DIR}/cam/micropython.cmake)
- 启用模块
编译
- 编译
此处 遇到modcamera.c文件关键字大小写报错,解决方案:STATIC报错make USER_C_MODULES=~/esp/micropython/examples/usercmodule/micropython.cmake #此处使用USER_C_MODULES指定自定义模块顶层cmake路径,若上一步中未配置则此参数可以直接配置为/esp/micropython/examples/usercmodule/cam/micropython.cmake
- micropython准备
编译完成即可