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

摘要:
相比NRF52832和CC254X,蓝牙单芯片DA14580在OTA和二次引导上要复杂一些,不仅体如今memorymap、引导过程等流程上,并且在固件格式、生成和工具链的操作上也稍显繁琐。之前分享的“固件空中升级与固件二次引导的原理和设计”说明了DA14580OTA的原理和过程。

本文由嵌入式企鹅圈原创团队成员黄鑫原创。

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

一、DA14580固件分布

这里主要说明的是,sdk编译链接产生的固件都是hex格式的。能够直接通过JLINK下载到RAM执行,可是通过官方的smartsnippets工具下载到flash时是须要添加固件头部信息。否则会引导失败。

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

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

二、固件头部格式

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

Bootloader头部以0x7050开头。头部内容包含Bootloader的长度;

代表应用的image的头部以0x7051开头。头部内容包含image的长度和固件版本号。

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

也就是说。假设终于产品没有OTA功能,那就仅仅须要一个应用的固件。烧写到bootloader所在的地方就可以,当然头部也是不可缺少的。

三、工具链

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

1.Smartsnippets烧写bootloader

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

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

2.Smartsnippets烧写product header

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

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

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

制作image:mkimage single app.binble_580_sw_version.h app.img

Smartsnippets烧写image,选择相应的偏移,烧写时选择“NO”。

由于固件已经有头部信息,不能再添加引导的头部信息。


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

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


免责声明:文章转载自《蓝牙DA14580开发:固件格式、二次引导和烧写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Delphi中使用调色板创建渐变色位图pandas的基础使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

bootloader总体操作设计

bootloarder设计蓝图(不想做设计师的程序员不是好程序员):bootloarder的作用:将linux内核启动起来设计方法:模仿u-bootu-boot:支持多种嵌入式cpu的bootloarder程序,自主模式,自动引导内核启动。u-boot还有一种开发模式建立U-Boot工程:----------------------------------...

RK61 RGB 蓝牙双模键盘使用说明【转载】

型号 RK61 RGB 蓝牙尺寸 290x100x39mm轴体 机械轴 青/红/茶/黑规格 61全键无冲背光 RGB键帽 双色注塑透光 电压 5v ≤200mA 连接 USB抗干扰线缆 使用说明 ●功能键一览Fn+Q/W/E 可存储/切换三台蓝牙设备 Fn+P 进入蓝牙配对模式 Fn+]} 增加背光亮度Fn+左Ctrl 按键主/副功能切换 Fn+Tab...

UBoot代码分析与移植

一.摘要 这篇文章主要对BootLoader(UBoot)的源码进行了分析,并对UBoot的移植略作提及。 BootLoader的总目标是正确调用内核的执行,由于大部分的BoorLoader都依赖于CPU的体系结构。因此大部分的BootLoader都分为两个步骤启动。依赖于CPU体系结构(如设备初始化等)的代码都放在stage1。而stage2一般使用C语...

用树莓派玩转蓝牙

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。 蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信。树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器...

尝鲜党:Nexus5、6刷安卓M教程

说明:   进入recovery的命令:adb reboot recovery        进入bootloader的命令:adb reboot bootloader 概述 F:Nexus5AndroidMhammerhead-MPZ44Q>fastboot flash bootloader bootloader bootlo ader-hamm...

Linux系统移植(1)

一、u-boot工程   1.BootLoader介绍     BootLoader是操作系统运行之前要执行的一段程序,它复制初始化硬件设备、建立内存空间映射,为操作系统的运行做好准备,是一个专门加载操作系统的程序。     对于嵌入式系统而言,没有通用的硬件平台,因此也没有通用的BootLoader,不同的平台、CPUyi架构都有不同的BootLoade...