1. 程式人生 > >藍芽DA14580開發:韌體格式、二次引導和燒寫

藍芽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”。因為韌體已經有頭部資訊,不能再增加引導的頭部資訊。

關注微信公眾號:嵌入式企鵝圈,獲得上百篇物聯網原創技術分享!


相關推薦

DA14580開發體格引導

本文由嵌入式企鵝圈原創團隊成員黃鑫原創。相比NRF52832和CC254X,藍芽單晶片DA14580在OTA和二次引導上要複雜一些,不僅體現在memory map、引導過程等流程上,而且在韌體格式、生

Android BLE 快速開發框架。

FastBle 專案地址:Jasonchenlijian/FastBle  簡介:Android BLE 藍芽快速開發框架。 更多:作者   提 Bug    標籤: 藍芽- Thanks to th

STM32 智慧小車 控制-開發環境搭建

keil MDK5搭建STM32開發環境 keil5下載stm32程式方法 keil uVersion4的安裝解除安裝+破解 先安裝c51的程式, 下載適合自己版本的下載MDK-ARM並安裝; 可自行到官網,下載安裝;(注意需要註冊)

學習(五)-- 低功耗(BLE)主機屬性服務

 在BLE中服務、屬性、特性、行為很難理解。講得極其抽象,讓我疑惑的是它是一種邏輯上面的概念還是資料結構上的概念? 服務是一種或多種特性的組合,特性則由一種或多種屬性組成 BLE的對於服務上的概念上居然是來源於“面向物件程式設計(OOP)”: 類 物件 屬

關於青風NRD52832開發經驗(一)

1.首先是按照環境的搭建,藍芽協議和外設功能用到的是keil5和nRFgo Studio(賊不好用,用來進行協議的下載)開發工具,52832用的協議是S132的藍芽協議,關於藍芽mesh的開發在nordic官網上面找到一個關於藍芽點燈的程式,開啟這個程式用的開發環境是(Emb

Android BLE開發詳解

轉載請註明出處。    https://blog.csdn.net/kong_gu_you_lan/article/details/81009800 1.介紹 藍芽是一種短距離的無線通訊技術,可以實現固定裝置、移動裝置之間的資料交換。一般將藍芽分為兩大類,藍芽3.0規範之前的

微信硬體平臺裝置開發(一)

微信硬體平臺藍芽裝置開發——接入 需求:使用者關注微信公眾號(服務號)後可控制特定藍芽硬體裝置。 實現方案:通過提供的硬體JSAPI來實現藍芽裝置與微信之間的互聯和通訊,框架如下圖,核心為:開發H5頁面,鏈入公眾號選單內。 1、申請公眾號  開發測試號已經可以使用J

初學BLE底層開發的常識

藍芽微控制器 CC254x :完全支援BLE,採用經典51核心(C8051)。 EW 是 IAR Embedded Workbench 的簡稱,是C/C++的編譯環境和偵錯程式,應用於嵌入式系統的開發工具。 IAR 有各種平臺,我們開發cc2540用IAR for  80

找了很久的低功耗程式開發,終於在國外找到了部分資料

#include <stdio.h> #include <windows.h> #include <setupapi.h> #include <devguid.h> #include <regstr.h> #inc

Android 通訊開發(一) 搜尋裝置

藍芽通訊是我們日常生活中比較方便的一種通訊技術,Android從2.0版本的SDK就開始支援藍芽。對開發人員來說,應用程式中藍芽還是一種用來建立點對點連線通訊的簡單而高效的方式。 藍芽通訊功能的實現的基本流程大致分為藍芽裝置搜尋、藍芽裝置連線和藍芽通訊

三步走--低功耗BLE開發實戰

BLE是Android4.3以上加入的新功能,他可以很大程度上節省了裝置的功耗,他會在啟用的時候進入一個快速的廣播段,這時候周圍的裝置可以搜尋到BLE裝置,當匹配成功的時候就會建立一個長連線,如果沒有匹配成功,他就會在一段時間後自動進入相對慢速的廣播段,給周圍裝置傳送的廣播

裝置開發的三種方式

 藍芽裝置開發一般包含藍芽晶片及主機的開發。主機部分根據應用情況可以是PC,微控制器,ARM等。藍芽通訊協議是一組協議的集合,從最底層的硬體驅動,到上層的通訊協議,都由明確的規定。藍芽裝置必須實現這些協議組,才能與其他標準藍芽裝置進行無縫通訊。 對於中上層的協議,既可以

android聊天開發(5)簡單聊天

執行截圖:我的裝置設定的使用者名稱是:是。可以改的          mainActivity: package com.lmj.bluetoothchat; import java.util.ArrayList; import an

android聊天開發(4)多工執行

介面:和 執行結果:                 mainActivity:啟動app,就啟動TaskService服務,,點選servertask1,servertask2,將任務1,和任務2提交給Task

android聊天開發(3)四大元件案例

介面如圖:依次點選按鈕,在debug模式下啟動,通過Android studio的console後臺,可以看到system列印的 資訊   先點start new activity-->startService-->sendBroadCast-->se

android聊天開發(2)圖文混排+Notification訊息通知

使用listView,繼承BaseAdapter,實現聊天介面:,執行圖: layout_list_item.xml單個item條目的佈局,即圖片,聊天內容,時間的佈局: <?xml version="1.0" encoding="utf-8"?> <Relat

android聊天開發(1)輸入對話+隱藏對話+圖文混排

介面效果: 注意: 1.文字框預設文字是“tel:10086”,當你點選文字時,文字會祕文顯示(即。。。。。這樣),再次點選,會顯示原文,實際就呼叫了一個Text物件的 setTransformationMethod(PasswordTransformationMethod.get

微信硬體jsapi開發之onWXDeviceStateChange介面實現(12)--監聽狀態變化介面

我們在開發微信硬體藍芽裝置的時候,對於監聽藍芽裝置連線狀態是有必要的,因為我們無法預測到使用者在用藍芽裝置的時候是處於怎麼樣的環境狀態下,必須時時刻刻監聽手機微信和藍芽裝置之間的連線狀態,以便我們在資料互動的時候提醒使用者注意藍芽連線,否則資料互動會因為藍芽斷

【筆記】BLE開發記錄

一直沒有養成隨時記錄的習慣,這裡記錄一些藍芽BLE開發使用中遇到的問題。 BluetoothGatt status 133 這個錯誤狀態發生在連線時,每次連線數超上限的時候就會出現,一般在使用中用bluetoothGatt.close()釋放當前Gatt連線資源。 開啟通知

微信硬體平臺裝置開發()

微信硬體平臺藍芽裝置開發——控制 JSAPI:微信JSAPI是網頁javascript的介面,通過JSAPI可以對支援該介面的藍芽裝置進行操作。例如掃描裝置,連線裝置,收發資料,繫結裝置等。其與J