ESP32学习笔记(1)—— 搭建开发环境、编译烧录 hello world 工程(基于rtos sdk 3.3.2)

前言

ESP32 是一套 Wi-Fi (2.4 GHz) 和蓝牙 (4.2) 双模解决方案。

sdk版本:v3.3.2

此次实验是在 Windows 10 系统下利用虚拟机安装 Ubuntu 16.04系统,并在此系统中进行开发编译和下载固件。

 

一、准备工作

此实验需要准备以下软件

1.Ubuntu 16.04系统:

系统搭建方法可以看我的另一篇文章 https://blog.csdn.net/m_pfly_fish/article/details/104872286

2.工具链(用于编译 ESP32 应用程序):

3.ESP-IDF:

包含 ESP32 API 和用于操作工具链的脚本。从git上克隆下来时间比较长,我这边备份了一份下载好的V3.3.2版本idf:

https://download.csdn.net/download/m_pfly_fish/12739713

4.代码编辑器,我使用的是 Source Insight 4.0。

 

二、设置工具链

2.1 安装软件包

设置工具链需要提前安装以下软件包

sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing libffi-dev libssl-dev

我因为已经安装完成了,所以显示如下:

2.2 设置工具链

下载64位的 esp32 工具链

下载完成后,将它解压到 ~/esp 目录:

mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

2.3 设置环境变量

工具链将会被解压到 ~/esp/xtensa-esp32-elf/ 目录。

要使用工具链,你还需要在 ~/.profile 文件中更新环境变量 PATH。要使 xtensa-esp32-elf 在所有的终端会话中都有效,需要将下面这一行代码添加到你的 ~/.profile 文件中:

export PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"

退出并重新登录以使 .profile 更改生效。 运行以下命令来检查 PATH 设置是否正确:

printenv PATH

设置成功应该能够找到工具链的安装路径

 

三、设置 ESP-IDF

3.1 获取 ESP-IDF

工具链(包括用于编译和构建应用程序的程序)安装完后,你还需要 ESP32 相关的 API/库。API/库在 ESP-IDF仓库 中。获取本地副本:打开终端,切换到你要存放 ESP-IDF 的工作目录,使用 git clone 命令克隆远程仓库:

cd ~/esp
git clone -b v3.3.2 --recursive https://github.com/espressif/esp-idf.git

ESP-IDF 将会被下载到 ~/esp/esp-idf 目录下。

3.2 设置 ESP-IDF 路径

在 ~/.profile 文件中加入以下指令,创建 IDF_PATH

export IDF_PATH=~/esp/esp-idf

运行以下命令以确保 IDF_PATH 已经设置好:

printenv IDF_PATH

此前在 ~/.profile 文件中输入(或者手动设置)的路径应该被打印出来。如果不想永久设置 IDF_PATH,每次重启或者注销时在终端窗口中手动输入:

export IDF_PATH=~/esp/esp-idf

3.3 安装依赖的 Python 软件包

ESP-IDF 所依赖的 Python 软件包位于 $IDF_PATH/requirements.txt 文件中,您可以通过运行以下命令来安装它们:

python2.7 -m pip install --user -r $IDF_PATH/requirements.txt

 

四、编译和烧写 hello_world 工程

4.1 创建 hello_world 工程

现在可以开始创建 ESP32 应用程序了。为了快速开始,我们这里以 IDF 的 examples 目录下的 get-started/hello_world 工程为例进行说明。

将 get-started/hello_world  拷贝到 ~/esp 目录:

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world

4.2 连接usb

用 USB 线将 ESP32 开发板连接到 PC,要查看 ESP32 开发板的串口设备名称,运行以下命令两次:

ls /dev/tty*

第一次先拔下开发板或适配器,第二次插入开发板或适配器之后再运行命令,第二次运行指令后出现的端口即是 ESP32 对应的串口

4.3 工程配置

在终端窗口中,输入 cd ~/esp/hello_world 进入 hello_world 所在目录,然后启动工程配置工具 menuconfig

cd ~/esp/hello_world
make menuconfig

如果之前的步骤都正确,则会显示下面的菜单:

在菜单中,进入 Serial flasher config > Default serial port 配置串口(工程将会加载到该串口上)。输入回车确认选择,选择 < Save > 保存配置,然后选择 < Exit > 退出应用程序。

4.4 编译和烧写

执行指令:

make flash

这条命令会编译应用程序和所有的 ESP-IDF 组件,生成 bootloader、分区表和应用程序 bin 文件,并将这些 bin 文件烧写到 ESP32 板子上。

esptool.py v2.0-beta2
Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...
esptool.py v2.0-beta2
Connecting........___
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Attaching SPI flash...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 11616 bytes to 6695...
Wrote 11616 bytes (6695 compressed) at 0x00001000 in 0.1 seconds (effective 920.5 kbit/s)...
Hash of data verified.
Compressed 408096 bytes to 171625...
Wrote 408096 bytes (171625 compressed) at 0x00010000 in 3.9 seconds (effective 847.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 82...
Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 8297.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...

如果没有任何问题,在编译过程结束后将能看到类似上面的消息。最后,板子将会复位,应用程序 “hello_world” 开始启动。

4.5 监视器

如果要查看 “hello_world” 程序是否真的在运行,输入命令 make monitor。这个命令会启动 IDF Monitor 程序:

$ make monitor
MONITOR
--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun  8 2016 00:22:57
...

在启动消息和诊断消息后,你就能看到 “Hello world!” 程序所打印的消息:

...
Hello world!
Restarting in 10 seconds...
I (211) cpu_start: Starting scheduler on APP CPU.
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...

要退出监视器,请使用快捷键 Ctrl+]

如果串口打印的不是上面显示的消息而是类似下面的乱码:

e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA
~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp

或者监视器程序启动失败,那么可能你的开发板用的是 26 MHz 晶振,而 ESP-IDF 默认的是 40 MHz 晶振。请退出监视器,回到配置,将 CONFIG_ESP32_XTAL_FREQ_SEL 改为 26 MHz,然后再次编译和烧写。请在 make menuconfig 的 Component config –> ESP32-specific –> Main XTAL frequency 中配置。

要一次性执行 make flash 和 make monitor,输入 make flash monitor。参考文档 IDF Monitor 里的快捷键和更多内容。

文档链接:https://docs.espressif.com/projects/esp-idf/zh_CN/v3.3.2/get-started/idf-monitor.html

4.6 更新 ESP-IDF

使用 ESP-IDF 一段时间后,你可能想要进行升级来获得新的性能或者对 bug 进行修复。最简单的更新方式是删除已有的 esp-idf 文件夹然后再克隆一个,即重复 获取ESP-IDF 里的操作。

然后在用户配置文件中添加 IDF_PATH,这样工具链脚本就能够知道这一版本的 ESP-IDF 的具体位置。

 

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页