蓝牙DA14580开发:固件格式、二次引导和烧写
来源:互联网 发布:淘宝店一天能挣多少 编辑:程序博客网 时间:2024/05/29 13:46
本文由嵌入式企鹅圈原创团队成员黄鑫原创。
相比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内置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开始的头部。
2. Smartsnippets烧写product header
3. 官方提供的mkimage工具生成应用image
先生成bin:hex2bin -e bin app.hex
制作image:mkimage single app.binble_580_sw_version.h app.img
Smartsnippets烧写image,选择对应的偏移,烧写时选择“NO”。因为固件已经有头部信息,不能再增加引导的头部信息。
关注微信公众号:嵌入式企鹅圈,获得上百篇物联网原创技术分享!
- 蓝牙DA14580开发:固件格式、二次引导和烧写
- 固件空中升级(OTA)与固件二次引导的原理和设计
- 全球最低功耗蓝牙单芯片(DA14580)系统架构和应用开发框架分析
- 全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗
- DA14580 OTP烧录
- USRP固件和FPGA程序烧写
- 烧写Openwrt固件
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -RW内核和消息处理机制
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程
- Android蓝牙固件升级
- 蓝牙ble-DA14580初级入门教程2_DA14580硬件基础教程
- OBEX和蓝牙开发
- 基于MT7688模块的开发笔记8——TFTP方式烧写Uboot固件
- openwrt固件,串口烧写flash
- iOS开发蓝牙固件升级使用iOSDFULibrary程序崩溃的解决办法
- 微信硬件开发系列教程07-蓝牙nrf51822固件编译(airkiss/airsync)
- DA14580学习流程和资料分享
- CSR蓝牙遥控器OTA固件升级
- 最小生成树
- 选择排序法&冒泡排序法
- Spring AOP
- swiper有时候不能自动滚动的有关问题
- 关于EditText的一些用法
- 蓝牙DA14580开发:固件格式、二次引导和烧写
- adb文件管理命令操作实例讲解
- lua_table结构高级运用--多维数组及pairs函数
- easyui data-options属性
- 回炉重造,第一话:PHP语法与数据类型
- 九度OJ-1087-约数的个数
- unity手游优化经验(记录)
- NodeJs安装与配置淘宝镜像
- 面向对象-六大原则