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

搭建一个最小工程

下面基于命令行搭建一个开发环境

  1. 创建一个新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
  1. 设置目标芯片
    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

  1. 编译工程
    使用如下指令编译工程:
idf.py build
  1. 刷机
    编译成功以后将开发板通过串口接入PC,识别到串口以后可以通过如下指令刷程序:
idf.py -p PORT flash

PORT 为串口号

  1. 清除工程
    可以使用如下指令清除工程
idf.py clean 
idf.py fullclean
  1. 监控
    可以通过如下命令来监控芯片的运行状态:
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 + ] 即可

Logo

一站式 AI 云服务平台

更多推荐