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

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


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


  • 相关阅读:
    一篇图看清Java中的各种Queue
    使用尾递归计算阶乘
    使用 Sonar 检测代码质量
    jsessionid 导致重定向404的问题
    Java8之——简洁优雅的Lambda表达式
    支付宝手机网站支付开发指引
    Intellij Idea 编辑器使用之 安装、破解 版本15.0.1
    虚拟机启动linux系统报错,此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
    META-INF文件夹是干啥的,META-INF文件夹的作用, META-INF文件夹能删吗
    一道Integer面试题引发的对Integer的探究
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8727743.html
Copyright © 2011-2022 走看看