文章目录
- 一、概要
- 二、环境及工具介绍
- 三、名词解释
- 四、环境搭建
一、概要
手上有一块安信可的WIFI开发板,用的是乐鑫的ESP32模组。刚好最新装了双系统,貌似在Linux环境使用gcc编译器会快一些。
万事开头难,要在Linux环境下进行开发工作,那就意味着需要在Linux环境中搭建ESP32适当的开发环境。本文主要是在官方搭建文档的基础上进行一些查缺补漏,适合新手阅读。
二、环境及工具介绍
开发环境:操作系统ubuntu 22.04.1,内核5.19.0-42-generic
开发板:NODEMCU-32 V1.3
串口工具:USB转TTL
三、名词解释
- esp-idf:是为开发者提供了一整套的工具、库和API,方便快速构建和开发各种物联网设备和应用。可以理解为是跟Keil一样的工具,只是没有像Keil一样把界面做的那么好。
- 环境:也称开发环境,指的是开发人员用来编写、测试和调试代码的综合工具和设置。而环境搭建指的是准备和配置一个特定的软件开发环境,以便开发人员可以在其中编写、测试和调试代码。
四、环境搭建
这里选择官方推荐的方式,esp-idf的工具链。
不同的ubuntu版本可能会有不同的问题出现,建议在进行工具安装前,先使用下面两个指令更新系统软件。在ubuntu系统下,按Ctrl + Alt + T,打开终端,输入以下指令更新软件。
sudo apt update
sudo apt upgrade
首先需要安装esp-idf所需要的软件及工具,根据官方提示,输入以下指令进行安装。可以看出,这里面安装了git、python3、cmake等需要用到的工具,如果是ubuntu 22.04,其实像python3这类工具是系统自带的,不过这里再选择安装也不影响,系统会自动检查。
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
接下来就是安装工具主体——esp-idf,打开终端,输入下面指令安装。细心的小伙伴应该会发现,这里用git获取工具有个地方跟官方文档不大一样,就是少了个–recursive参数。加上这个参数,下载esp-idf工具时,会自动下载路径下的子模块,但因为github这个网站直接下载文档速度有点慢,所以这里选择先下载主体,再单独更新子模块。如果连主体下载都太慢的小伙伴,可以百度搜下github.com的镜像网站,替换掉下面github.com即可。(子模块的更新不一定是根据这个命令里的网址来的,下面细说)
mkdir -p ~/esp
cd ~/esp
git clone https://github.com/espressif/esp-idf.git
下载完主体,就可以更新里面用到的子模块,更新之前最好切换一下源,切换方式是在esp-idf路径下,找到.gitmodules的文件(该文件为隐藏文件,需要选择查看隐藏文件才能找到)。
打开该文件,把其中所有的…/…/替换成镜像源,保存文件。
然后在当前路径下,输入指令更新子模块的源
git submodule sync
再输入下面的指令更新子模块
git submodule update --init --recursive --progress
如果这个更新完后,还发现有没更新的模块,则输入以下指令进行更新
git submodule --remote
如果用这个指令一直更新失败,那就只能手动去下载子模块了,根据刚才打开的那个.gitmodules文件,找到对应的路径,如果对应路径下没有文件,则需要手动下载,下载路径就是文件中的"url ="后面的这个网址。
以上工具安装完后,就可以安装对应芯片所需要的工具了,键入以下指令进行安装,如果前面工具安装都正常,这里就可以正常安装。其中./install.sh后面带的是对应开发板的芯片,esp32/esp32-s就选esp32,如果需要安装其他芯片系列,则加上对应的芯片即可,比如还需要esp32-s2,就修改指令为./install.sh esp32,esp32s2
cd ~/esp/esp-idf
./install.sh esp32
安装完工具后,在开始编译工程之前,需要设置环境变量,idf工具里提供了.export.sh
的快捷设置方式,但因为每次打开终端都需要设置一次,且每次都需要进入对应路径进行调用,所以官方也很亲切地提供了一种比较快捷的方式,即设置一个快捷变量供使用,将以下指令添加至xxx 文件中,后续打开终端只需要输入get_idf即可设置环境变量。
alias get_idf='. $HOME/esp/esp-idf/export.sh'