注:对于ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:782473783。群名:ESP32开源技术交流群。
概述:
Ubuntu16.04下ESP32的ESP-IDF环境搭建,并实现一个hello world例程。(16.0.4是官方推荐版本,比这个低的话建议还是更新一下,否则开发工具链会出现一些错误,修复起来也浪费时间),这里是根据网上搜索后自己成功搭建的一个经验记录。仅供参考,欢迎转载。
1. 安装交叉编译工具链
控制台下安装交叉编译工具链依赖的环境:sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial
(控制台打开方法:Ctrl+Alt+T;后面不再供述)
2. 创建目录
① 创建ESP32专用的工作目录:
sudo mkdir /esp32
②设置文件夹的归属为当前用户:
sudo chown user:user /esp32
(注意这里的user是你的机器用户名,创建完后你可以在 ”我的电脑” 里找到这个文件夹.控制台进入命令为:cd /esp32 )
③esp32文件夹里创建三个文件夹:crossTools、demos、sources分别保存交叉编译工具链、样例和SDK源码
命令:
mkdir crossTools demos sources
④使用ls命令查看一下/esp32目录下的文件
3. 下载交叉编译工具
① 进入crossTools文件夹,下载官方的交叉编译工具:(这里是2017.12 下载的最新版本,请各位根据自己当前的时段下载对应版本的交叉编译器以免编译时候提示失败.)
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-75-gbaf03c2-5.2.0.tar.gz(这个不是命令 请打开你的搜狐浏览器输入这个,就能下载了,下载完后剪切到/esp32/crossTools里面)
②解压文件到当前目录下:
tar -xzvf xtensa-esp32-elf-linux64-1.22.0-75-gbaf03c2-5.2.0.tar.gz
③使用ls命令查看一下/esp32/crossTools目录下的文件
3. 添加环境变量
Tip:没有vim 请输入以下命令安装 sudo apt-get install vim
①sudo vim /etc/profile
在最后面添加交叉编译工具链bin文件夹的目录
(鼠标滚到最下 ,1、按 i 键进行编辑输入下面的语句后 2、按ESC退出编辑 3、输入 :wq 保存退出)
export PATH=$PATH:/esp32/crossTools/xtensa-esp32-elf/bin
③ 然后更新一下profile文件,使之生效
source /etc/profile
④ 检查是否安装成功
xtensa-esp32-elf-gcc -v
4. 下载官方SDK : Espress-idf 到source文件夹
①官方已经开源托管在了github上,我们可以使用git clone命令进行下载
git clone --recursive https://github.com/espressif/esp-idf.git
.............等待下载结束
下载完成后,剪切文件到source文件夹打开ESP-IDF的目录结构如下:
components:ESP-IDF的核心组件
examples:ESP-IDF提供的实例程序
make:ESP-IDF工程管理目录
tools:ESP-IDF提供的工具集
docs:ESP-IDF相关文档
5.添加Esp-idf环境变量
① 将ESP-IDF目录下examples中的hello_world样例拷贝到我们之前新建的demo文件夹中
② 进入工程文件中,使用tree命令(没有这个命令的输入 sudo apt-get install tree下载)查看工程结构
③可以看到整个工程主要有一个hello_world_main.c和一个Makefile,打开Makefile,发现里面需要一个IDF_PATH的变量,这个变量应当指向安装的ESP-IDF的实际位置,需要在编译的时候指明。
④最佳的方式是/etc/profile中添加下面这样一个环境变量(添加环境变量步骤具体方法请看步骤3)
export IDF_PATH=/esp32/sources/esp-idf
6.配置项目工程
①在/esp32/demos/hello_world/目录下 输入命令进入菜单设置:
make menuconfig(注意控制台的窗体大小放大一点否则会报错)
进入后,命令台界面如下
② 进入SDK tool configuration查看交叉编译工具链是否指定正确,已经python命令是否正确安装,ESP-IDF需要你的python属于python2的版本,最好不要使用python3。
③ 进入Bootloader config目录,配置bootloader的打印日志显示信息等级为warning
④进入Serial flasher config,指定用于烧写程序的串口设备,一般使用USB转串口的选择/dev/ttyUSB0即可,设置默认的波特率为115200,Flash的SPI模式为DIO,SPI速率为80MHz,Flash的大小为4MB(默认就好)
⑤进入Partition Table设置分区表,为了更好的管理SPI Flash,ESP-IDF引入了分区表的概念,默认使用Single factory app,no OTA制作分区BIN(略默认就好,各位看家可以自己点进去瞅瞅)
⑥ Component config是对ESP-IDF的内核进行的更加详细的配置(略 默认就好)
⑦最后选择 Exit 退出make menuconfig的配置界面,保存刚才的配置,将会在工程根目录下看到新生成的一个build文件夹和sdkconfig文件
7.编译
① 在/esp32/demos/hello_world下输入编译命令生成bin文件,make all将会编译所有的BIN文件,默认会编译bootloader、partition_table、app文件,并且还会提示如何进行烧写。
make all -j4 或者 make all -j
(“-j [
如果有报错 有可能是没有让环境变量运行起来 输入 source /etc/profile 再编译试试.
8.烧写
①输入make flash 命令下载(按照官方的说明 要先长按开发板boot键不放然后按一下Reset键进入下载模式,but 我发现无视这个直接执行命令也是ok的) 失败的话有可能是 USB读写权限没开放(请参考步骤9打开权限,然后重新下载)
②输入命令打开minicom 查看: sudo minicom -D /dev/ttyUSB0 (这里指定打开USB0)
****没有minicom的童鞋 请输入 sudo apt-get install minicom 进行安装.*****
番外:
1、USB读写权限(这个只需要配置一次)
在烧写程序之前,需要给USB设备增加读写权限
sudo usermod -a -G dialout $USER
然后需要重启系统以生效
sudo reboot