zoukankan      html  css  js  c++  java
  • 蓝牙DA14580开发:固件格式、二次引导和烧写

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

    相比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”。

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


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


  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8727743.html
Copyright © 2011-2022 走看看