ESP-AT 在Win10上用WSL搭建编译环境过程及问题解决


最近一个项目需要使用到ESP32模组与MCU进行通信,并用ESP32对sensor进行控制,MCU与ESP32之间通过串口使用官方的AT指令,所以决定在ESP-AT官方project的基础上进行二次开发,加入自己的AT指令。在搭建编译环境的过程中,遇到了一些问题,现在把这个过程记录下来,给大家一个参考。我也查找了很多资料和网站,在此非常感谢这些网友们的宝贵经验和帮助。

ESP-AT是在ESP-IDF的基础上实现的软件工程。我在安装过程中发现,利用ESP-IDF的window安装Tools无法实现对ESP-AT的编译(不知道是不是我安装出了问题)。于是转到Linux下搭建环境,顺利编译通过。我对Linux不太熟悉,所以想在windows下编辑好后,再用Linux进行编译。于是想到用WSL进行环境搭建,这个太方便了!

1. WSL安装

WSL是一个win10下运行的Linux子系统,方便好用,不用两个系统切来切去的。网上的安装方法很多,我是直接下载了一个安装包。然后在桌面左下角的Search窗口中输入“Windows powershell”,然后右击,选择“以管理员身份运行”。如下图,运行指令即可。
在这里插入图片描述
安装方法的参考网址:
https://blog.csdn.net/diyiday/article/details/105170325
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

安装完成后,我们就可以在开始菜单找到ubuntu了,点击打开,会自动运行。首次打开,初始化时间会稍长一些,会提示新建用户密码,按提示操作就可以了。至此,一个Linux的指令界面呈现在眼前。

2. ESP-AT库下载

ESP官方给出了比较详细的说明文档,大家可以仔细研读,参考使用。网址如下:
ESP-AT:https://docs.espressif.com/projects/esp-at/zh_CN/latest/Get_Started/index.html
ESP-IDF: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#

  • 进入工作路径
    我们可以先在本地硬盘上(如D:\盘)新建一个文件夹:ESP-AT-Project,然后打开WSL。由于硬盘在WSL里是放在/mnt下的,因此,我们在指令中输入:
:~$ cd /mnt/d/ESP-AT-Project
~:/mnt/d/ESP-AT-Project$
  • Clone ESP-AT库文件:
~:/mnt/d/ESP-AT-Project$ git clone --recursive https://github.com/espressif/esp-at.git
  • Clone ESP-IDF库文件
~:/mnt/d/ESP-AT-Project$ cd esp-at
~:/mnt/d/ESP-AT-Project/esp-at$ git clone --recursive https://github.com/espressif/esp-idf.git
~:/mnt/d/ESP-AT-Project/esp-at$ 

大家注意一下不同ESP芯片需要的AT指令库是不同的,ESP-AT与ESP-IDF的库版本需要对应。如果需要下载相应的版本,请在“git clone”后加入" -b release/v4.2",下载相应的版本。如下图,详细请查看官方文档。

ProjectIDF VersionIDF Documentation Version
ESP32 ESP-ATrelease/v4.2ESP-IDF Get Started Guide v4.2
ESP32-S2 ESP-ATrelease/v4.2ESP-IDF Get Started Guide v4.2
ESP32-C3 ESP-ATrelease/v4.3ESP-IDF Get Started Guide v4.3

3. 搭建编译环境

现在可以开始搭建Linux下的编译环境了,按如下步骤依次持行,此处省略N行指令执行的LOG。

~:/mnt/d/ESP-AT-Project/esp-at$ rm -rf build sdkconfig
~:/mnt/d/ESP-AT-Project/esp-at$ python –version
~:/mnt/d/ESP-AT-Project/esp-at$ which python3.8
~:/mnt/d/ESP-AT-Project/esp-at$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8  10
~:/mnt/d/ESP-AT-Project/esp-at$ python -m pip install pyyaml xlrd
~:/mnt/d/ESP-AT-Project$ /usr/bin/python -m pip install --user -r /mnt/d/ESP-AT-Project/esp-at/esp-idf/requirements.txt
~:/mnt/d/ESP-AT-Project/esp-at$ cd esp-idf
~:/mnt/d/ESP-AT-Project/esp-at/esp-idf$
~:/mnt/d/ESP-AT-Project/esp-at/esp-idf$ export IDF_PATH=/mnt/d/ESP-AT-Project/esp-at/esp-idf
~:/mnt/d/ESP-AT-Project/esp-at/esp-idf$ ./install.sh
~:/mnt/d/ESP-AT-Project/esp-at/esp-idf$ . ./export.sh

大家注意:上述指令中 /mnt/d/ESP-AT-Project/ 是各自esp-at库在硬盘上的存放路径,根据路径不同,自行修改。

4. 编译工程

4.1 编译配置文件

~:/mnt/d/ESP-AT-Project/esp-at/esp-idf$ cd ..
~:/mnt/d/ESP-AT-Project/esp-at$ ./build.py menuconfig

第一次运行,会提示选择需要的芯片型号,模组型号,是否使能silence mode,按提示输入相应的数字选项,回车即可。

  • Select the Platform name for your ESP device. For example, select PLATFORM_ESP32 for ESP32 series of products, PLATFORM_ESP32C3 for ESP32-C3 series of products. Platform name is defined in factory_param_data.csv .
  • Select the Module name for your ESP device. For example, select WROOM-32 for the ESP32-WROOM-32D module. Module name is defined in factory_param_data.csv .
  • Enable or disable silence mode. If enabled, it will remove some logs and reduce the firmware size. Generally, it should be disabled.
  • The above three option items will not appear if the file build/module_info.json exists. So please delete it if you want to reconfigure the module information.

运行一段编译后,会弹出配置选项的对话框,根据自己的需求进行修改,记得先保存再退出。
在这里插入图片描述

4.2 编译工程

~:/mnt/d/ESP-AT-Project/esp-at$ ./build.py build

运行上述指令,就开始整个工程的编译,编译成功可得到各个分区的Flash起始地址,以及对应的bin文件,结果如下:
在这里插入图片描述

5. 安装过程遇到的问题

5.1 问题:安装pip时,提示无法安装
~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt-get update
~:/mnt/d/ESP-AT-Project/esp-at$ apt-get install python3-pip
5.2 问题:找不到curses.h文件

< command-line>: fatal error: curses.h: No such file or directory

~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt-get install libncurses5-dev
5.3 问题:文本识别出错

在win10下,需要安装一个文本转换功能:

~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt-get install dos2unix
5.4 问题:找不到cmake

platform_name=ESP32,module_name=WROOM-32
‘cmake’ must be available on the PATH to use ./esp-idf/tools/idf.py

~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt install cmake
~:/mnt/d/ESP-AT-Project/esp-at$ cmake --version
		cmake version 3.16.3
		CMake suite maintained and supported by Kitware (kitware.com/cmake)
5.5 问题:找不到ninja

FileNotFoundError: [Errno 2] No such file or directory: ‘ninja’

~:/mnt/d/ESP-AT-Project/esp-at$ sudo pip install sru[cuda]
~:/mnt/d/ESP-AT-Project/esp-at$ sudo pip install sru[cpu]
5.6 问题:找不到flex

make: flex: Command not found

~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt-get install flex bison
5.7 问题:找不到flex

/bin/sh: 1: gperf: not found

~:/mnt/d/ESP-AT-Project/esp-at$ sudo apt-get install gperf
5.7 问题:libhal.a缺失

make[5]: ***No rule to make targe ‘mnt/d/ESP-AT-Project/esp-at/esp-idf/components/xtensa/esp32/libhal.a’, needed by ‘bootloader.elf’. Stop.

出现这个问题,或其它*.a文件缺失,需要到git库去下载相应的 .a文件,因为ESP-AT很多文件是被封装为.a的库文件,如果缺失,将导致编译出错。
另外,当使用SVN上传文件时,记得在设置里把
.a的文件过滤去除,否则,*.a文件会被过滤掉而不显示,遗漏上传。

用Linux安装编译环境时,大家一定要注意用户的权限问题。我们在安装过程中,有因为公司的SentinelOne不知道把什么给清了,结果导致编译一直报错,后来把这个关了,重新安装才正常使用。
至此,这个编译环境已经搭建完成,祝大家一切顺利!
文中有哪里不对的地方,还请留言指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值