ESP8266 韧体

ESP8266 韧体

韧体类型

ESP必需透过外接SPI介面的FLASH才能运作,搭配SDK的关系,对于FLASH有对应的布局,所以支援几种FLASH容量:512Kbytes、1024Kbytes、2048Kbytes、4096Kbytes,总共四种容量,其中官方也将SDK分为Non-FOTA、FOTA(Firmware On The Air),字面的意思是FOTA指可以透过网路线上更新,Non-FOTA无法透过网路更新,必需要透过连接的方式更新,下面针对于这两种提供官方的布局表:

  • Non-FOTA

  • FOTA

官方将韧体分成数多的小档,每个档案都对应到其烧录的位址,如果需要更新韧体时就必需要依照Flash容量查表得知各档案的写入位址进行写入,第一次需每个都写入完成,第二次更新时只需要依照有变动的档案执行更新写入,像FOTA来说,它只更新程式码的区段并写入user2.bin,待ESP重开机后执行boot.bin程式内容再根据boot.bin程式内容的规则再将user2.bin程式内容搬移至user1.bin位址后再执行user1.bin

整合型韧体

韧体类型除了分为Non-FOTAFOTA之外,在烧录时必需要准备非常多的档案,因此在某些客制化韧体提供者会将所有的档案整合成单一档适合Flash容量大小的档案,如此一来在烧录时只需要指定位址从0x00000开始烧录至整个Flash,例如安信可提供的韧体档案会根据出货的2种容量大小1024KBytes(8Mbits)4096Kbytes(32Mbits)

  • Ai-Thinker_ESP8266_DIO_8Mbit_AiCloud_0.0.0.5_20170324.bin

  • Ai-Thinker_ESP8266_DIO_32Mbit_AiCloud_0.0.0.5_20170324.bin

烧录时就只需要指定位址为0X00000进行烧录,这样的好处是可以避免位址指定错误,但缺点是未来有更新档必需要再重新烧录一次,而不是只需要更新部分内容,这可能会让升级过程增加许多的时间。

上图为安信可韧体档中提供烧录1024Kbytes(8Mbits)的设定画面撷图

对于韧体的格式跟种类有些许了解后,对于接下来使用软体更新韧体时就会比较了解设定些什么。

官方韧体

官方因应各种应用,所以提供一种以AT命令的官方韧体,透过官方提供的AT命令来使用ESP进行网路应用,许多客制化韧体也是以此为基础增加许多客制化的AT命令,像安信可就是一个非常好的例子, 它提供许多客制化的命令像:AT+CIOREAD来读取I/O状态及AT+CIOADC读取ADC类比转数位的值,透过这些客制化的命令就能变化出许多功能,不需要自已透过SDK再做二次开发。

参考资料