Zephyr應用筆記:mcuboot引導程序簡單介紹

本文對mcuboot(version 1.1.0)做一個簡單介紹供參考,Github地址:https://github.com/runtimeco/mcuboot

以下內容都是針對(version 1.1.0)做介紹:


目前支持三種操作系統:

Zephyr

Mynewt

RIOT


鏡像跳轉方式支持兩種:

1、兩塊鏡像區域image_0和image_1;

2、三塊鏡像區域image_0、image_1和scratch;


兩種方法都是app永遠在image_0地址運行


第1種情況的基本思路:

運行在image_0,如果需要升級app,則將app存儲於image_1,重啓裝置,mcuboot檢測到image_1有鏡像,step1:擦除image_0,step2:將image_1的內容搬運到image_0,step3:跳轉到image_0地址啓動程序;

第2種情況的基本思路:

運行在image_0,如果需要升級app,則將app存儲與image_1,重啓裝置,mcuboot檢測到image_1有鏡像,step1:image_0內容搬運到scratch中,step2:擦除image_0,step3:將image_1的內容搬運到image_0,step4:跳轉到image_0地址啓動程序;


對比兩種方式各有優缺點:

第一種方式:

優點:鏡像只有兩個區域,對FLASH要求較低,鏡像程序可以大一點;

缺點:如果升級一個錯誤的鏡像則程序將無法運行,即裝置會變磚,只能通過例如ST-LINK等工具重新刷固件;

第二種方式:

優點:即使升級的鏡像有問題,那麼還可以恢復到原來的固件,穩定性更強;

缺點:鏡像有三個區域,對FLASH要求較高,鏡像程序小的可以用這種方式;


2018年3月8日


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章