1. SDK

  • SDK是乐鑫提供的软件开发包,集成了外设的驱动代码和其他有关网络的代码,封装了大量的API函数,方便我们在开发中调用,但因此需要注意一些使用方法。
  • esp8266 non os sdk 文档 esp8266 sdk下载_c语言



1.1 non-OS 和 RTOS 两种版本SDK

esp8266 non os sdk 文档 esp8266 sdk下载_c语言_02


esp8266 non os sdk 文档 esp8266 sdk下载_固件_03


1.2 ESP8266 FW

  • 指出我们在不同的模式下,需要下载的文件到FLASH中。

esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_04


esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_05


1.3 Non-OS SDK

esp8266 non os sdk 文档 esp8266 sdk下载_c语言_06


esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_07


1.4 RTOS SDK

esp8266 non os sdk 文档 esp8266 sdk下载_c语言_08


esp8266 non os sdk 文档 esp8266 sdk下载_重命名_09


2. Flash布局

  • 由于提供的SDK对Flash有布局要求(代码中的链接地址根据编译配置,在编译时链接到了不同的地址区域以及分区保存信息),因此我们在烧录代码时,需要烧录到正确的Flash分区,内核才能正常链接到代码区域加载代码运行。根据Flash容量大小和是否支持FOTA(在线升级)来决定烧录的地址和所需的bin文件。


2.1 Non-FOTA

esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_10


esp8266 non os sdk 文档 esp8266 sdk下载_c语言_11


esp8266 non os sdk 文档 esp8266 sdk下载_固件_12


2.2 FOTA

esp8266 non os sdk 文档 esp8266 sdk下载_重命名_13


esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_14


esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_15

  • 上述中常出现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,软件安装很简单。
  • esp8266 non os sdk 文档 esp8266 sdk下载_固件_16

  • 安装完成后查看系统环境变量是否自动添加
  • esp8266 non os sdk 文档 esp8266 sdk下载_重命名_17


3.2 编译SDK的AT固件

  1. 下载SDK,这里以乐鑫的ESP8266_NONOS_SDK-3.0.5为例,下载地址:https://github.com/espressif/ESP8266_NONOS_SDK/releases
  2. esp8266 non os sdk 文档 esp8266 sdk下载_固件_18

  3. 简单分析ESP8266_NONOS_SDK-3.0.5文件夹结构,基本上在本文1.3章节中我们可以知道各个文件夹的内容意义,因此这里我们着重分析顶层的Makefile文件。
  4. esp8266 non os sdk 文档 esp8266 sdk下载_c语言_19


  5. esp8266 non os sdk 文档 esp8266 sdk下载_c语言_20


  6. esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_21


  7. esp8266 non os sdk 文档 esp8266 sdk下载_固件_22


  8. esp8266 non os sdk 文档 esp8266 sdk下载_固件_23


  9. esp8266 non os sdk 文档 esp8266 sdk下载_重命名_24


  10. esp8266 non os sdk 文档 esp8266 sdk下载_固件_25


  11. esp8266 non os sdk 文档 esp8266 sdk下载_固件_26


  12. esp8266 non os sdk 文档 esp8266 sdk下载_重命名_27


  13. esp8266 non os sdk 文档 esp8266 sdk下载_固件_28


  14. esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_29


  15. esp8266 non os sdk 文档 esp8266 sdk下载_重命名_30


  16. esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_31

  17. 创建一个工程
    先复制一份SDK工程文件,然后将工程里面的driver_lib文件夹下的Makefile文件重命名为Makefile.bak,我们保留该文件夹便于后期添加里面的一些外设驱动,同理将third_party文件夹下的Makefile文件重命名为Makefile.bak。然后将examples下的at文件夹复制到SDK目录下,然后重命名为app
  18. esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_32


  19. esp8266 non os sdk 文档 esp8266 sdk下载_c语言_33


  20. esp8266 non os sdk 文档 esp8266 sdk下载_编译环境_34

  21. 根据上述的第2点分析,设置工程。
  22. esp8266 non os sdk 文档 esp8266 sdk下载_c语言_35

  23. 在第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

esp8266 non os sdk 文档 esp8266 sdk下载_重命名_36

  1. 右键工程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
  1. 根据第2章节的Flash布局,将该固件下载到ESP-12F。

  2. 从以上过程来看,我们想要创建其他的工程模板也是非常简单的了,比如可以将app目录下的内容替换成选择examples下的IoT_Demo,只是需要注意不要去修改eagle.app.v6.ld,同时注意SDK3.0以上需要自行实现partition_table并注册。