编译esp32s2的micropython固件(一)

开发环境

软件:Ubuntu 18.04虚拟机

硬件:esp32s2开发板

ubuntu安装编译依赖环境:

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

说明:该教程同样适用于idf c开发环境的搭建,esp32 mpy固件编译环境搭建。

1.下载源码

创建工作目录:

mkdir work
cd work

下载mpy源码:

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

git clone https://gitee.com/EspressifSystems/esp-idf.gitesp-idf: ESP-IDF 是由乐鑫官方推出的针对 ESP32 和 ESP32-S2 系列芯片的开发框架。ESP-IDF 国内镜像仓库,Issues 和 PRs 请仍旧提交到 github。重要:Gitee 中 ESP-IDF 仓库的使用,请先参看 https://gitee.com/EspressifSystems/esp-gitee-tools 中的说明文档。ESP-IDF 及其子模块,每日会自动同步若干次。https://gitee.com/EspressifSystems/esp-idf.git

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

docs/README-submodule-update.md · 乐鑫开源/esp-gitee-tools - Gitee.com

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

cd esp-idf
git checkout v4.2

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

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

如果只是想要idf c开发的话,环境搭建到这就可以了,后面是mpy固件编译的说明。

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

安装完成,再次make尝试编译esp32的mpy固件即可。

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功能的开启。

编译esp32s2的micropython固件(二)开启psram与串口repl

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值