启明云端分享| sigmastar SSD201/ SSD202D _OTA升级使用参考
提示:作為Espressif(樂鑫科技)大中華區合作伙伴及sigmastar(廈門星宸)VAD合作伙伴,我們不僅用心整理了你在開發過程中可能會遇到的問題以及快速上手的簡明教程供開發小伙伴參考。同時也用心整理了樂鑫及星宸科技的新產品、新方案的主要特點及應用!希望你能第一時間了解并快速用上好的方案和產品!
本文介紹的是Sigmastar的平臺提供的升級方案,該過程主要包含OTA升級中打包、解包、升級的流程。支持分區打包、分區升級。
升級包后臺服務器維護、終端下載及管理,請結合第三方服務。
2.1. 打包工具介紹
打包工具在Linux服務器上執行,運行環境ubuntu 16.04。只會根據當前要升級的文件生成所需的文件頭。
打包工具的bin所在目錄:
project/image/makefiletools/bin/otapackotapack工具命令參數介紹:
-c --create: 創建一個空的升級包文件頭,此命令創建文件頭的同時可以用-b或-e添加開始或結束升級的腳本。
-b --begin-script: 在服務器上指定一個shell腳本文件,并把它打包進升級包中用于板子在升級前執行的腳本。
-e --end-scrip: 在服務器上指定一個shell腳本文件,并把它打包進升級包中用于板子在升級結束后執行的腳本。
-a --append: 在已經創建的升級包中追加新的頭信息,追加新的信息中必須告知升級的相關訊息,具體方法請參考范例,或者在剩余的參數介紹中根據需要配置。
-s --src-file: 指定服務器上需要更新的源文件路徑。
-d --dst-file: 指定需要更新的目標文件或者分區節點在目標板子中的路徑。
-t --dst-file-size: 需要更新的目標文件或者分區的大小,單位為byte,可以用16/10進制表示。
-m --file-mode: 指定更新的文件權限,參考Linux的mode_t。
–block-update: 設定服務器中指定的源文件為裸分區數據。
–ubi-update: 設定服務器中指定的源文件為UBI文件系統的volume。
–file-update: 設定服務器中指定的源文件為單個文件升級。
–file-add: 設定服務器中指定的源文件為目標板子中新增加的文件。
–file-delete: 僅更新打包的數據頭,刪除板子上指定的目標文件。
–dir-update: 掃描新舊兩個文件夾中的內容,并比較差異、增加、減少的部分,然后進行批量打包。
–help: 打印幫助信息。
–debug: 打開調試信息。
otaunpack工具命令參數介紹:
? -x: 解包并升級壓縮的文件
? -r: 解包并升級非壓縮的文件
2.2. 一般的打包流程舉例
1、創建一個空的header
2、若有需要可以用-b/-e指令添加腳本
otapack -c SStarOta.bin -b start.sh -e end.sh3、根據需要打包的文件更新header數據
otapack -a SStarOta.bin -s ./images/kernel -d /dev/mtdblock8 -t 0x500000 --block-update4、循環執行3步驟,所有的文件進行打包
5、壓縮升級包
gzip SStarOta.bin2.3. 在ALKAID中打包介紹
OTA打包流程目前已經整合到了Makefile中。
當程序編譯和打包完成后,在project下輸入指令:
make image-ota會出現如下交互界面,指定在板子上執行的腳本路徑,可以選擇添加或者不添加:
Start scripts:End scripts:在打包分區時,列出了打包的分區數據:
Make ipl ?(yes/no)做出相關的選擇后,會在project/image/output/images/下產生SStarOta.bin.gz
在配置partition的config文件中會配置分區進行打包。
舉例:
文件 spinand.ubifs.p2.partition.config中有變量:OTA_IMAGE_LIST
在此變量后面追加需要打包的分區名稱,并在分區的配置中添加字段xxx$(OTABLK),配置該分區需要升級的目標節點路徑。
只有在OTA_IMAGE_LIST添加了分區名,才會在make image-ota的時候會詢問該分區是否要進行ota升級。
分區打包腳本的所有邏輯在image/ota.mk中實現,有興趣的可以自行研究 。
2.4. 不帶文件系統的RAW DATA打包
分區升級步驟大多相似,把需要升級的文件填到對應的mtdblock中,打包的流程也一樣。不同的是在RAW DATA分區打包要自行實現升級包頭的創建和數據填充,這里以spinand的IPL分區打包舉例:
2.5. ubifs/ squashfs/ jffs2打包
如果新創建了這些分區,并且把它們加到OTA_IMAGE_LIST中,則無需再ota.mk中添加特殊處理,這一類的分區升級文件會統一處理。
UBIFS的分區升級方式與其它兩種格式稍有差異,因此在打包的時候UBIFS打包的時候請使用–ubi-update
2.6. 個別文件打包
個別文件打包的選項是–file-update,目前ALKAID中還沒有專門針對文件更新的打包,因此使用者需要自己手動添加。
3.1. 升級流程
3.2. 分區升級前注意
在分區升級之前請確保分區umount成功。可以在start scripts腳本中作相關的umount動作。若需更新文件,請確保文件在可讀寫的文件系統中,并且有寫權限。
otaupack工具請找FAE獲取。
3.3. 壓縮的升級包更新
otaupack -x SStarOta.bin.gz3.4. 非壓縮的升級包更新
otaupack -r SStarOta.bin3.5. 升級UI顯示
升級時可指定一張全屏的背景圖片貼到framebuffer上,圖片支持jpg和png格式。同時在framebuffer中繪制進度條,otaunpack在0.2版本之后支持進度條和文字UI旋轉,設定-s參數0/?/3支持None/90°/180°/270°旋轉。
3.6. 升級狀態獲取
在END script中利用內部變量OTA_STATUS可以獲取升級的狀態。
若OTA_STATUS為0則升級成功,否則為-1。
3.7. SPI-NAND壞塊處理
使用–block-update命令打包升級的程序中,如果設定的是mtdblock塊設備節點,這種操作不會處理壞塊,推薦nor flash升級可以使用此節點,若spinand需要升級同時處理壞塊,請用–block-update設定為mtd的字符設備節點,otapack和otaunpack應用程序在0.2版本后可以支援使用mtd-utils在升級的時候處理壞塊,請在busybox中打開nand_write和flash_eraseall。
總結
以上是生活随笔為你收集整理的启明云端分享| sigmastar SSD201/ SSD202D _OTA升级使用参考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启明云端分享| sigmastar ss
- 下一篇: 启明云端分享| ESP32-S3点480