ESP8266 RTOS开发之路(1)— 搭建在Ubuntu下的开发环境
一、前言
本次基于虚拟机下的Ubuntu18系统,搭建ESP8266的编译环境,使用的模块是ESP8266-NodeMcu,其板载模组为ESP12E,flash大小为32Mbit,图片如下:
安信可官方的模组介绍为:https://docs.ai-thinker.com/esp8266 国内开源地址为:https://gitee.com/EspressifSystems/ESP8266_RTOS_SDK.git Ubuntu虚拟机的安装参考:虚拟机VMware和Ubuntu18.04的安装 Ubuntu文件传输设置参考:Ubuntu下的各种文件传输设置 另外开发环境的搭建也可以参照这个大佬的博客: 乐鑫官方的参考链接为:https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/index.html
二、工具链的安装
我们需要在Ubuntu18上安装一些软件包依赖,使用如下命令即可
sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial python-pip python3-pip
然后下载交叉编译工具链:
64位Linux:https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz 32位Linux:https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-i686.tar.gz 我们可以直接使用wget工具
wget https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
下载好后解压
tar -xzf xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
然后将xtensa-lx106-elf/bin
目录导出到环境变量中,在.bashrc
添加如下一行即可
export PATH=$PATH:/home/william/esp/esp8266/tools/xtensa-lx106-elf/bin
然后使之生效
source ~/.bashrc
接着运行xtensa-lx106-elf-gcc -v
命令查看一下版本号
三、源码SDK包的下载和编译
乐鑫的源码是放在github上的,因为是国外的网站,所以拉去经常会失败,最近我发现在国内的gitee平台上也存放了代码,所以拉取gitee上的代码,这里我们拉取v3.4版本的SDK包。其中需要注意的一点是,在git拉取代码的时候,不要加sudo,因为加了sudo后以后编译都要管理员权限
git clone -b v3.4-rc https://gitee.com/EspressifSystems/ESP8266_RTOS_SDK.git
然后将.gitmodules
文件修改为如下所示
[submodule "components/json/cJSON"]
path = components/json/cJSON
url = ../../william_william/cJSON.git
[submodule "components/mbedtls/mbedtls"]
path = components/mbedtls/mbedtls
url = ../../william_william/mbedtls.git
[submodule "components/lwip/lwip"]
path = components/lwip/lwip
url = ../../william_william/esp-lwip.git
[submodule "components/mqtt/esp-mqtt"]
path = components/mqtt/esp-mqtt
url = ../../william_william/esp-mqtt.git
[submodule "components/coap/libcoap"]
path = components/coap/libcoap
url = ../../william_william/libcoap.git
然后使用如下命令更新子模块
git submodule update --init --recursive
接着需要安装需要使用的一下python包,先导出IDF_PATH
环境变量
export IDF_PATH=/home/william/esp/esp8266/ESP8266_RTOS_SDK
然后使用如下命令安装Python包
python -m pip install --user -r $IDF_PATH/requirements.txt
建议使用国内源的python包
python -m pip install --user -r $IDF_PATH/requirements.txt -i https://pypi.douban.com/simple
如果安装失败,建议更新pip版本
pip install --upgrade pip
安装完后进入ESP8266_RTOS_SDK/examples/get-started/hello_world
目录,执行make menuconfig
可以保持默认配置,按【s】会Save,然后回车,按【Esc】或【q】退出即可,然后使用make all
编译,可以使用多线程编译,比如我8线程的电脑使用make all -j8
编译,编译成功如下
四、烧录程序到开发板
我们需要将当前用户增加至 dialout 组,使用命令格式为sudo usermod -aG dialout 用户名
,如下所示
sudo usermod -aG dialout william
然后重启系统
通过dmesg | grep ttyS*
命令查看串口
dmesg | grep ttyS*
然后烧录
make flash
或者指定端口
make flash ESPPORT=/dev/ttyUSB0
等到出现Connecting.......
按住开发板上的BOOT
按键
下载成功
然后使用make monitor
命令查看串口输出
make monitor
可以看到,Hello world!
已经打印出来了,大功告成
五、使用VSCode开发项目
VSCode的下载参考:Visual Studio Code的安装和使用 VSCode远程开发参考:在Win10上使用SSH远程连接Linux搭建VSCode开发环境
在esp8266
下新建文件夹MyProject
,把ESP8266_RTOS_SDK里面的\examples\get-started
的整个文件夹hello_world
拷贝到MyProject里面;
在VSCode下打开MyProject/hello_world
下的Makefile
,修改为如下所示
#
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
# project subdirectory.
#
PROJECT_NAME := hello-world
IDF_PATH=/home/william/esp/esp8266/ESP8266_RTOS_SDK
include $(IDF_PATH)/make/project.mk
然后打开MyProject/hello_world
下的,将app_mian()修改为:
void app_main()
{
printf("Hello world!\n");
/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is ESP8266 chip with %d CPU cores, WiFi, ",
chip_info.cores);
printf("silicon revision %d, ", chip_info.revision);
printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
while (1)
{
printf("Hello world!\n");
printf("SDK version:%s\n", esp_get_idf_version());
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
接下来在终端中执行make all
,编译成功
然后使用make flash
下载:
然后可以用make monitor
命令监听串口
六、发送到Windows下载
将build文件夹下的bootloader/bootloader.bin
、hello-world.bin
和partitions_singleapp.bin
文件复制到windows下
下载安信可烧录工具
然后按如下设置进行下载
下载完成后可以在串口助手看到成功打印输出
七、通过samba服务器在Windows下载
samba服务器搭建参考:使用samba服务器在windows下访问linux的文件 然后同样的通过安信可烧录工具下载
八、附录
下一篇:ESP8266 RTOS开发之路(3)— 点亮第一个LED灯及按键输入