聊聊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 ...
随机推荐
- 初探Redis-基础类型String
Redis存在五种基础类型:字符串(String).队列(List).哈希(Hash).集合(Set).有序集合(Sorted Set).String的出镜率算是最高的.本次列举出String的常用操 ...
- centos下python多版本管理(pyenv+python+virtualenv+ipython)
pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等 1 环境准备 安装相关软件和pyenv1.1 安装相关软件yum install -y ...
- react: typescript interface useState issue
define interface: interface ILoginState { imageId: string; imageSrc: string; username: string; passw ...
- 2019-2020-1 20199303《Linux内核原理与分析》第六周作业
系统调用的三层机制 首先是为系统增加新的命令 运行脚本自动生成文件系统 其中有一个显示时间的功能 编辑test.c文件,增加一个hello函数用来显示学号,再次使用make roofts自动编译,调用 ...
- AtomineerUtils使用说明
AtomineerUtils使用说明 VS2015PluginCrackAtomineer 介绍 AtomineerUtils 是国外的一款用于生成源代码注释的一款 VS 插件工具. 这款插件,支持 ...
- Android自绘制控件
开发过程中,我们免不了需要用到一些自定义的 View,自定义 View 一般可分为三类: ① 继承类 View —— 一般继承系统以后的基本 View,新增/重置一些自定义属性 ,例如两端对齐的Tex ...
- mac OS mysql新建数据库运行sql文件
mysql -uroot -proot123 进入本地数据库 create database 数据库名; use 数据库名; source 文件路径 quit 退出
- 如何在Vue项目中优雅的使用swiper插件
个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 开始之前,请先确保有一个基于webpack模板的项目(vue-cli脚手架 ...
- kafka可插拔增强如何实现?
导弹拦截,精准防御. 背景 拦截器:在不修改应用程序业务逻辑的情况下,一组基于事件的可插拔的逻辑处理链: 类比springMVC的拦截器: 这些都是通过配置拦截器,插入到应用程序中,实现可插拔的修改业 ...
- D. Misha, Grisha and Underground 树链剖分
D. Misha, Grisha and Underground 这个题目算一个树链剖分的裸题,但是这个时间复杂度注意优化. 这个题目可以选择树剖+线段树,时间复杂度有点高,比较这个本身就有n*log ...