聊聊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 ...
随机推荐
- leetcode-0101 对称二叉树
题目地址 https://leetcode-cn.com/problems/symmetric-tree/ 1.递归 本题最简单的思路是递归,可以假设两棵一模一样的树在进行镜像对比.他们之间的关系满足 ...
- Go gRPC进阶-gRPC转换HTTP(十)
前言 我们通常把RPC用作内部通信,而使用Restful Api进行外部通信.为了避免写两套应用,我们使用grpc-gateway把gRPC转成HTTP.服务接收到HTTP请求后,grpc-gatew ...
- udp包最大数据长度是多少
因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535 udp包头占8字节, ip包头占20字节, 65535-28 = 65507 ...
- docker企业级镜像仓库Harbor管理
Harbor概述 Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: ...
- css套路学习(一)
css3信息获取方法 文档搜索:Google css spec; Google: 关键词 MDN; css tricks成熟css代码块sinppets; Google: center css tri ...
- BigDecimal 01 - 在JAVA中怎么比较Double类型数据的大小?
2019独角兽企业重金招聘Python工程师标准>>> 非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型! double a = 0.001; doub ...
- python实现二分叉查找
*二分叉查找就是折半查找 比如12345这几个数字当中找2,他会先找到这五个数字中的中坚的那个与2进行比较,比如中间的3>2他就认为3以后的不用查找了,然后查找3左边的,即123,再把这个分半, ...
- THU OS
前言 最近在学清华的OS课程,实验课做的真厉害. 我们的操作系统课就是写一个系统调用,改下进程软中断通信的代码,代码量不足500...清华是借鉴MIT的课,实验课都是做一个完整的小型操作系统. 一共8 ...
- H5 -- 取消a标签在点击时的背景颜色
原文链接:点我 1.取消a标签在移动端点击时的蓝色 a { -webkit-tap-highlight-color: rgba(255, 255, 255, 0); -webkit-user-sele ...
- 图论--差分约束--HDU\HDOJ 4109 Instrction Arrangement
Problem Description Ali has taken the Computer Organization and Architecture course this term. He le ...