聊聊ESP8266的SDK(ESP8266_RTOS_SDK v3.3 环境搭建)
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
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 环境搭建)的更多相关文章
- Hi3519V101 SDK安装以及开发环境搭建
Hi3519V101 Linux开发环境 1.安装Hi3519V101 SDKHi3519V101 SDK是基于Hi3519V101 DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工 ...
- esp8266 SDK开发之环境搭建
最近在弄这个WiFi模块,发现网上SDK开发方面的资料很少,发现了一套视频教程,不过主讲人的讲课方式实在受不了.对基于SDK开发感兴趣的同学可以通过本帖在Ubuntu系统上通过Eclipes搭建开发环 ...
- ESP-8266 RTOS 环境搭建
本节为 ESP-8266 RTOS 的环境搭建 只适合Linux环境,推荐Ubuntu.本例以Ubuntu16.04-x64为例 安装 git [dzlua@ubuntu: ~]$ sudo apt ...
- 1-ESP8266 SDK开发基础入门篇--开发环境搭建
因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...
- ESP8266 RTOS SDK开发
ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...
- Android开发环境搭建(jdk+eclip+android sdk)
在开启Android 开发之旅之前,首先要把准备工作做好---搭建开发环境 一.环境搭建: 1.Java JDK 安装 2.Eclipse 安装 3.Android SDK 安装 4.ADT安装 5. ...
- Android开发环境搭建全程演示(jdk+eclipse+android sdk)
全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...
- Cocos2d-x v3.0正式版尝鲜体验【1】 环境搭建和新建项目
Cocos2d-x v3.0在前天最终公布正式版了,等了大半年最终出来了.一直没去碰之前的3.0各种beta,rc版本号,就想等正式版出来再尝试. 昨天也參加了触控科技在成都举办的沙龙活动.看到作者王 ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
随机推荐
- Java工作流引擎-集团模式下的权限 设计与实现
关键字 工作流开发框架权限设计.用户组.岗位.集团模式应用. java工作流程引擎, .net 工作流引擎,工作流开发框架 相关的表结构 -- 相关组织-表结构. SELECT No,Name,Par ...
- 即时通信WebSocket 和Socket.IO
WebSocket HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯. 在2008年诞生,2011年成为国际标准. 现在基本所有浏览器都已经支持了. We ...
- Apache Hudi集成Apache Zeppelin实战
1. 简介 Apache Zeppelin 是一个提供交互数据分析且基于Web的笔记本.方便你做出可数据驱动的.可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spa ...
- python正则表达式详解之Match类及其方法
1.Match对象简介 match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生.可以直接当做bool值使用,如果匹配则相当于True, 如果不匹配,则返回Non ...
- thinkPHP--关于域名指向的问题
一般项目的域名指向都是可以直接配置的,在默认的情况下.一般都是指向index.php文件.我就直接上图吧,这里是用我的公司项目名称www.xcj.com为域名. 一般的进入项目,调用默认的控制器: h ...
- QT 执行windows cmd 命令并读取结果
1,写好命令, 2,用QProcess执行,等待完成(有超时), 3,读取结果 注意形如“Program Files”的有 空格 的路径,要加上双引号. QProcess process; QStri ...
- 日志分析工具ELK(四)
Logstash收集TCP日志 #Input plugins TCP插件 所需的配置选项 tcp { port =>... } [root@linux-node1 ~]# cat tcp.con ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- Django入门4: ORM 数据库操作
大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段 ...
- 业务SQL那些事--慎用LIMIT
业务SQL那些事--慎用LIMIT 在业务中使用LIMIT限制SQL返回行数是很常见的事情,但如果不知道其中可能的坑或者说真正执行逻辑,就可能会使SQL执行非常慢,严重影响性能. LIMIT OFFS ...