• 資料介紹
    • “無(wú)線”固件升級(jí)的概念
    • OTA 固件升級(jí)服務(wù)描述
    • OTA 固件升級(jí)事務(wù)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

AN5463應(yīng)用筆記BlueNRG-LP、BlueNRG-LPS(無(wú)線)固件升級(jí)

01/15 11:38
611
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

AN5463應(yīng)用筆記BlueNRG-LP、BlueNRG-LPS(無(wú)線)固件升級(jí)

790.59 KB

本應(yīng)用筆記介紹運(yùn)行于隨 BlueNRG-LP、BlueNRG-LPS 片上系統(tǒng)提供的 Bluetooth?低功耗(LE)棧之上的 BlueNRG-LP、BlueNRG-LPS 無(wú)線(OTA固件升級(jí)程序。

首先介紹與 OTA 固件升級(jí)過(guò)程相關(guān)的一些概念,然后幫助用戶了解運(yùn)行一些 OTA 固件升級(jí)會(huì)話所需的所有步驟。

“無(wú)線”固件升級(jí)的概念

“無(wú)線”(OTA)固件升級(jí)是一種協(xié)議,允許低功耗藍(lán)牙從設(shè)備無(wú)線接收來(lái)自低功耗藍(lán)牙主設(shè)備的固件映像,并將其寫(xiě)入 Flash 存儲(chǔ)器。就低功耗藍(lán)牙技術(shù)而言,OTA 固件升級(jí)框架定義了一種提供其自己的特性,并能與藍(lán)牙 LE 棧上運(yùn)行的任何給定應(yīng)用使用的其他服務(wù)共存的服務(wù)。藍(lán)牙 LE 主設(shè)備是由通過(guò) USB 連接到 PC的 BlueNRG-LP、BlueNRG-LPS 開(kāi)發(fā)套件平臺(tái)構(gòu)成的組合系統(tǒng)。BlueNRG-LP、BlueNRG-LPS 平臺(tái)由BlueNRG GUI 驅(qū)動(dòng)。鑒于這種選擇,可以使用 PC 上的大量資源,尤其是用于生成固件映像的編譯器,以及為了進(jìn)行固件升級(jí)而在無(wú)線部署映像前存儲(chǔ)映像所需的存儲(chǔ)器空間。

OTA 固件升級(jí)服務(wù)描述

OTA 固 件 升 級(jí) 服 務(wù) 通 過(guò) BlueNRG-LP 、 BlueNRG-LPS DK 軟 件 包 中 提 供 的 文 件 OTA_btl.[ch](MiddlewaresSTBLE_ApplicationOTA folder)實(shí)現(xiàn)。

下面是關(guān)于 OTA 固件升級(jí)服務(wù)及其相關(guān)特性的簡(jiǎn)述:

— Btl OTA 服務(wù)(OTA_SRVC_UUID):固件升級(jí)服務(wù)

? aci_gatt_srv_add_service((ble_gatt_srv_def_t *)&ota_service);

— Btl 映像的特性(IMAGE_CHR_UUID):包含一些與空閑內(nèi)存范圍相關(guān)的信息,這是包含 OTA 固件升級(jí)服務(wù)的當(dāng)前應(yīng)用建議的范圍

— Btl 新映像的特性(NEW_IMAGE_CHR_UUID):包含 OTA 固件傳輸期間主設(shè)備想要無(wú)線發(fā)送的映像的基址和大小以及要求從設(shè)備發(fā)送確認(rèn)的通知范圍

— Btl 新映像內(nèi)容的特性(IMAGE_CONTENT_CHR_UUID):它包含主設(shè)備發(fā)送(通過(guò)特性寫(xiě)入指令)的16 字節(jié)固件映像數(shù)據(jù)塊,以及一些控制信息,例如塊序號(hào)(2 字節(jié))和用于完整性檢查的校驗(yàn)和(1 字節(jié))

— Btl 預(yù)期映像序號(hào)特性(IMAGE_SEQ_NUM_CHR_UUID):從設(shè)備通過(guò)該特性通知主設(shè)備其預(yù)期的下

一個(gè)數(shù)據(jù)塊或錯(cuò)誤條件

OTA 固件升級(jí)事務(wù)

本節(jié)將介紹 OTA 固件升級(jí)步驟:

1. 在安裝了運(yùn)行 OTA 固件升級(jí)服務(wù)的主設(shè)備和從設(shè)備后,需執(zhí)行搜索程序以便連接兩個(gè)設(shè)備。通過(guò)收聽(tīng)無(wú)線傳輸范圍內(nèi)的設(shè)備的廣播進(jìn)行搜索(主動(dòng)掃描),并選擇掃描響應(yīng)中包含 OTA FW 升級(jí)服務(wù) UUID(128 位)的設(shè)備。

2. 此外,將從廣播消息中讀取所選設(shè)備的名稱,主設(shè)備將使用該名稱強(qiáng)化從設(shè)備識(shí)別程序。

3. 連接后,主設(shè)備將發(fā)送“ACI_GATT_CLT_DISC_CHAR_BY_UUID”指令,以便讀取所有 OTA 固件升級(jí)特性句柄。

4. 主設(shè)備通過(guò)“ACI_GATT_CLT_READ”指令讀取 Btl 映像特性,以獲悉目標(biāo)從設(shè)備 Flash 存儲(chǔ)器上的空閑空間。

5. 根據(jù)上一步中獲得的信息,主設(shè)備將選擇合適的映像進(jìn)行無(wú)線發(fā)送。候選映像(位于主設(shè)備上某位置的*.bin 文件)必須處于目標(biāo)的空閑 Flash 存儲(chǔ)范圍內(nèi)。

6. 完成選擇后,主設(shè)備發(fā)送“ACI_GATT_CLT_WRITE”指令,以將映像基址、大小和通知范圍寫(xiě)入 Btl新映像特性,并通過(guò)“ACI_GATT_CLT_READ”讀回以進(jìn)行確認(rèn)。

7. 主設(shè)備寫(xiě)入 Btl 預(yù)期映像序號(hào)特性描述符,以啟用映像塊序號(hào)和錯(cuò)誤的從設(shè)備通知。在接收到該指令后,從設(shè)備將發(fā)回通知。

8.映像傳輸開(kāi)始。主設(shè)備將通過(guò)一系列“ACI_GATT_CLT_WRITE_WITHOUT_RESP”指令以 16 字節(jié)數(shù)據(jù)塊發(fā)送映像(每個(gè) 16 字節(jié)數(shù)據(jù)塊一個(gè))。目標(biāo)從設(shè)備每次收到新的 WRITE 指令時(shí),將新數(shù)據(jù)塊寫(xiě)入Btl 新映像內(nèi)容特性。每個(gè)(N*16)字節(jié)數(shù)據(jù)塊附帶 2 字節(jié)序號(hào)和 1 字節(jié)校驗(yàn)和字段,用于在目標(biāo)位置檢查順序和消息完整性。每次(N*16)字節(jié)數(shù)據(jù)塊占滿從設(shè)備的內(nèi)部緩沖區(qū)時(shí),數(shù)據(jù)塊被下載到 Flash 存儲(chǔ)器。一旦從設(shè)備完成 16 字節(jié)數(shù)據(jù)塊內(nèi)部緩沖區(qū)的管理,它將向主設(shè)備發(fā)送通知消息,其中包含下一個(gè)預(yù)期數(shù)據(jù)塊的數(shù)據(jù)塊號(hào)。它可能通過(guò)最新數(shù)據(jù)塊通知 Flash 寫(xiě)入錯(cuò)誤和 Flash 驗(yàn)證錯(cuò)誤,假如問(wèn)題出在目標(biāo)設(shè)備 Flash 上,此時(shí)自舉會(huì)話應(yīng)停止。

資料預(yù)覽

相關(guān)推薦