1. 程式人生 > >Zephyr應用筆記:mcuboot載入程式簡單介紹

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日


本文對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日