1. SDK
- SDK是乐鑫提供的软件开发包,集成了外设的驱动代码和其他有关网络的代码,封装了大量的API函数,方便我们在开发中调用,但因此需要注意一些使用方法。
1.1 non-OS 和 RTOS 两种版本SDK
1.2 ESP8266 FW
- 指出我们在不同的模式下,需要下载的文件到FLASH中。
1.3 Non-OS SDK
1.4 RTOS SDK
2. Flash布局
- 由于提供的SDK对Flash有布局要求(代码中的链接地址根据编译配置,在编译时链接到了不同的地址区域以及分区保存信息),因此我们在烧录代码时,需要烧录到正确的Flash分区,内核才能正常链接到代码区域加载代码运行。根据Flash容量大小和是否支持FOTA(在线升级)来决定烧录的地址和所需的bin文件。
2.1 Non-FOTA
2.2 FOTA
- 上述中常出现512+512或者1024+1024,比如4096 512+512,4096 1024+1024,其中4096代表的Flash的容量,那么512+512/1024+1024代表的是:在4096KB的Flash中采用 (512KB+512KB) / (1024KB+1024KB) 的布局,当出现这种写法的时候,基本上是指采用FOTA的布局,即可以在线升级的程序,通过备份加载更新程序。
- 因此在下载代码的时候容易混淆,但是只要记住:先选择Flash的大小,比如我使用的模组为ESP-12F,就选择32Mbit的下载,然后再来看是否想要支持FOTA,如果不支持,那么就选择32Mbit,尽管提示消息还是有512+512,但也无所谓,这是使用FOTA才需要注意的,如果使用FOTA,就要注意先选择32Mbit,然后根据分区512+512还是1024+1024去选择32Mbit或者32Mbit-C1。
- 同理,在下面的SDK编程中选择SPI_SIZE_MAP,也是按照这样的方法选取。
3. SDK编译环境
3.1 SDK编译环境安装
- 想要使用SDK开发,就需要搭建SDK的编译环境,通常SDK编程环境有两种,一是乐鑫提供的编译环境,二是安信可提供的window下的一体化编译环境。我们采用安信可的编译环境,容易上手。
- 编译环境下载地址,这里以IDE1.5版本为例:https://docs.ai-thinker.com/tools,软件安装很简单。
- 安装完成后查看系统环境变量是否自动添加
3.2 编译SDK的AT固件
- 下载SDK,这里以乐鑫的ESP8266_NONOS_SDK-3.0.5为例,下载地址:https://github.com/espressif/ESP8266_NONOS_SDK/releases
- 简单分析ESP8266_NONOS_SDK-3.0.5文件夹结构,基本上在本文1.3章节中我们可以知道各个文件夹的内容意义,因此这里我们着重分析顶层的Makefile文件。
- 创建一个工程
先复制一份SDK
工程文件,然后将工程里面的driver_lib
文件夹下的Makefile
文件重命名为Makefile.bak
,我们保留该文件夹便于后期添加里面的一些外设驱动,同理将third_party
文件夹下的Makefile
文件重命名为Makefile.bak
。然后将examples
下的at
文件夹复制到SDK
目录下,然后重命名为app
。 - 根据上述的第2点分析,设置工程。
- 在第3点我们复制了at文件下的内容,就是为了编译出一个AT固件出来,尽管在
SDK/bin/at
目录下已经提供了支持FOTA的AT固件,但为了验证我们的工程模板是否能用,我们选择自行编译出AT固件,同样我们编译出一个支持FOTA的AT固件,因此还需要对工程设置一下。
make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=DOUT SPI_SIZE_MAP=6
- 右键工程8266_NSDK-3.0.5,先执行
clean Project
,然后再执行Build Project
。
- 如果要生成user2.bin,设置工程如下即可(就是APP变为2)。
make COMPILE=gcc BOOT=new APP=2 SPI_SPEED=40 SPI_MODE=DOUT SPI_SIZE_MAP=6
- 根据第2章节的Flash布局,将该固件下载到ESP-12F。
- 从以上过程来看,我们想要创建其他的工程模板也是非常简单的了,比如可以将app目录下的内容替换成选择
examples
下的IoT_Demo
,只是需要注意不要去修改eagle.app.v6.ld
,同时注意SDK3.0以上需要自行实现partition_table
并注册。