论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
物联网
›
物联网
›
MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能先容
MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能先容
大号在练葵花宝典
论坛元老
|
5 天前
|
显示全部楼层
|
阅读模式
楼主
主题
1666
|
帖子
1666
|
积分
4998
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
概述
1 Image 数据布局
1.1 Image先容
1.2 Swap info
2 BOOT_SWAP_TYPE_PERM 功能
2.1 功能定义
2.2 典范工作流程
3 BOOT_SWAP_TYPE_xx的其他功能
3.1 BOOT_SWAP_TYPE_REVERT
3.2 三中模式的比力
4 使用机制
4.1 实现细节
4.2 使用场景
4.3 开辟者留意事项
概述
BOOT_SWAP_TYPE_PERM 是 MCUboot 引导加载步伐中用于表示
永久性固件交换
的状态标记,是固件升级流程中的关键机制之一。本文主要先容该参数以及与之相关参数的功能和使用方法。
1 Image 数据布局
1.1 Image先容
为了使引导加载步伐能够确定当前状态以及在当前引导操纵期间应该接纳什么操纵,它使用存储在映像闪存地区中的元数据。在交换时,此中一些元数据被临时复制到scratch区或从scratch区复制出来。这个元数据位于Inage地区的末端,称为Image trailer。其具体布局如下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ~
~ Swap status (BOOT_MAX_IMG_SECTORS * min-write-size * 3) ~
~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encryption key 0 (16 octets) [*] |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xff padding as needed |
| (BOOT_MAX_ALIGN minus 16 octets from Encryption key 0) [*] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Encryption key 1 (16 octets) [*] |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xff padding as needed |
| (BOOT_MAX_ALIGN minus 16 octets from Encryption key 1) [*] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Swap size (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xff padding as needed |
| (BOOT_MAX_ALIGN minus 4 octets from Swap size) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Swap info | 0xff padding (BOOT_MAX_ALIGN minus 1 octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Copy done | 0xff padding (BOOT_MAX_ALIGN minus 1 octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Image OK | 0xff padding (BOOT_MAX_ALIGN minus 1 octet) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0xff padding as needed |
| (BOOT_MAX_ALIGN minus 16 octets from MAGIC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAGIC (16 octets) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
复制代码
1.2 Swap info
交换信息:
单个字节,编码以下信息:
交换类型:
0 ~ 3位存储。指示正在举行的交换操纵的类型。当MCUboot恢复被中断的交换时,它使用这个字段来确定要执行的操纵类型。该字段包含下表中下列值之一。
图像号:
存储在4-7位。它在单映像引导时总是0值。在多映像引导的环境下,它指示中断发生时交换了哪个映像。在所有图像交换操纵期间使用雷同的划痕地区。因此使用该字段
NameValueBOOT_SWAP_TYPE_TEST2BOOT_SWAP_TYPE_PERM3BOOT_SWAP_TYPE_REVERT4
2 BOOT_SWAP_TYPE_PERM 功能
2.1 功能定义
BOOT_SWAP_TYPE_PERM 表示固件镜像已经完成永久性交换,具有以下特点:
永久性确认:新固件已通过测试验证并被确认为稳定版本
不可逆操纵:一旦设置为 PERM 状态,通常无法简单回退
启动确定性:体系将始终从新固件启动
2.2 典范工作流程
初始状态:体系从原固件启动
测试阶段:BOOT_SWAP_TYPE_TEST 状态测试新固件
确认升级:测试通过后设置为 BOOT_SWAP_TYPE_PERM
永久生效:后续启动都使用新固件
3 BOOT_SWAP_TYPE_xx的其他功能
3.1 BOOT_SWAP_TYPE_REVERT
BOOT_SWAP_TYPE_REVERT 是 MCUboot 引导加载步伐中的一种交换类型状态,表示体系
需要回退到之前的固件版本
。这是固件升级安全机制的重要构成部分。
1)根本定义
BOOT_SWAP_TYPE_REVERT 表示:
新固件测试失败或不符合运行要求
体系需要自动回退到之前的稳定版本
是一种保护机制,防止设备因不良固件而"变砖"
2) 典范触发场景
测试固件失败
:在 BOOT_SWAP_TYPE_TEST 状态下,新固件运行异常
确认失败
:固件自检或看门狗超时等机制检测到问题
手动请求
:通过特定命令请求回退操纵
安全验证失败
:镜像签名或完整性检查未通过
3) 工作流程
体系从测试固件(TEST状态)启动
检测到需要回退的条件(如启动失败、运行异常等)
将交换类型标记为 REVERT
下次启动时,bootloader 执行回退操纵
恢复使用之前的稳定固件
3.2 三中模式的比力
特性REVERTTESTPERM目的回退到旧固件测试新固件永久使用新固件长期性临时操纵临时状态永久状态触发条件测试失败/体系异常新固件写入测试成功确认后续启动使用原固件大概转为PERM或REVERT始终使用新固件
4 使用机制
4.1 实现细节
在 MCUboot 中,BOOT_SWAP_TYPE_PERM 的实现涉及:
镜像槽管理
:通常用于 A/B 双分区体系
状态标记
:存储在 flash 的固定地区
升级确认
:通过特定命令或条件触发
安全验证
:升级前会验证镜像签名和完整性
4.2 使用场景
正式固件发布后的永久升级
通过测试验证后的固件固化
需要确保设备始终使用新固件的场景
4.3 开辟者留意事项
设置 PERM 状态前必须确保固件稳定
通常需要先颠末 TEST 状态的验证
某些实现大概提供告急恢复机制
需要思量电源故障等异常环境
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
大号在练葵花宝典
论坛元老
这个人很懒什么都没写!
楼主热帖
记一次MySql唯一索引在left join连表查 ...
鸿蒙系统架构分析
C# 使用dataGridView导入导出excel(NPO ...
2021年高教杯数学建模国赛C题的解题过 ...
STM32F1与STM32CubeIDE编程实例-磁簧开 ...
【大话云原生】微服务篇-五星级酒店的 ...
MySQL实战45讲 3
springboot请求参数的方法分享 ...
渗透测试过程参考
GO实现Redis:GO实现内存数据库(3) ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
中间件
Mysql
linux
快速回复
返回顶部
返回列表