1. 程式人生 > 其它 >ZYNQ7045 系統升級實現方法(multiboot)(轉)

ZYNQ7045 系統升級實現方法(multiboot)(轉)

1.實現原理框圖

系統分為6個部分組成:
fsbl:原始fsbl
googen_image:由3塊組成分別為fsbl、bit、u-boot
update_image:由3塊組成分別為fsbl、bit、u-boot
kernel_google:原始kernel
kernel_update:更新kernel
update_flag:更新標識
2.實現原理
flash儲存格式及地址分配如上圖所示
位於0x0位置的fsbl啟動判斷update_flag標識是否有效,如果無效則跳轉到位置為0x100000的googen_image處,依次執行fsbl、載入bit、啟動boot後跳轉到位置為0xf00000的原始kernel中;
如果有效則跳轉到位置為0x700000的update_image處,依次執行fsbl、載入bit、啟動boot後跳轉到位置為0x2200000的更新kernel中
通過該方法可實現不斷電更新bit和kernel功能
3.操作方法
a.板子初始狀態
通過jtag依次將fsbl、googen_image、kernel_google分別下載到地址0x0、0x100000、0xf00000處;
b.啟動系統
通過網路接收更新檔案update_image、kernel_update或者只接收其中一個,原始kernel接收更新檔案後,依次下入地址:0x700000、0x2200000,如果只更新一個,只把檔案寫入相應的地址,寫完之後向0x3c00000寫入更新標識
c.更新檔案
輸入reboot命令,即可實現跳轉,即執行update_image裡面的bit,執行更新的kernel,或者只執行其中一個
4.結論
該方法可實現不斷電更新zynq的bit和系統,目前已在專案中使用
注意
googen_image、update_image:可使用bootgen命令生成
可參考xapp1175
5.額外新增
petalinux下等待系統執行正常後,可通過flashcp命令直接操作flash,實現升級
例如flash分割槽為mtd0、mtd1、mtd2、mtd3,這些定義可在系統中檢視
mtd0:boot
mtd1:env
mtd2:kernel
mtd3:space
假如要升級boot
首先將要升級的BOOT.BIN遠端傳輸到本地,可使用scp命令
到本地後,執行
flashcp -v BOOT.BIN /dev/mtd0即可。
假如要升級kernel
首先將要升級的uimage.bin遠端傳輸到本地,可使用scp命令
到本地後,執行
flashcp -v uimage.bin /dev/mtd2即可。
————————————————
版權宣告:本文為CSDN博主「weixin_43189165」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_43189165/article/details/97761784