ESP8266_RTOS_SDK发行版本v3.3-rc1环境搭建

在大学期间玩8266所接触的都无操作系统版本的SDK,但后来接触了ESP32后发现ESP8266也推出了RTOS版本,一直都没来得及去更新版本,今天终于有时间了,技术永远是向前进的,人也是,要不断的追逐。

认识一下ESP8266 SDK

ESP8266 SDK

ESP8266 Software Development Kit (SDK)是乐鑫为开发者提供的物联网(IOT)应用开发平台,包括基础平台以及上层应用开发示例,如智能灯、智能开关等。

SDK的基础平台按照是否基于操作系统可分为:non-OS和RTOS两种版本。

Non-OS SDK:

它是不基于操作系统的SDK,提供IOT_Demo和AT的编译。Non-OS SDK主要使用定时器和回调函数的方法实现各个功能事件的嵌套,达到特定条件下触发特定功能函数的目的。Non-OS SDK使用espconn接口实现网络操作,用户安装espconn接口的使用规则进行软件开发。

RTOS SDK

  • 它是基于FreeRTOS,在GitHub上开源。
  • RTOS版本SDK使用FreeRTOS系统,引入OS多任务处理机制,用户可以使用FreeRTOS的标准接口实现资源管理、循环操作、任务内延时、任务间信息传递和同步等面向任务流程的设计方式。具体接口使用方法参考FreeRTOS官方网站的使用功能说明或者USING THE FreeRTOS REAL TIME KERNEL—A Practical Guide 介绍。
  • RTOS版本SDK的网络操作接口是标准的lwIP API,同时提供了BSD Socket API接口的封装实现,用户可以直接安装Socket API的使用方式来开发软件应用,也可以直接编译运行其他平台的标准Socket应用,有效降低平台切换的学习成本。
  • RTOS版本SDK引入了CJSON库,使用该库函数可以更加方便的实现对JSON数据包的解析。
  • RTOS版本兼容non-OS SDK中WiFi接口、SmartConfig接口、Sniffer相关接口、系统接口、定时器接口、FOTA接口和外围驱动接口,不支持AT实现。

安装与测试

参考:

https://docs.espressif.com/projects/esp8266-r tos-sdk/en/latest/get-started/windows-setup.html

资料下载

下载工具链和sdk:
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip

https://dl.espressif.com/dl/xtensa-lx106-elf-win32-1.22.0-100-ge567ec7-5.2.0.zip

https://github.com/espressif/ESP8266_RTOS_SDK/releases/tag/v3.3-rc1

下载完成

准备工具链

解压esp32_win32_msys2_environment_and_toolchain-20181001.zip

双击msys32/mingw32.exe

在工具链中添加idf目录,sdk路径

D:\AAESP8266\AIDF\SDK\ESP8266_RTOS_SDK-v3.3-rc1

再次打开msys32/mingw32.exe

输入

printenv IDF_PATH

开始测试

将SDK\ESP8266_RTOS_SDK-v3.3-rc1\examples\get-started的hello_world复制到自己新建的文件夹ESP8266_RTOS_SDK-v3.3-rc1\dongpro中

在编译工具打开该文件夹

cd /d/AAESP8266/AIDF/SDK/ESP8266_RTOS_SDK-v3.-rc1/dongpro/hello_world

配置工程

make menuconfig

报错

make: *** 没有规则可制作目标“check_python_dependencies”,由“menuconfig” 需求。 停止。

解决方法

python -m pip install --user -r $IDF_PATH/requirements.txt

此处如果遇到红色报警,必须再次运行下载命令,直至成功

开始测试(再次)

配置工程

make menuconfig

配置你的串口和flash大小

保存后退出

报错

make:xtensa-lx106-elf-gcc:命令未找到

expr: syntax error: unexpected argument “5.2.0”

解决方法

将刚刚下载的xtensa-lx106-elf-win32-1.22.0-100-ge567ec7-5.2.0.zip解压到msys32\opt目录下

将它添加到工具链环境变量$PATH中,其方法与添加idf一样

重启工具链再次测试

配置工程

make menuconfig

清除工程

make clean

编译工程

make all

编译和烧写工程

make flash

查看串口输出

make monitor

ESP8266下载准备:

将IO0接地,重启即可进入下载模式

下载完后将IO0悬空,重启即可开始运行程序

编译完成

下载完成

查看效果

为啥ESP8266波特率是74800,因为74800是设备上电日志打印的波特率,如果想更改下面的倒计时等数据打印的波特率可以在工程中添加串口波特率初始化代码即可,如下:

#include "driver/uart.h"//导入串口头文件

uart_set_baudrate(UART_NUM_0,);//初始化波特率为115200

修改Hellow工程

 #include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/uart.h"//导入串口头文件
void app_main()
{
uart_set_baudrate(UART_NUM_0,);//初始化波特率为115200
printf("Hello world!\n");//输出程序员的标准问好
//芯片信息
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);
//flash信息,大小和类型(外部)
printf("东小东:%dMB %s flash\n", spi_flash_get_chip_size() / ( * ),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
//使用freertos计时函数倒计时
for (int i = ; i >= ; i--) {
printf("东小东:Restarting in %d seconds...\n", i);
vTaskDelay( / portTICK_PERIOD_MS);
}
printf("东小东:Restarting now.\n");
fflush(stdout);//刷新输出
esp_restart();//重启
}

最终效果:

8266的RTOS版本的注意事项

版本 1.5 版权 © 2017

https://www.espressif.com/sites/default/files/documentation/20a-esp8266_rtos_sdk_programming_guide_cn.pdf

l  建议使⽤定时器实现⻓时间的查询功能,可将定时器设置为循环调⽤,注意:

1 定时器(freeRTOS timer 或 os_timer)执⾏函数内部请勿使⽤ while(1) 或其他能阻塞线程的⽅式延时,例如,不能在定时器回调中进⾏ socket send 操作,因为send 函数会阻塞线程;

2 定时器回调执⾏请勿超过 15 ms;

3 os_timer_t 建⽴的变量不能为局部变量,必须为全局变量、静态变量或os_malloc 分配的指针。

l  从 ESP8266_RTOS_SDK_v1.2.0 起,⽆需添加宏 ICACHE_FLASH_ATTR,函数将默认存放在 CACHE 区,中断函数也可以存放在 CACHE 区;如需将部分频繁调⽤的函数定义在 RAM 中,请在函数前添加宏 IRAM_ATTR;

l  ⽹络编程使⽤通⽤的 socket 编程,⽹络通信时,socket 请勿绑定在同⼀端⼝;

l  freeRTOS 操作系统及系统⾃带的 API 说明请参考 http://www.freertos.org; 这里要注意的是8266在创建任务的时候使用的是freertos自带的字为单位,而ESP32中是以字节为单位的。

l  RTOS SDK 的系统任务最⾼优先级为 14,创建任务的接⼝ xTaskCreate 为freeRTOS ⾃带接⼝,使⽤ xTaskCreate 创建任务时,任务堆栈设置范围为 [176,512]。

1 在任务内部如需使⽤⻓度超过 60 的⼤数组,建议使⽤ os_malloc 和 os_free 的⽅式操作,否则,⼤数组将占⽤任务的堆空间;

2 SDK 底层已占⽤部分优先级:watchdog task 优先级 14,pp task 优先级 13,⾼精度 timer (ms) 线程优先级 12,TCP/IP task 优先级 10,freeRTOS timer 优先级2,Wi-Fi event 优先级为 2,idle task 优先级为 0;

3 可供⽤户任务使⽤的优先级为 1 ~ 9;但注意,⽤户任务请勿始终占⽤ CPU,导致低优先级的系统任务⽆法执⾏;

4 请勿修改 FreeRTOSConfig.h,此处修改头⽂件并不能⽣效,设置由 SDK 库⽂件决定。


乐鑫文档集合

https://www.espressif.com/zh-hans/support/documents/technical-documents

开源地址

https://github.com/espressif/ESP8266_RTOS_SDK

编程手册

https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/windows-setup.html

参考安装文档

https://blog.csdn.net/u010177891/article/details/92016695

聊聊ESP8266的SDK(ESP8266_RTOS_SDK v3.3 环境搭建)的更多相关文章

  1. Hi3519V101 SDK安装以及开发环境搭建

    Hi3519V101 Linux开发环境 1.安装Hi3519V101 SDKHi3519V101 SDK是基于Hi3519V101 DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工 ...

  2. esp8266 SDK开发之环境搭建

    最近在弄这个WiFi模块,发现网上SDK开发方面的资料很少,发现了一套视频教程,不过主讲人的讲课方式实在受不了.对基于SDK开发感兴趣的同学可以通过本帖在Ubuntu系统上通过Eclipes搭建开发环 ...

  3. ESP-8266 RTOS 环境搭建

    本节为 ESP-8266 RTOS 的环境搭建 只适合Linux环境,推荐Ubuntu.本例以Ubuntu16.04-x64为例 安装 git [dzlua@ubuntu: ~]$ sudo apt ...

  4. 1-ESP8266 SDK开发基础入门篇--开发环境搭建

    因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...

  5. ESP8266 RTOS SDK开发

    ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...

  6. Android开发环境搭建(jdk+eclip+android sdk)

    在开启Android 开发之旅之前,首先要把准备工作做好---搭建开发环境 一.环境搭建: 1.Java JDK 安装 2.Eclipse 安装 3.Android SDK 安装 4.ADT安装 5. ...

  7. Android开发环境搭建全程演示(jdk+eclipse+android sdk)

    全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...

  8. Cocos2d-x v3.0正式版尝鲜体验【1】 环境搭建和新建项目

    Cocos2d-x v3.0在前天最终公布正式版了,等了大半年最终出来了.一直没去碰之前的3.0各种beta,rc版本号,就想等正式版出来再尝试. 昨天也參加了触控科技在成都举办的沙龙活动.看到作者王 ...

  9. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

    作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...

随机推荐

  1. 常见分布式全局唯一ID生成策略

    全局唯一的 ID 几乎是所有系统都会遇到的刚需.这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义.工业上有多种策略来获取这个全局唯一的id,针对常见的几种场景,我在这里进行 ...

  2. Java中Random类

    Random:产生随机数的类 构造方法: public Random();没有给种子,用的是默认种子,是当前时间的毫秒值. public Random(long seed);给出指定的种子 //给定种 ...

  3. JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍

    JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍 前言 前两篇博客带领大家进行了入门,做出了第一个例子.也解决了中文打印的问题.大家跟着例子也做出了de ...

  4. MySQL基础知识和常用命令总结

    说明:以下内容是阅读书籍<<MySQL必知必会>>的摘要和总结 检索数据 排序检索数据 过滤数据 使用通配符过滤 使用正则表达式进行搜索 创建计算字段 使用数据处理函数 汇总数 ...

  5. QML-AES加解密小工具

    Intro 为了解码网课视频做的小工具,QML初学者可以参考一下. 项目地址 Todo 在插入新条目时,ListView不会自动根据section进行重排,因此出现同一个文件夹重复多次的现象.目测强行 ...

  6. Web 之 Cookie

    Cookie Cookie实际上是一小段的文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏 ...

  7. 标准库hashlib模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 算法(都是基于hash的算法, ...

  8. RMI原理揭秘之远程对象

    讨论开始之前,我们先看看网上的一个例子,这个例子我腾抄了一分,没有用链接的方式,只是为了让大家看得方便,如有侵权,我立马***. 定义远程接口: 1 2 3 4 5 6 package com.guo ...

  9. 一个简易的SocketIM

    今天做了一个简易的socketIM的小示例.基本思想是开启两个winform,每个winform既充当服务器也充当客户端.一个监听8000端口,另外一个监听8001端口,两个winform接收到信息之 ...

  10. POJ 2054 Color a Tree解题报告

    题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...