代码先锋网 代码片段及技术文章聚合

编译esp32s2的micropython固件(一)

技术标签: micropython  esp32  python  单片机  mcu  物联网

开发环境

软件:Ubuntu 18.04虚拟机

硬件:esp32s2开发板

ubuntu安装编译依赖环境:

sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial
如果已经安装过了,不会再次安装。另外1.15之后版本mpy依赖cmake,这个后面编译遇到问题再讲。

1.下载源码

创建工作目录:

mkdir work
cd work

下载mpy源码:

git clone https://gitee.com/mirrors/micropython.git
下载IDF源码:

git clone https://gitee.com/EspressifSystems/esp-idf.git

为了快速下载我这边都是从码云镜像下的。对于IDF来说下载下来后还需要更新大量子模组,这个IDF官方也给出了解决办法,参考以下链接说明进行更新IDF子模组:

https://gitee.com/EspressifSystems/esp-gitee-tools/blob/master/docs/README-submodule-update.md

进入IDF切下分支,分支切完最好更新下子模组

cd esp-idf
git checkout v4.2

按照上面的方法在更新下子模组,然后下载IDF依赖工具,以及设置环境变量。

cd esp-idf
./install.sh
source export.sh

2.编译固件

2.1先尝试编译esp32固件

编译默认的esp32固件,测试下编译环境是否可用。

cd micropython
make -C mpy-cross
cd ports/esp32
make submodules
make

如果能编译过那可以进行下一步尝试编译esp32s2固件了,当然也可能会遇到报错,比如cmake版本不符合要求,下面讲下如何更新符合要求的cmake版本。

2.2更新cmake

移除原有cmake:
apt remove cmake
安装新cmake:

cd work
# 下载cmake
wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
# 解压:
tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz
# 创建软链接
# 注: 文件路径是可以指定的, 一般选择在/opt 或 /usr 路径下, 这里选择/opt
mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2
ln -sf /opt/cmake-3.12.2/bin/*  /usr/bin/

然后执行命令检查一下:

>>>cmake --version
cmake version 3.12.2

安装完成

2.3编译esp32s2固件

更改ports/esp32/Makefile文件

找到 BOARD ?= GENERIC
改为 BOARD ?= GENERIC_S2

重新make
这里出现报错找不到tusb_cdc_acm.h文件

IDF分支需要切到最新

cd esp-idf  
git checkout v4.3
然后在更新下idf子模组,方法见上文
继续make编译固件,可能会报错某些python依赖包没有或版本不对,自己按照提示手动pip安装下对应版本的包就可以,然后在make编译

3.固件烧录

我们可以直接在ubuntu上烧录编好的固件,将板子USB串口接入ubuntu虚拟机

查看是否接入成功

ls /dev/ttyUSB0

3.1烧录方法一

擦除指令:make erase

自动烧录:make deploy

3.2烧录方法二:使用esptool.py烧录

其实方法一本质也是在调用esptool烧录只是具体的地址型号选择不用你指定。

我们编译好的固件路径位于:ports/esp32/build-GENERIC_S2/firmware.bin

sudo chmod 777 /dev/ttyUSB0
esptool.py -b 460800 -p /dev/ttyUSB0 erase_flash
esptool.py -b 460800 -p /dev/ttyUSB0 write_flash 0x1000 build-GENERIC_S2/firmware.bin

每次板子插拔都需要重新给ttyUSB0设置权限才能使用,比较麻烦,可以采用以下办法一劳永逸:

将用户添加到 dialout 组,来获许读写权限:
sudo usermod -a -G dialout $USER
添加完需要重启终端窗口生效 

注意:终端窗口重启过后idf的环境变量需要重新设置才能生效,这样才可以再次编译固件

cd esp-idf
source export.sh

这个编出来的固件适用于普通的esp32s2,带有外部psram的esp32s2也可以使用,但内存仍只有那点,而且这个的repl默认开在esp32s2自身的USB口上的,而不是串口,这点需要注意。

下一章节,我们来继续讲解如何更改源码开启psarm获取更大内存,以及repl改回到串口,USB MSC功能的开启。

版权声明:本文为qq_34440409原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34440409/article/details/119175631

智能推荐

ESP32S2开发学习之路--GPIO与中断(三)

ESP32S2开发学习之路--GPIO与中断 示例代码 API介绍 常规轮询API gpio_config_t 结构体 gpio_config gpio_reset_pin gpio_set_level gpio_get_level gpio_set_drive_capability gpio_get_drive_capability 补充函数 中断API gpio_install_isr_ser...

ESP32S2开发学习之路--新建工程(二)

ESP32S2开发学习之路--新建工程 文件构成 Makefile CMakeLists.txt main-CMakeLists.txt component.mk demo.c 下载程序 idf.py支持 目标芯片设置 项目配置 编译 上传程序 查看串口信息 文件构成 demo.c应用代码程序 CMakeLists.txt为支持idf.py应用所需文件 component将函数入口定位成app_m...

micropython固件编译教程

MicroPython端口支持许多STM32处理器 该目录包含MicroPython到ST的STM32微控制器行的端口。 支持的MCU系列为:STM32F0,STM32F4,STM32F7和STM32L4。 此处的部分代码利用STM32Cube HAL库。 编译步骤: 编译环境:Ubuntu 14.04  安装编译过程需要的工具: 1. 下载源码: 2. 切换目录到micropython...

Ubuntu18.04:搭建ESP32 MicroPython编译环境

Ubuntu18.04:搭建ESP32 MicroPython编译环境 开发环境 步骤 1.修改linux指向的python解释器为3.6 2.安装交叉编译工具链所依赖的环境 3.创建工作目录级设置编译链 1.创建工作目录 2.在官网上下载最新的交叉编译链 3.解压交叉编译链 4.设置环境变量 4.获取并安装esp-idf开发套件 1.从github上下载esp-idf 2.为esp-idf设置环...

猜你喜欢

ESP32CAM micropython固件制作 win10 Ubuntu18.04

ESP32CAM micropython固件制作 系统 编译 部分错误信息 camera部分参数 系统 win10 Ubuntu18.04子系统 修改源 安装一堆新包,包括gcc,g ++和make。 编译 操作步骤 sudo -s用root模式 下载micropython和esp-idf 查看esp32所对应的espidf版本(重要) 显示:ESPIDF_SUPHASH :=??????? 下载...

micropython自行编译可直接运行的固件

micropython+ESP8266直接做些小玩具是很简单的。但是如果每次都要上传mian.py就很不理想了 而不是编译出一个通用的玩意,而是一个直接启动功能的固件,需要自行编译micropython,然后改改mian.c 或者改 _boot.py  再或者给bin加一段。。。  ...

ESP32学习microPython之(2)--machine内置函数

注:对于ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:782473783。群名:ESP32开源技术交流群。 microPython常用函数 microPython的函数很多 machine module CPU主频     控制引脚 可以设置的GPIO有 0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16;其中1、3作为REPL的串口使用...

MicroPython for esp32

我已经使用 Python 很多年了,但用 MicroPython 来开发单片机是我最新的尝试。 安装 MicroPython 安装 picocom 使用 picocom 作为串口调试工具 串口调试 执行下面命令然后就可以看到熟悉的 Python 命令行 连接 wifi 控制 LED 读取按键电位 重启板子 下载文件到板子 使用 ampy 下载 python 脚本 参考 https://github...