ZigBee EmberZNet Bootloader介绍及外挂Flash OTA时修改Bootloader的方法

来源:互联网 发布:为什么淘宝助理打不开 编辑:程序博客网 时间:2024/06/05 08:48

1.基本介绍

Silicon labs公司的为ZigBee设备提供了两种Bootloader:standalone 和 application,它们的区别在于占用的flash空间大小和位置不同,ZigBee设备如果没有bootloader则需要烧录器才能更新固件程序,无法通过OTA来升级固件。

1.1.在flash头部会预留8kB或者16KB空间给Bootloader,在flash尾部会预留4kB到36KB空间给simulated EEPROM 相关介绍,虚拟内存如下


1.2 Standalone Bootloader与应用程序相对独立,应用程序通过halLaunchStandaloneBootloader()  API函数来调用它之后,它会通过串口,SPI接口或者OTA等方式获取更新固件,更新固件的方式是新固件直接覆盖旧固件,如果失败则必须重新重头开始获取新固件,无法恢复到原来的旧程序,整个Bootloading 过程中不需要应用程序的参与。

1.3 Application Bootloader需要通过应用程序(OTA,串口等方式)去获取新固件,无论下载的新固件是放在外部存储器还是内部存储器,一旦下载完会调用Application Bootloader去校验下载的新固件,并拷贝到内部flash,如果检验失败则会启动恢复模式,由于Application Bootloader不参与文件下载的过程,因此会比Standalone Bootloader程序占用的空间小很多,原本预留的空间剩下的部分用来存储恢复文件,如果下载过程中出现错误不会对当前运行的程序产生影响,下载可以重新开始或者暂停

2.对于不同信号的芯片,硬件资源不一,可配置的Bootloader也不一样,

如EM3585:


EM357:


另外,使用带secure的bootloader的设备需要烧写key,此key同样用于制作升级文件的EBL文件:


根据不同芯片,不同需求选择不同配置类型的bootloader,使用内部flash做OTA升级的一般用 secure local storange或者 local storange,使用外挂flash则选择secure application或者application。

3.外挂flash修改bootloader驱动方法(EM3585):

a.打开Ember Desktop,修改工程配置,选择Bootloader 类型为secure application或者application(我们以不加密的为例),然后生成IAR工程

b.打开EmberZNet5.6.0.1-GA\tool\bootloader-em3585\app-bootloader目录下的IAR工程app-bootloader.eww

c.修改的flash驱动,驱动程序要根据接口协议(常见的像SPI,I2C)来选择具体的实现方法,总之,我们需要替换IAR工程里面的at45sb021d.c文件的接口:

   halEepromInit,
    halEepromRead,
    halEepromWrite,
    halEepromShutdown,
    (const void *(*)(void))halEepromInfo,
    halEepromErase,
    halEepromBusy,

把他们修改成自己所使用的flash型号的对应的驱动,编译之后产生EmberZNet5.6.0.1-GA\tool\bootloader-em3585\app-bootloader目录下的app-bootloader.s37文件,即我们要的Bootloader程序,此程序需要与应用程序编译产生的.ebl 或者.s37文件一同烧录进EM3585模块




0 0
原创粉丝点击