蓝牙DA14580开发:固件格式、二次引导和烧写

  嵌入式企鹅圈原创团队成员黄鑫提供。微信

  相比NRF52832和CC254X,蓝牙单芯片DA14580在OTA和二次引导上要复杂一些,不只体如今memory map、引导过程等流程上,并且在固件格式、生成和工具链的操做上也稍显繁琐。以前分享的“固件空中升级(OTA)与固件二次引导的原理和设计”说明了DA14580 OTA的原理和过程,本节咱们来看看升级过程当中涉及的固件相关的知识。app

1、DA14580固件分布工具

       这里主要说明的是,sdk编译连接产生的固件都是hex格式的,可以直接经过JLINK下载到RAM执行,可是经过官方的smartsnippets工具下载到flash时是须要增长固件头部信息,不然会引导失败。设计

       如下是针对flash存储的固件分布,能够看出包括:bootloader、image一、image2和OTA固件分布信息product header。而bootloader、image一、image2也分别包括一个头部和相应的固件程序。3d

 

2、固件头部格式blog

       DA14580内置ROM启动,其只会引导并运行位于存储起始区域(0地址)的bootloader程序。ip

       Bootloader头部以0x7050开头,头部内容包括Bootloader的长度;flash

       表明应用的image的头部以0x7051开头,头部内容包括image的长度和固件版本;产品

       表明OTA固件分布信息product header以0x7052开头,头部内容包括image1的文件偏移和image2的文件偏移以及产品版本信息。io

       也就是说,若是最终产品没有OTA功能,那就只须要一个应用的固件,烧写到bootloader所在的地方便可,固然头部也是必不可少的。

3、工具链

       官方的smartsnippets工具在烧写固件时只会自动添加0x7050开头的头部,也能够在该工具上构建product header进行烧写。但对于表明应用的image是须要专门的工具链生成的。

1. Smartsnippets烧写bootloader

选择HEX格式的bootloader,烧写offset偏移是0,擦除erase接着烧写burn,选择“YES”,烧写成功后能够看出flash的固件增长了一个0x7050开始的头部。

 

2. Smartsnippets烧写product header

 

3. 官方提供的mkimage工具生成应用image

先生成bin:hex2bin -e bin app.hex

制做image:mkimage single app.bin ble_580_sw_version.h app.img

Smartsnippets烧写image,选择对应的偏移,烧写时选择“NO”。由于固件已经有头部信息,不能再增长引导的头部信息。

      关注微信公众号:嵌入式企鹅圈,得到上百篇物联网技术原创。

相关文章
相关标签/搜索