文章目录
- ESP32开发环境搭建
- 安装ESP-IDF
- 搭建一个最小工程
- 现象
ESP32开发环境搭建
最近有个小项目需要用到能够联网的mcu驱动,准备玩玩esp的芯片,记录下ESP32开发环境搭建的过程。
ESP-IDF 是乐鑫科技为其 ESP32 系列芯片提供的官方开发框架。这个框架主要用于开发、构建和部署基于 ESP32的物联网(IoT)应用。
笔者主要开发环境是ubuntu系统,所以本文主要介绍ubuntu环境下的搭建。
安装ESP-IDF
首先安装ESP-IDF SDK:
mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
SDK下载下来之后,我们还需要下载对应的工具才能实现编译、下载以及调试仿真,下一步安装对应的工具:
cd ~/esp/esp-idf
./install.sh all
./install.sh all 会安装所有的esp芯片,如果你只需要特定系列的芯片选择特定的芯片会加快下载工具速度。
安装完成以后就可以设置环境变量,通过官方提供的命令行开始操作了
cd ~/esp/esp-idf
. ./export.sh
# 可以通过如下指令查看SDK支持的命令
idf.py --help
搭建一个最小工程
下面基于命令行搭建一个开发环境
- 创建一个新demo工程,保存在/home/tao/work/code/esp_ws/demo路径下:
idf.py create-project --path /home/tao/work/code/esp_ws/demo demo
sdk会自动生成如下文件:
➜ demo tree .
.
├── CMakeLists.txt
└── main
├── CMakeLists.txt
└── demo.c
1 directory, 3 files
- 设置目标芯片
sdk支持多款芯片可以使用 idf.py --list-targets 来列举当前支持的芯片型号
idf.py set-target esp32
设置芯片型号以后系统会自动生成很多文件,主要是一个build文件夹和一个sdkconfig文件:
➜ demo tree . -L 2
.
├── build
│ ├── app-flash_args
│ ├── bootloader
│ ├── bootloader-flash_args
│ ├── bootloader-prefix
│ ├── build.ninja
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ ├── cmake_install.cmake
│ ├── compile_commands.json
│ ├── config
│ ├── config.env
│ ├── esp-idf
│ ├── flash_app_args
│ ├── flash_args
│ ├── flash_args.in
│ ├── flash_bootloader_args
│ ├── flasher_args.json
│ ├── flash_project_args
│ ├── kconfigs.in
│ ├── kconfigs_projbuild.in
│ ├── ldgen_libraries
│ ├── ldgen_libraries.in
│ ├── log
│ ├── partition-table-flash_args
│ └── project_description.json
├── CMakeLists.txt
├── main
│ ├── CMakeLists.txt
│ └── demo.c
└── sdkconfig
- 编译工程
使用如下指令编译工程:
idf.py build
- 刷机
编译成功以后将开发板通过串口接入PC,识别到串口以后可以通过如下指令刷程序:
idf.py -p PORT flash
PORT 为串口号
- 清除工程
可以使用如下指令清除工程
idf.py clean
idf.py fullclean
- 监控
可以通过如下命令来监控芯片的运行状态:
idf.py monitor
# 也可以一块使用,刷机后直接监控
idf.py -p /dev/ttyUSB0 flash monitor
上面这一步可能会刷机失败,因为对/dev/ttyUSB0访问的权限问题,需要将当前用户加入到dialout用户组
sudo usermod -aG dialout $USER
$USER为当前登陆的的用户名,/dev/ttyUSB0根据自己实际的串口端口填写。
现象
在上面的demo.c中填入如下内容:
#include <stdio.h>
void app_main(void)
{
printf("hello test \r\n");
int i = 20;
while(i--){
printf("hello test i = %d \r\n", i);
}
}
然后在工程路径下执行如下指令刷机监控:
idf.py -p /dev/ttyUSB0 flash monitor
现象如下:
观察完毕以后如果想退出串口,使用如下快捷键 Ctrl + ] 即可