阿里云ECS搭建ESP8266_RTOS_SDK开发环境

陈拓 2021/01/10-2021/01/25

1. 概述

ESP8266的开发工具是在linux系统下运行的。阿里云服务器(Elastic Compute Service,简称ECS)可以安装多种操作系统,我们安装的是CentOS。

下面介绍在阿里云CentOS下安装ESP8266-RTOS_SDK开发环境,编译C语言程序,并将编译好的bin文件下载到本地,再用Flash下载工具烧写到ESP8266模块上运行。

  • 登录阿里云

你可以使用Win10自带的ssh,也可以使用PuTTY,我用PuTTY。

  • 查看阿里云上我的Linux系统版本:lsb_release -a

在《Win10-Ubuntu子系统构建ESP8266_RTOS_SDK开发环境》

https://zhuanlan.zhihu.com/p/346072018

https://blog.csdn.net/chentuo2000/article/details/112973413

一文中,我们已经在个人PC上安装了ESP8266_RTOS_SDK开发环境。现在我们将ESP8266_RTOS_SDK开发环境安装到阿里云上就可以供多人使用。

1.1 ESP8266技术文档

https://www.espressif.com/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D=14

1.2 工具链和SDK

因为ESP8266功能太弱,不足以支持开发工作,所以需要在其他平台上安装开发系统进行开发。下面我们在阿里云CentOS下构建ESP8266开发环境,将ESP8266的C程序代码编译链接成ESP8266可执行的bin文件,这个过程就是交叉编译,交叉编译所需的软件工具叫做工具链toolchain。

SDK提供了操作ESP8266的API函数,我们用C语言通过调用这些函数就可以开发出所需功能的程序,再用工具链编译成可执行代码。

多个SDK可以同时存在,ESP8266_NONOS_SDK和ESP8266_RTOS_SDK也可以都安装。

1.3 ESP8266开发工具SDK的分类

在官方文档《ESP8266 SDK入门指南》中有关于开ESP8266发工具的分类。

2. 换源

为例加快下载速度,将yum源设置为国内镜像站点。国内镜像站点有清华源、科大源和阿里源,在阿里云上当然用阿里源。

  • 备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  • 下载更改源

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  • 清空yum缓存并生成cache文件

sudo yum clean all

sudo yum makecache

  • 更新系统

sudo yum -y update

参考[https://www.cnblogs.com/hester/p/12365068.html]

3. Linux 平台工具链的标准设置

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/linux-setup.html

3.1 安装准备

  • 编译ESP-IDF需要以下软件包

前面查过了,我们的系统是CentOS 7

sudo yum -y update && sudo yum install git wget flex bison gperf ncurses-devel python3 cmake ninja-build ccache dfu-util

注意:官方给出的命令缺少ncurses-devel包。

另外dfu-util包未安装成功:

但这并不影响我们的工作,因为dfu-util包主要用于通过USB连接的设备上下载和上传固件。我们不能在云端连接设备,所以这个包可以不安装。

3.2 设置 Python 3 为 CentOS 默认 Python 版本

  • 安装 Python 3

sudo yum -y update && sudo yum install python3 python3-pip python3-setuptools

  • 检查Python 3

ls -l /usr/bin/python*

  • 设置Python3为默认Python版本

当前默认Python版本:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && alias pip=pip3

 update-alternativeslinux系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。

update-alternatives --list

update-alternatives --display python

现在默认的Python版本:

  • 删除版本指定

sudo update-alternatives --remove python /usr/bin/python3

  • 别名指定

sudo alias pip=pip3用别名指定默认pip为pip3

  • 查看别名

  • 删除别名

sudo unalias pip

  • yum命令失效问题

为什么要删除默认的Python版本指定和pip别名指定,因为将默认Python指定为Python3之后yum就失效了。

这是因为yum只支持Python2。用删除默认Python指定的办法太麻烦了。

  • 让yum命令生效

1) 修改urlgrabber-ext-down文件。它在这里:

sudo nano /usr/libexec/urlgrabber-ext-down

将下面红框中的内容

改成

2) 修改yum文件。它在这里

sudo nano /usr/bin/yum

将下面红框中的内容

改成

这样就可以了:

4. 获取工具链

  • 网址

https://github.com/espressif/ESP8266_RTOS_SDK

右击Linux(64),复制链接地址:

https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz

  • 创建编译链目录

mkdir esp

cd esp

  • 下载

wget https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz

  • 解压

tar -xzvf xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz

路径:/home/ccdc/esp/xtensa-lx106-elf

  • 设置环境变量

回到家目录,就是我们登录的目录

cd ~

看看有没有文件.bashrc

编辑这个文件nano ~/.bashrc

将export PATH=/home/ccdc/esp/xtensa-lx106-elf/bin:$PATH

添加到最后一行。

保存,退出。

重新登录,查看环境变量echo $PATH:

工具链的路径已经在里面了。

  • 运行xtensa-lx106-elf-gcc -v来验证安装

5. 获取ESP8266_RTOS_SDK

5.1 克隆ESP8266_RTOS_SDK

cd esp

git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git

失败!下载很困难。

好消息是乐鑫已经在gitee上有了国内镜像,网址是:

https://gitee.com/EspressifSystems

点击ESP8266_RTOS_SDK

点击“复制”得到克隆地址:https://gitee.com/EspressifSystems/ESP8266_RTOS_SDK.git

克隆ESP8266_RTOS_SDK到阿里云

git clone https://gitee.com/EspressifSystems/ESP8266_RTOS_SDK.git

很快,也很顺利。

5.2 安装子模块

  1. 扩展工具esp-gitee-tools

在乐鑫gitee镜像上有一个仓库esp-gitee-tools可以用来安装子模块:

进入esp-gitee-tools

点击“submodule-update使用”

乐鑫开源/ESP8266_RTOS_SDK仓库下有.gitmodules文件:

需要安装5个子模块。

  • 安装扩展工具

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

进入 esp-gitee-tools 目录,export submodule-update.sh 所在路径,方便后期使用,如:

cd esp-gitee-tools

export EGT_PATH=$(pwd)

  • 安装子模块 submodules

进入ESP8266_RTOS_SDK目录执行submodule-update.sh脚本:

cd ~/esp/ESP8266_RTOS_SDK

$EGT_PATH/submodule-update.sh

子模块安装完成。

  • 设置ESP8266_RTOS_SDK环境变量

和设置工具链环境变量一样在~/.bashrc中添加一行:

export IDF_PATH=~/esp/ESP8266_RTOS_SDK

nano ~/.bashrc

保存,退出。

刷新环境变量:

source ~/.bash_profile

验证:

echo $IDF_PATH

6. 测试项目编译

用esp8266_rtos_sdk/examples/get-started/hello_world项目进行测试。

参考GitHub - espressif/ESP8266_RTOS_SDK: Latest ESP8266 SDK based on FreeRTOS, esp-idf style.

  • 进入项目目录

cd ~/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world

  • 启动项目配置工具

make menuconfig

进入Serial flasher config --->,修改串口和芯片Flash大小。

Windows中的串口COM4对应Linux中的设备/dev/ttyS4

串口设置按照《Win10-Ubuntu子系统构建ESP8266_RTOS_SDK开发环境》

https://zhuanlan.zhihu.com/p/346072018

https://blog.csdn.net/chentuo2000/article/details/112973413

一文中的描述设置,因为最后烧写程序是在我的PC上进行,所以要按照我的PC进行设置。我用的ESP8266-12F的Flash大小是4MB。

保存,退出。

  • 编译

烧写命令:

python /home/ccdc/esp/ESP8266_RTOS_SDK/components/esptool_py/esptool/esptool.py --chip esp8266 --port /dev/ttyS4 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size 4MB 0x0 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/bootloader/bootloader.bin 0x10000 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/hello-world.bin 0x8000 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/partitions_singleapp.bin

从命令中可以获取以下信息:

  • 串口号

/dev/ttyS4

  • 波特率

115200

  • Flash芯片模式

flash_mode dio

  • Flash芯片频率

40m

  • Flash芯片大小

4MB

需要下载3个文件和烧写地址:

  • bootloader.bin

0x0 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/bootloader/bootloader.bin

  • hello-world.bin

0x10000 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/hello-world.bin

  • partitions_singleapp.bin

0x8000 /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/partitions_singleapp.bin

0x0,0x10000和0x8000是烧写地址,后面要用到。

7. 下载bin文件到PC

  • 进入CMD窗口

Win+R

输入cmd,确定。

  • 用sftp登录阿里云

@前面是用户名,后面是IP地址。

  • 进入远程项目的build目录

cd /home/ccdc/esp/ESP8266_RTOS_SDK/examples/get-started/hello_world/build

  • 切换本地目录

lcd E:\ct\ESP8266

  • 下载bootloader.bin

get bootloader/bootloader.bin

  • 下载hello-world.bin

get hello-world.bin

  • 下载partitions_singleapp.bin

get partitions_singleapp.bin

  • 查看本地目录

  • 退出sftp

8. 烧写bin文件到ESP8266模块

  1. 下载Windows的Flash烧写工具

https://www.espressif.com/zh-hans/support/download/other-tools?keys=&field_type_tid%5B%5D=14

点击下载:

flash_download_tool_v3.8.5_1.zip

  • 解压

点击flash_download_tool_v3.8.5_1.zip

点击提取:

点击全部解压缩:

点击提取:

打开flash_download_tool_v3.8.5文件夹:

  • 双击flash_download_tool_v3.8.5.exe运行

选择开发者模式:

选择ESP8266下载工具。设置如下,地址在前面已经有了,对应如下:

0x0 bootloader.bin

0x10000 hello-world.bin

0x8000 partitions_singleapp.bin

https://blog.csdn.net/yunyin_link/article/details/77676886

默认生成 bootloader.bin、app_demo.bin、partitions_singleapp.bin

设置如下:

点击START开始烧写。

烧写完成:

9. 用串口调试助手查看程序运行结果

串口调试助手的使用请看《Win10使用CH340 USB-SERIAL串口》

https://zhuanlan.zhihu.com/p/343013801

https://blog.csdn.net/chentuo2000/article/details/112323488

10. 程序说明和波特率修改

波特率74800不是标准的波特率,我们通常使用标准波特率115200。有关C程序和运行结果的说明,以及波特率的更改请看:

《Win10-Ubuntu子系统构建ESP8266_RTOS_SDK开发环境》

https://zhuanlan.zhihu.com/p/346072018

https://blog.csdn.net/chentuo2000/article/details/112973413

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值