Ubuntu20.04/22.04 ESP32 命令行开发环境配置
ESP32 芯片系列
ESP32分三个系列
- ESP32-S
- ESP32-S3: Xtensa 32位 LX7 双核 240 MHz, 384KB ROM, 512KB SRAM, QFN7x7, 56-pin, 2.4G Wi-Fi + BT
- ESP32-S2: Xtensa 32位 LX7 单核 240 MHz, 128KB ROM, 320KB SRAM, QFN7x7, 56-pin, 2.4G Wi-Fi
- ESP32-C
- ESP32-C3: RISC-V 32位 单核 4流水线 160 MHz, 384 KB ROM, 400 KB RAM, QFN5x5, 28-pin/32-pin, 2.4 GHz Wi-Fi + BT
- ESP32
- ESP32-D0xx: Xtensa 32位 LX6 双核 80-240 MHz, 448 KB ROM, 520 KB SRAM, QFN5x5/QFN6x6/LGA7x7, 48-pin, 2.4 GHz Wi-Fi + BT
- ESP32-S0xx: Xtensa 32位 LX6 单核 80-240 MHz, 448 KB ROM, 520 KB SRAM, QFN5x5, 48-pin, 2.4 GHz Wi-Fi + BT
在开发环境下, 这些属于不同的target, 需要单独指定
cd ~/esp/esp-idf
./install.sh esp32,esp32c3,esp32s3
配置环境
安装环境依赖
sudo apt install git wget flex bison gperf python3 python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
安装 esp-idf
如果网络不太好, 最好先设置下代理
git config --global https.proxy "socks5://127.0.0.1:1080"
git config --global http.proxy "socks5://127.0.0.1:1080"
导出esp-idf项目仓库
mkdir -p ~/Esp
cd ~/Esp
git clone --recursive https://github.com/espressif/esp-idf.git
查看idf版本
idf.py --version
如果导出中途中断, 可以用这个命令继续初始化子模块, 导出子模块的过程中可以中断, 已经导出成功的不受影响, 下次执行会从未完成的模块处继续导出
git submodule update --init --recursive
如果中断后, 主仓库有变化导致子模块也有更新, 在pull主仓库时要加上 --recurse-submodules 参数
git pull --recurse-submodules
如果子模块出现版本不一致导致的dirty, 在主目录下git status能看到这些子模块列表, 到这些子模块目录下, 执行以下命令撤销修改
# 查看修改被 staged 的情况
git status
# 取消这些文件的 stage
git restore --staged ./*
# 恢复这些文件
git checkout -- .
安装工具链
这个脚本会下载工具链, 并把工具链安装到~/.espressif/ 目录, 差不多要占用500M空间
cd ~/Esp/esp-idf
# 指定使用 Espressif 下载服务器, 否则从 github 下载会非常慢
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
# 指定要安装的是esp32
./install.sh esp32
# 如果不指定会安装全部, 或者用 all 指定安装全部
./install.sh all
设置环境变量
在esp-idf目录下运行export.sh设置环境变量, 注意前面有个.
. ./export.sh
这一步主要是将这些工具的路径加入PATH
/home/[user]/Esp/esp-idf/components/esptool_py/esptool
/home/[user]/Esp/esp-idf/components/espcoredump
/home/[user]/Esp/esp-idf/components/partition_table
/home/[user]/Esp/esp-idf/components/app_update
注意: 如果之前有设置过ESP8266的IDF_PATH, 上面的命令会运行失败, 此时先要把IDF_PATH清空再运行
echo $IDF_PATH
/home/milton/Esp/ESP8266_RTOS_SDK
export IDF_PATH=
~/Esp/esp-idf$ echo $IDF_PATH
设置环境变量这一步, 在每次重启系统之后都需要再次执行, 如果想简化这一步, 可以将其作为一个alias设置到 .bashrc 中
# 在 .bashrc 最后增加这一行
alias get_idf='. $HOME/Esp/esp-idf/export.sh'
如果要立即生效, 执行一下source ~/.bashrc.
编译示例项目
准备
复制样例项目
cd ~/esp
cp -r esp-idf/examples/get-started/hello_world/ .
设置类型, 如 esp32, esp32s2 等
cd hello_world
idf.py set-target esp32
设置编译选项
idf.py menuconfig
- -> Serial flasher config -> Flash size, 根据烧录对象的容量大小修改, 默认为2M
- -> Component config -> FreeRTOS -> Kernel
- 如果烧录对象是esp32 solo, 需要勾选
Component config -> FreeRTOS -> Run FreeRTOS only on first core - 如果是esp32 s2, 本身是单核, 选项固定已经勾选
- 如果烧录对象是esp32 solo, 需要勾选
- -> Example Configuration 每个示例都有自己的配置, 在这里可以修改
编译
上面的步骤都没问题的话, 执行
idf.py build
烧录/写入
根据串口设备修改, 用CH340等转接的可能是 /dev/ttyUSB0, 如果是ESP32S2自带的串口可能是 /dev/ttyACM0
idf.py -p /dev/ttyUSB0 flash
# or
idf.py -p /dev/ttyACM0 flash
按键的操作基本上都是靠拉低(按住)IO0, 然后RESET, 让ESP32重启到DFU(Device Firmware Upgrade)模式进行烧录.
CP2012
会自动重启, 全程无需手工reset, 如果原固件有大量串口输出导致写入无反应, 可以1)按住IO0, 再按RESET, 或 2)先断电, 再按住IO0加电, 进入烧录状态.
简易核心板
有不同情况, 可以分别尝试
- 按住IO0->执行flash->按下RESET,松不松开都行, 会开始写入
- 如果上面的操作不行, 断电->执行flash命令->按住IO0->上电
- 如果上面的操作, 上电提示错误的, 可以尝试先按住IO0->上电, 然后执行flash命令
- 烧录结束后, 需要按一下Reset键, 才会开始执行
ESP32 S2 Mini
这个开发板, 并没有引出TX0和RX0, 是用ESP32S2自带的USB口虚拟串口进行烧录.
烧录过程一样, 按住0按钮, 然后执行烧录命令, 按下Reset, 这时候ESP32 S2就进入了DFU模式会开始烧录, 在 dmesg 里能看到这个 ttyACM0: USB ACM device 设备.
查看串口输出
ESP32 S2 Mini 没有引出串口0, 因此下面的操作对其不适用.
idf.py -p /dev/ttyUSB0 monitor
# 如果要烧录加查看
idf.py -p /dev/ttyUSB0 flash monitor
如果要退出串口输出模式, 按Ctrl+]
升级ESP-IDF环境
升级 ESP-IDF最简单的方式就是删除esp-idf目录, 重新clone一份, 运行install.sh脚本, 再通过export.sh更新环境变量
参考
- 环境搭建和安装,编译,烧录说明
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html - 开发板产品页
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html - 使用ESP32做DSP处理
https://github.com/espressif/esp-dsp - Xtensa 处理器架构,产商Tensilica
https://blog.csdn.net/tugouxp/article/details/113816681 - WeMos Mini ESP32-S2FN4R2介绍 https://blog.csdn.net/weixin_42880082/article/details/127710574
- VSCode 下配置环境 https://calinradoni.github.io/pages/200927-esp-idf-development.html
Ubuntu20.04/22.04 ESP32 命令行开发环境配置的更多相关文章
- LibOpenCM3(一) Linux下命令行开发环境配置
目录 LibOpenCM3(一) Linux下命令行开发环境配置 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板 LibOpenCM3 介绍 LibOpenCM3 是GPL协议( ...
- 树莓派上搭建arduino命令行开发环境
-------------还是博客园上面的格式看这舒服,不去新浪了------------- 为什么要在树莓派上开发arduino呢?总要把树莓派用起来嘛,不然老吃灰. 树莓派使用SSH时没有图形界面 ...
- git命令行工作环境配置【转】
转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...
- 2016/01/10 C++ Primer 小记 —— 命令行编译环境配置
OK!第一篇博文!自贺一下! 今日看了此书的前几页.嗯,说得挺全,基础易懂. 之前学过c++,但没用过命令行编译. 本人用的VS里的编译器,文件名是cl.exe,在VC目录下. 虽然有了编译器,但并不 ...
- [编译] 6、开源两个简单且有用的安卓APP命令行开发工具和nRF51822命令行开发工具
星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一.前言 前几天给大家介绍了如何手动搭建安卓APP命令行开发环境和nRF51822命令行开发环境,中秋这几天我把上面篇 ...
- Xshell下漂亮的开发环境配置
今天折腾了一天Xshell配置Linux命令行开发环境. 总结几点: 1.Xshell配色方案,这是我自己调的个人使用版,网上比较好的版本有Solarized Dark,可以下载到. [ColorFo ...
- 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...
- 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- Ubuntu20.04/22.04 安装 Arduino IDE 2.x
这周收到两片基于LGT8F328P LQFP32的Arduino Mini EVB, 机器上没有 Arduino 环境需要新安装, 正好感受一下新出的 Arduino IDE 2.x, 记录一下 Ub ...
- 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)
为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...
随机推荐
- SD协议-基本概念
1.SD协议版本 SD 1.1 SD 2.0 SD 3.0 在看协议的时候,需要注意协议的版本,注意版本之间的差别 SD协议是常见的数据通信和存储卡之间的协议 HDMI是显示相关的协议,遵循HDMI协 ...
- Go-发送邮件
1. 邮件 - mail From -- 发送者(这封邮件由谁进行发送的,一般都是该邮件的作者) To -- 邮件的接收者(发送邮件的人希望谁能收到邮件) Subject -- 邮件的主题(类似文章的 ...
- [转帖]TPC-C 、TPC-H和TPC-DS区别
https://zhuanlan.zhihu.com/p/339886289 针对数据库不同的使用场景TPC组织发布了多项测试标准. TPC-C: TPC Benchmark C于1992年7月获得批 ...
- Oracle AWR学习之二-利用ChatGPT编写一键获取AWR报告的脚本
Oracle AWR学习之二-ChatGPT提升效率之n 背景 之前生成awr报告比较麻烦, 想着能够一键生成. 再辅以部分shell或者是python处理就可以进行细致的分析. 这一块其实还是比较简 ...
- 【转帖】route命令详解大全(route命令使用实例)
https://www.cxdtop.cn/n/225987.html 在实际的网络应用中,我们可能会遇到这样的网络环境,上外网我们使用的无线网络,内网我们使用的是有限网卡.在设置完成后会出现外网和内 ...
- PG数据库恢复简单记录
公司同事给了一个很小的数据 我这边进行备份和恢复操作 第一步 创建数据库 su - postgres #进入pg数据库的用户 psql #输入密码 登录 create user demo with p ...
- vue中jsx
//item.vue 文件如下 <template> <div> <h1 v-if="id===1"> <slot></slo ...
- Promise练习文件读取
1. fs读取文件 const fs=require('fs');//引入文件读取模块 fs.readFile('./README.md',(err,data)=>{ // 如果出现错误,抛出错 ...
- 学到了,原来 gzip 是种`连续分块`的压缩算法
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我想要表述的是:假设有 10 mb的数据使用 gzip 算 ...
- Vue基础系统文章07---webpack安装和配置与打包
1.当前web开发困境 a.文件依赖关系错综复杂 b.静态资源请求效率低 c.模块化支持不友好 d.浏览器对高级js兼容性低 例如:模块代码实现隔行换色 1)在新建空白文件夹中运行:npm init ...