天天看點

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

1. 概述

本文介紹如何在CH2601開發闆上進行FOTA更新。 FOTA 是 Firmware Over the Air 的縮寫,即固件空中更新,最常見的就是手機固件的更新。固件的定義範圍比較模糊,windows作業系統更新、手機更新、嵌入式系統、單片機控制程式等都的遠端更新可以籠統地稱為FOTA。用這種方式,裝置廠商可以更加快速地進行系統軟體的疊代;能夠更加快速地向市場推出具有新功能的裝置并以此提高使用者對其裝置的滿意度。 下面我們以

ch2601_fota_demo

為例來介紹如何進行FOTA更新。

2. 環境準備

  • 硬體:RVB2601開發闆一塊、USB線2根
  • 軟體: CDK 最新版本(Windows)
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

3. 示例擷取

打開CDK軟體。

點選紅色處按鈕,點選

建立工程

按鈕。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

在搜尋框輸入

fota

,點選右邊的搜尋按鈕,

ch2601_fota_demo

就顯示出來了。 點選

建立工程

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

在彈出框輸入工程名字,版本号預設v7.4.3即可。點選

下載下傳方案

按鈕,等待下載下傳完成。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4. 操作流程

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

我們分成3個大的步驟進行介紹:

  1. 不同版本固件的生成
  2. OCC固件添加,更新政策配置
  3. 裝置端配置參數,下載下傳固件并進行系統的更新

請注意:以下出現的方案目錄指的是

solutions/ch2601_fota_demo

這個檔案夾下。

4.1 編譯生成不同版本固件

4.1.1 基礎鏡像包1.0.0生成

示例擷取

那個章節我們已經把

ch2601_fota_demo

工程拉取下來了,接下來我們要編譯這個工程并生成相應的鏡像包。 如下圖所示,點選紅色方框處按鈕進行編譯。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

編譯結束之後,會在方案目錄的

generated

下生成

images.zip

包。如下所示,打開方案目錄。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

将這個

images.zip

拷貝到上級目錄(方案目錄)并重命名為

images_1.0.0.zip

4.1.2 鏡像包1.1.1版本生成

可以在方案的

app/src/app_main.c

檔案中加個列印儲存檔案,并重新編譯。将生成的

generated/images.zip

拷貝到方案目錄,并重命名為

images_1.1.1.zip

,作為高版本。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4.2 OCC版本管理

4.2.1 建立産品,擷取許可證

  1. 注冊登陸 平頭哥晶片開發社群 後,進入到

    控制台

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
  1. 在平頭哥晶片開發社群上建立産品,在

    控制台

    ->

    FOTA服務

    添加産品

    ,如下圖所示,點選

    送出

    RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
  1. 點選

    編輯

    按鈕
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
  1. 選擇

    許可證

    , 點選

    生成

    按鈕,稍等重新整理下即可
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

如下圖所示,表示開發許可證已經生成完畢

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4.2.2 上傳鏡像包至OCC伺服器,并釋出

  1. 我的産品

    編輯

    FOTA

    頁面選擇

    添加強件

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

送出

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

點選紅色方框

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

釋出

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

傳回之後,

釋出狀态

就會變成

已釋出

,如果狀态未變,可以再次重新整理下。

  1. 釋出1.1.1版本
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

送出完畢之後,選擇1.1.1版本那一行進行釋出。釋出成功之後,伺服器就會生成FOTA固件了。

4.2.3 雲端選擇更新政策

如右邊紅色框框,添加标簽:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

下圖中的CID的值後面需要用到,請先記錄下來

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

選擇更新政策:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

選擇剛才寫的标簽,并送出:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

到此為止,雲端的配置基本結束了。

4.3 裝置檢測更新

4.3.1 将釋出的鏡像包下載下傳到本地

點選紅色框圖位置下載下傳鏡像包到本地

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4.3.2 取出hex檔案放到指定位置用CDK進行燒錄

将下載下傳過來的鏡像包解壓,并取出

total_image.hex

檔案,放到方案目錄的

generated

目錄下

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

切換到CDK工程,點選紅色方框處按鈕開始燒錄。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

燒錄過程中。。。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

燒錄完畢

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

按複位鍵啟動的列印如下,可以看到目前的版本為

1.0.0

的版本

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4.3.3 裝置端設定deivce_id/model,接收固件

我們需要設定一些參數才能聯網并且接受新的固件。

4.3.3.1 WiFi設定

通過序列槽終端輸入:

kv set wifi_ssid <your_wifi_ssid>

kv set wifi_psk <your_wifi_password>

  • your_wifi_ssid:你的wifi名字
  • your_wifi_password:你的wifi密碼

4.3.3.2 裝置資訊設定

kv set device_id <key>

kv set model ch2601

  • key:即4.7章節圖檔中提到的CID的值
  • model:即4.1章節中的産品型号值

設定完畢之後按開發闆上的複位鍵重新開機。

4.3.4 裝置端完成固件接收,進入系統更新

請確定裝置聯網成功。 裝置檢測到新版本的列印:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

開始下載下傳資料:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

下載下傳檢驗完畢,裝置自動重新開機進入系統更新:

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

4.3.5 系統更新完畢,裝置重新開機,正常運作

系統更新完畢之後,裝置自動重新開機,可以看到剛才加的列印資訊出來了,版本号也更新了。

RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語

至此,說明整個FOTA更新已經成功完成了。

5. 注意事項

5.1 分區配置

使用更新功能需要指定更新包的存儲區域。 配置檔案:

configs/config.yaml

1. mtb_version: 4
2. chip: ch2601
3. 
4. diff:
5. fota_version: 0
6. ram_buf: 50              #DEC     KB   ( max ram need)
7. flash_buf: 16        #DEC     KB   ( buffer size)
8. flash_sector: 4096   #DEC     byte ( flash sector)
9. diff_mode: 010       #BIN
10. double_control: 1
11. flash:
12. base_address: 0x18000000  # 存儲基位址,比如FLASH的基位址
13. sector: 4096              # Bytes
14. size: 524288              #512kb $(sector count) * sector
15. 
16. partitions:
17. - { name: boot,   address: 0x18000000, size: 0x10000 }
18. - { name: imtb,   address: 0x18010000, size: 0x02000 }
19. - { name: bmtb,   address: 0x18012000, size: 0x01000 }
20. - { name: kv,     address: 0x18013000, size: 0x04000 }
21. - { name: prim,   address: 0x18017000, size: 0x30000, verify: true, update: FULL}
22. - { name: misc,   address: 0x18047000, size: 0x39000 }
yaml      

對需要更新的分區加上update字段。

  • 分區說明
分區 說明
boot bootloader鏡像
bmtb 分區表
imtb 分區表,包含所有分區位置及安全資訊
prim 應用鏡像
misc 更新備份區,下載下傳下來的鏡像先存儲在此分區
kv KV資料區

5.2 代碼

有關FOTA更新相關的代碼主要是在

app/src/cop_fota.c

檔案中。

6. 結束語

以上即為整個FOTA更新示例詳細的操作說明。主要是在OCC晶片開放社群和CDK中進行操作。實際應用過程中需要做好版本的管理。 更多FOTA服務的介紹,可以參考

FOTA服務

繼續閱讀