TC3xx学习笔记-UCB BMHD使用详解(二)

news2025/7/13 8:44:22

文章目录

    • 前言
      • Confirmation的定义
        • Dual UCB: Confirmation States
        • Dual UCB: Errored State or ECC Error in the UCB Confirmation Codes
        • ECC Error in the UCB Content
        • Dual Password UCB ORIG and COPY Re-programming
      • UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x = 0-3)
        • BMHD Protection Disable
        • UCB_BMHD0_ORIG and UCB_BMHD0_COPY Access Protection
        • UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x = 1-3) Access Protection
    • 总结

前言

之前介绍过BMHD的定义,链接如下:TC3xx学习笔记-UCB BMHD使用详解(一)
本文接着介绍BMHD中的ORIGN和COPY的作用及使用

Confirmation的定义

BMHD中最后一个字段为CONFIRMATION,如下所示
在这里插入图片描述
其定义如下:
在这里插入图片描述

目前配置的为0x43211234,也就是解锁状态

每个UCB都有自己的访问控制。从UNLOCKED到CONFIRMED状态的转换可以在不擦除UCB的情况下完成。为此,UNLOCKED状态下,可以直接写Confirmation,但是必须是0x57B5327。必须确保确认码之后的4个字节(例如在偏移量1F4H处)保持0000 0000H。只有这样, 写之后的ECC才不会报错

Dual UCB: Confirmation States

UCB内容被分割成独立的ORIGIN和COPY UCB(例如UCB_PFLASH_ORIGIN和UCB_PFLASH_COPY)。UCB确认状态是从ORIGIN和COPY UCB确认码派生出来的。

如果以下确认状态条件之一为真,则UCB确认为解锁:

ORIG UCB confirmation code is UNLOCKED.

ORIG UCB confirmation code is ERRORED and the COPY UCB confirmation code is UNLOCKED.

如果以下确认状态条件之一为真,则确认UCB Confirmation:

ORIG UCB confirmation code is CONFIRMED.

ORIG UCB confirmation code is ERRORED and the COPY UCB confirmation code is CONFIRMED.

如果以下确认状态条件之一为真,则UCB确认为错误:

ORIG UCB confirmation code is ERRORED and the COPY UCB confirmation code is ERRORED.

Confirmation状态可以通过HF_CONFIRM0寄存器中的PROIN位读取

COPY存在的意义就是当ORIG无效时可以有一个备份的BLOCK使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Dual UCB: Errored State or ECC Error in the UCB Confirmation Codes

如果ORIGIN确认码是一个error值或包含一个不可纠正的ECC错误,则:

将读取COPY确认码以确定UCB确认状态和安装。

如果COPY确认码是一个error值或包含一个不可纠正的ECC错误,则:

Protection error flag is set (DMU_HF_ERRSR.PROER = 1B ).

当ORIGIN为UNLOCKED状态时,UCB的Confirmation state为Unlocked,不会出现ERRORED

ECC Error in the UCB Content

如果UCB内容包含不可纠正的ECC错误,则:

Protection error flag is set (DMU_HF_ERRSR.PROER = 1B ).

是DMU中的寄存器HF_ERRSR,手册要搜索HF_ERRSR才能搜到这个寄存器在这里插入图片描述

在这里插入图片描述

Dual Password UCB ORIG and COPY Re-programming

存储在一个UCB对的ORIG 和COPY中的数据应该是相同的。如果需要更改数据,则应遵循以下顺序:

确认ORIG和COPY UCB confirmation codes are CONFIRMED:

-配置或保护安装将从ORIG UCB安装。

使用密码解锁保护,这将会同时禁用那个ORIG和COPY的保护

Erase COPY UCB - confirmation code在擦除时的状态会是error

对COPY UCB编程,然后将confirmation code设置为CONFIRMED

Erase ORIG UCB - confirmation code在擦除时的状态会是error

-配置或保护安装将来自COPY UCB

ORIG UCB编程,然后将confirmation code设置为CONFIRMED

-配置或保护安装将来自ORIG UCB

通过命令序列或设备重启重新启用保护。

总是对ORIG进行评估。上述序列确保在重新编程之前在COPY中确认新数据。它避免了ORIG 确认状态为error而COPY确认状态为UNLOCKED的情况

也就是写UCB的时候,如果是带ORIG和COPY的UCB,优先写COPY的UCB,然后写ORIG的UCB

UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x = 0-3)

四个Boot Mode Headers引导模式标头(BMHD)由SSW评估

ORIG的confirm state在DMU_HF_CONFIRM0.PROINBMHDxO

COPY的confirm state在DMU_HF_CONFIRM0.PROINBMHDxC

BMHD安装依赖于UCB_BMHDx_ORIGIN和UCB_BMHDx_COPY的确认状态。如果ORIGIN和COPY的确认码都是error,则SSW不会对UCB进行评估。
在这里插入图片描述
当ORIG的confirmation state为UNREAD时,SSW不会使用ORIG和COPY的UCB值验证

ORIG的confirmation state为UNLOCKED时,SSW使用ORIG的UCB验证,且从ORIG中加载密码,虽然没有CONFIRMED,密码没啥用

当ORIG的confirmation state为CONFRIMED时,SSW使用ORIG的UCB验证,且从ORIG中加载密码

当ORIG的confirmation state为ERRORED时,需要看COPY的状态

COPY状态为UNLOCKED时,SSW使用COPY的UCB验证,且从COPY中加载密码,虽然没有CONFIRMED,密码没啥用

当COPY状态为CONFRIMED时,SSW使用COPY的UCB验证,且从COPY中加载密码

当COPY的confirmation state为ERRORED时,SSW不会评估,且会返回错误,密码也不会加载

在这里插入图片描述

BMHD Protection Disable

如果安装了密码,并应用了与PW匹配的禁用保护之后:

DMU_HF_PROTECT.PRODISBMHD is set to 1B

如果没有安装密码,则不能禁用保护

UCB_BMHD0_ORIG and UCB_BMHD0_COPY Access Protection

当满足以下条件之一时,UCB_BMHD0_ORIGIN和UCB_BMHD0_COPY为写保护状态:

UCB_BMHD0确认状态为CONFIRMED且使用从UCB_BMHD0加载的密码未激活禁用保护

UCB_BMHD0确认状态为ERRORED.

除了密码位置,UCB_BMHD0_ORGIN和UCB_BMHD0_COPY内容可以被每个芯片总线主机读取。只有当UCB_BMHD0的状态是UNLOCKED或禁用保护被激活时,每个片上总线主机才能读取密码
也就是说一旦CONFIRMED之后,密码是不可读的,除非使用密码进行Disable Protection操作

UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x = 1-3) Access Protection

如果满足以下条件之一,则UCB_BMHDx_ORGIN和UCB_BMHDx_COPY (x = 1-3)为写保护状态:

UCB_BMHDx 确认状态为CONFIRMED且使用从UCB_BMHDx加载的密码未激活禁用保护

UCB_BMHDx确认状态为ERRORED.

UCB_BMHDx_ORGIN和UCB_BMHDx_COPY可以被每个片上总线主机读取。

总结

BMHD只有第0个有密码,且Confirmation一旦启用,密码就不可见了,需要解锁后才能读。实际使用过程中,最好把4个ORGIN和COPY都用上,这样可以最大程度减小启动不起来的风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2380039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践

本文将介绍如何使用Python构建一个自动化工具,实现从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。通过该方案,可显著提升数据导出效率,避免手动操作误差,同时支持灵活的格式定制。 需求&#…

实战设计模式之状态模式

概述 作为一种行为设计模式,状态模式允许对象在其内部状态改变时,改变其行为。这种模式通过将状态逻辑从对象中分离出来,并封装到独立的状态类中来实现。每个状态类代表一种特定的状态,拥有自己的一套行为方法。当对象的状态发生变…

什么是着色器 Shader

本人就是图形学结课了,对 OpenGL着色器还有很多疑问嘿嘿 文章目录 为什么要有着色器vshaderfshader 本文围绕 vshader 和 fshader 代码示例讲解。 (着色器代码取自本人简单OpenGL项目 https://github.com/DBWGLX/-OpenGL-3D-Lighting-and-Shadow-Modeli…

Redis的主从架构

主从模式 全量同步 首先主从同步过程第一步 会先比较replication id 判断是否是第一次同步假设为第一次同步 那么就会 启动bgsave异步生成RDB 同时fork子进程记录生成期间的新数据发送RDB给从节点 清空本地数据写入RDB 增量同步 对比ReplicationID不同因此选择增量同步在Rep…

博客系统功能测试

博客系统网址:http://8.137.19.140:9090/blog_list.html 主要测试内容 功能测试、界面测试、性能测试、易用性测试、安全测试、兼容性测试、弱网测试、安装卸载测试、压力测试… 测试方法及目的 利用selenium和python编写测试脚本,对博客系统进行的相关…

【深度学习新浪潮】什么是多模态大模型?

多模态大模型是人工智能领域的前沿技术方向,它融合了多种数据模态(如文本、图像、语音、视频、传感器数据等),并通过大规模参数模型实现跨模态的联合理解与生成。简单来说,这类模型就像人类一样,能同时“看”“听”“读”“说”,并将不同信息关联起来,完成复杂任务。 …

机器学习前言2

1.机器学习 2.机器学习模型 3.模型评价方法 4.如何选择合适的模型 介绍 机器学习(Machine Learning, ML)是人工智能(AI)的核心分支,致力于通过数据和算法让计算机系统自动“学习”并改进性能,而无需显式编…

【成品设计】基于Arduino的自动化农业灌溉系统

《基于STM32的单相瞬时值反馈逆变器》 硬件设计: ESP-C3最小系统板:主控芯片,内部集成wifi。土壤湿度传感器:采集土壤湿度。温度传感器:采集土壤温度。水泵模块:水泵继电器软管。按键3个:参数…

前端页面 JavaScript数据交互

前言:学习JavaScript为前端设置动态效果,实现交互。JavaScript是一种广泛应用于网页开发的脚本语言,它能够使网页变得更加动态和交互性。作为一种客户端脚本语言,JavaScript可以被嵌入到HTML中,并且可以被所有现代的网…

esp32课设记录(三)mqtt通信记录 附mqtt介绍

目录 安装mqttx(云端部署) 安装mosquitto(本地部署) 编程,连接wifi 编程,连接mqtt,实现数据接收 实际效果展示: 附录:mqtt介绍 工作流程简述: 工作流…

string类(详解)

【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 3. string类的模拟实现 4. 扩展阅读 1. 为什么学习string类? 1.1 C语言中的字符串 C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便, C 标准库中提供…

MATLAB | R2025a 更新了哪些有趣的东西?

千呼万唤始出来,MATLAB R2025A 来见面,这次更新比往常晚了两个月,让我们看看更了哪些好玩的新东西叭:首先下载更新启动一气呵成,映入眼帘的是: 1 基本界面 基本界面变得和 MATLAB 网页版一模一样了&#…

前缀和——和为K的子数组

作者感觉本题稍稍有点难度,看了题解也思考了有一会TWT 显然,暴力我们是不可取的,但这里我们可以采取一种新的遍历数组形式,从后向前,也就是以i位置为结尾的所有子数组,这个子数组只统计i位置之前的。 然后…

深入理解 ZAB:ZooKeeper 原子广播协议的工作原理

目录 ZAB 协议:ZooKeeper 如何做到高可用和强一致?🔒ZAB 协议的核心目标 🎯ZAB 协议的关键概念 💡ZAB 协议的运行阶段 🎬阶段一:Leader 选举 (Leader Election) 🗳️阶段二&#xff…

GraphPad Prism项目的管理

《2025新书现货 GraphPad Prism图表可视化与统计数据分析(视频教学版)雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 项目…

驱动-Linux定时-timer_list

了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始…

STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调

导言 如上所示,STM32F103有两个基本定时器TIM6与TIM7,所谓「基本定时器」,即功能最简单的定时器。 项目地址: github: LL库: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library22_Basic_Timer寄存器方…

5个yyds的.Net商城开源项目

今天一起来盘点下5个商城开源项目。 1、支持多语言、多商店的商城,.Net7 EF7领域驱动设计架构(Smartstore) 项目简介 Smartstore 支持桌面和移动平台、多语言、多商店、多货币的商城,并支持SEO优化,支持无限数量的…

[项目深挖]仿muduo库的并发服务器的解析与优化方案

标题:[项目深挖]仿muduo库的并发服务器的优化方案 水墨不写bug 文章目录 一、buffer 模块(1)线性缓冲区直接扩容---->环形缓冲区定时扩容(只会扩容一次)(2)使用双缓冲(Double Buf…

国标GB28181视频平台EasyGBS校园监控方案:多场景应用筑牢安全防线,提升管理效能

一、方案背景​ 随着校园规模不断扩大,传统监控系统因设备协议不兼容、数据分散管理,导致各系统之间相互独立、数据无法互通共享。在校园安全防范、教学管理以及应急响应过程中,这种割裂状态严重影响工作效率。国标GB28181软件EasyGBS视频云…