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

3. 示例擷取
打開CDK軟體。
點選紅色處按鈕,點選
建立工程
按鈕。
在搜尋框輸入
fota
,點選右邊的搜尋按鈕,
ch2601_fota_demo
就顯示出來了。 點選
建立工程
。
在彈出框輸入工程名字,版本号預設v7.4.3即可。點選
下載下傳方案
按鈕,等待下載下傳完成。
4. 操作流程
我們分成3個大的步驟進行介紹:
- 不同版本固件的生成
- OCC固件添加,更新政策配置
- 裝置端配置參數,下載下傳固件并進行系統的更新
請注意:以下出現的方案目錄指的是
solutions/ch2601_fota_demo
這個檔案夾下。
4.1 編譯生成不同版本固件
4.1.1 基礎鏡像包1.0.0生成
在
示例擷取
那個章節我們已經把
ch2601_fota_demo
工程拉取下來了,接下來我們要編譯這個工程并生成相應的鏡像包。 如下圖所示,點選紅色方框處按鈕進行編譯。
編譯結束之後,會在方案目錄的
generated
下生成
images.zip
包。如下所示,打開方案目錄。
将這個
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
,作為高版本。
4.2 OCC版本管理
4.2.1 建立産品,擷取許可證
- 注冊登陸 平頭哥晶片開發社群 後,進入到
中控制台
- 在平頭哥晶片開發社群上建立産品,在
->控制台
FOTA服務
,如下圖所示,點選添加産品
送出
RVB2601應用開發實戰系列四:FOTA鏡像更新1. 概述2. 環境準備3. 示例擷取4. 操作流程5. 注意事項6. 結束語
- 點選
按鈕編輯
- 選擇
, 點選許可證
按鈕,稍等重新整理下即可生成
如下圖所示,表示開發許可證已經生成完畢
4.2.2 上傳鏡像包至OCC伺服器,并釋出
-
我的産品
編輯
頁面選擇FOTA
添加強件
送出
點選紅色方框
釋出
傳回之後,
釋出狀态
就會變成
已釋出
,如果狀态未變,可以再次重新整理下。
- 釋出1.1.1版本
送出完畢之後,選擇1.1.1版本那一行進行釋出。釋出成功之後,伺服器就會生成FOTA固件了。
4.2.3 雲端選擇更新政策
如右邊紅色框框,添加标簽:
下圖中的CID的值後面需要用到,請先記錄下來
選擇更新政策:
選擇剛才寫的标簽,并送出:
到此為止,雲端的配置基本結束了。
4.3 裝置檢測更新
4.3.1 将釋出的鏡像包下載下傳到本地
點選紅色框圖位置下載下傳鏡像包到本地
4.3.2 取出hex檔案放到指定位置用CDK進行燒錄
将下載下傳過來的鏡像包解壓,并取出
total_image.hex
檔案,放到方案目錄的
generated
目錄下
切換到CDK工程,點選紅色方框處按鈕開始燒錄。
燒錄過程中。。。
燒錄完畢
按複位鍵啟動的列印如下,可以看到目前的版本為
1.0.0
的版本
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 裝置端完成固件接收,進入系統更新
請確定裝置聯網成功。 裝置檢測到新版本的列印:
開始下載下傳資料:
下載下傳檢驗完畢,裝置自動重新開機進入系統更新:
4.3.5 系統更新完畢,裝置重新開機,正常運作
系統更新完畢之後,裝置自動重新開機,可以看到剛才加的列印資訊出來了,版本号也更新了。
至此,說明整個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服務