背景
很早就听人说ESP8266提供SDK可以自己去折腾,一直想搞着来玩,奈何最近才有时间,我对RTOS了解一点,ESP8266里面集成的是Freertos,想搞很久了,之后会写个系列博客。
正文
下载源码 安装IDE环境
我是怕折腾,纯粹自己玩,就想着方便在windows下参考安信可官方的教程来搭建的开发环境、下载的源码。
安信可官方环境搭建
包含了IDE的安装,IDE使用、源码编译和固件下载这一系列流程,跟着走就对了。
其中在下载自己编译的SDK产生的BIN之后,不要跟下载官方给的固件一样通过串口用AT指令去测试程序是不是正确。。
提供的SDK里面没有支持AT,可能是因为加了AT版本的SDK本来就很大了,怕出问题,然后提供给我们的SDK就没有支持AT。其实也有另一种可能,如果SDK仍然支持AT,比如你在SDK中设置了AP模式,然后你通过串口AT设置为STA模式了,这样SDK程序就出错了。。如果代码都是自己搞可能没事,多人协作的时候可能就会出问题。
SDK目录结构
其实这个ESP8266的SDK将很多代码都是以库的形式提供的,就比如下面讲的user_init,是根本追不到调用的地方的,只能基于他开放的接口来。
app ##主要是提供给开发者的一个接口user_init,开发者修改SDK都是基于这个接口
documents ##主要是SDK开发相关的一些文档
extra_include ##额外包含的一些头文件
ld ##链接脚本
LICENSE ##一些证书
README.md ##说明文档
tools ##编译的工具
bin ##编译后产生的BIN文件就存放在这里
examples ##例子工程,这个里面包含了很多例子代码,值得好好分析
include ##包含的各种头文件
Makefile ##Makefile
third_party ##第三方开源代码
我没有看过这个SDK的很多源码,凭借对rtos的一点了解,我自己理解这个ESP8266 RTOS SDK开发无外乎
SDK开发思路
由于SDK开放的接口非常之少,通过user_init这个用户接口能做的事情其实也非常有限。下面介绍几种ESP8266 RTOS SDK系统开发思路,ESP8266硬件接口还没来得及看,后续补充。
- 通过user_init接口,利用freertos的定时器接口,注册一个定时回调函数,将自己想做的工作放到定时器的回调函数中去执行。
- 通过user_init接口,利用任务创建接口去创建一个新的任务,将自己想做的工作放到自己创建的任务中。
这两种方式各有优缺点,首先利用定时器优点就是占用空间少相对于创建一个任务(不需要任务栈 任务TCB等),缺点是会影响整个系统的实时性,因为定时器的回调函数执行是关了部分中断的,如果这个任务过大,将会严重影响系统性能。新建一个任务的优缺点其实跟定时器正好相反。
下面挂两个例子代码: