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日


猜你喜欢

转载自blog.csdn.net/csshuke/article/details/83857673