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

文章目录

    • 前言
      • 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.mzph.cn/diannao/83527.shtml

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

相关文章

OTA与boot loader

OTA指的是无线升级,通常用于更新设备的固件或软件,用户不用手动操作,非常方便。而bootloader是启动时加载操作系统的程序,负责硬件初始化和启动流程。 首先,OTA是如何通过bootloader工作的。OTA下载更新包后&#xff0…

实验六:FPGA序列检测器实验

FPGA序列检测器实验(远程实验系统) 文章目录 FPGA序列检测器实验(远程实验系统)一、数字电路基础知识1. 时钟与同步2. 按键消抖原理代码讲解:分频与消抖3. 有限状态机(FSM)设计代码讲解:状态机编码与转移4. 边沿检测与信号同步5. 模块化设计二、实验数字电路整体思想三…

jenkins部署

开发者将代码push到git运维人员通过jenkins部署,自动到git上pull代码通过maven构建成jar包,并结合dockerfile打包成镜像,push docker镜像到docker registry通过k8s发起 发布/更新 服务 操作 通过Jenkins部署,自动到Git上PULL代码 …

BBR 的 buffer 动力学观感

这周很忙,今天还加了一天班,但还是抽空实现了五一在安徽泾县山区喝着一壶酒写的 BBR ProbeRTT 的想法,没多少行代码,它真就消除了带宽锯齿,皮了个鞋👞,昨天我还在群里说了今天再说说 BBR 的&…

第9讲、深入理解Scaled Dot-Product Attention

Scaled Dot-Product Attention是Transformer架构的核心组件,也是现代深度学习中最重要的注意力机制之一。本文将从原理、实现和应用三个方面深入剖析这一机制。 1. 基本原理 Scaled Dot-Product Attention的本质是一种加权求和机制,通过计算查询(Query…

el-tree结合checkbox实现数据回显

组件代码 <el-tree:data"vertiList"show-checkboxnode-key"id":props"defaultProps"ref"treeRefx"class"custom-tree"check-change"handleCheckChange"> </el-tree>获取选择的节点 handleCheckChan…

OpenResty 深度解析:构建高性能 Web 服务的终极方案

引言 openresty是什么&#xff1f;在我个人对它的理解来看相当于嵌入了lua的nginx; 我们在nginx中嵌入lua是为了不需要再重新编译,我们只需要重新修改lua脚本,随后重启即可; 一.lua指令序列 我们分别从初始化阶段&#xff0c;重写/访问阶段&#xff0c;内容阶段&#xff0c;日志…

多商户商城系统源码解析:开发直播电商APP的技术底层实战详解

随着直播电商的火爆&#xff0c;越来越多的创业者和企业都在寻求打造自己的多商户商城系统&#xff0c;以实现“人、货、场”三者的深度融合。然而&#xff0c;从一个简单的电商平台到一个功能完善的直播电商APP&#xff0c;其技术底层架构和实现过程并非一蹴而就。本文将从架构…

桌面端进程通信

以下是关于 Electron 桌面端进程通信的基本知识点总结: 一、Electron 进程模型基础 1. 进程类型与职责 进程类型职责权限主进程(Main)创建窗口、系统级操作、IPC中枢完全Node.js访问权限渲染进程(Renderer)展示Web内容、UI交互默认受限(可配置开启Node.js)预加载脚本(Prelo…

openEuler24.03 LTS下安装MySQL8.0.42

目录 前提步骤 删除原有mysql及maridb数据库 安装MySQL 启动MySQL 启动查看MySQL状态 设置MySQL开机自启动 查看登录密码 登录MySQL 修改密码及支持远程连接 远程连接MySQL 前提步骤 拥有openEuler24.03 LTS环境&#xff0c;可参考&#xff1a;Vmware下安装openEule…

idea 保证旧版本配置的同时,如何从低版本升到高版本

文章目录 前言idea 保证旧版本配置的同时,如何从低版本升到高版本1. 备份项目2. 下载最新的idea3. 安装安装包4. 导入idea2019旧配置5. 验证前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,…

填坑记: 古董项目Apache POI 依赖异常排除

当你看到NoSuchMethodError的时候&#xff0c;不要慌&#xff0c;深呼吸&#xff0c;这可能只是JAR包版本的问题… 引子&#xff1a;一个平静的周二下午 那是一个看似平常的周二下午&#xff0c;系统运行良好&#xff0c;开发团队在有条不紊地推进着新功能的开发。突然&#x…

CAPL Class: TcpSocket (此类用于实现 TCP 网络通信 )

目录 Class: TcpSocketacceptopenclosebindconnectgetLastSocketErrorgetLastSocketErrorAsStringlistenreceivesendsetSocketOptionshutdown函数调用的基本流程服务器端的基本流程客户端的基本流程Class: TcpSocket学习笔记。来自CANoe帮助文档。 Class: TcpSocket accept /…

微信小程序的开发及问题解决

HttpClient 测试例子 SpringBootTest public class HttpClientTest {/*** 测试通过httpclient发送get方式的请求*/Testpublic void testGET() throws IOException {//创建httpclient对象CloseableHttpClient httpClient HttpClients.createDefault();//创建请求对象HttpGet ht…

foreach中使用await的问题

目录 1.说明 2.示例 3.解决方案 1.说明 在foreach中调用异步方法&#xff0c;即使使用了await&#xff0c;不会依次执行每个异步任务&#xff0c;也就是说Array.prototype.forEach不会等待 Promise 完成&#xff0c;即使你在回调函数中返回一个 Promise&#xff0c;forEach …

Linux调试生成核心存储文件

1.核心存储文件配置&#xff1a; 不知道理解对不对&#xff0c;Linux中的核心存储文件的配置是在/proc/sys/kernel/core_pattern中的&#xff0c;使用 cat /proc/sys/kernel/core_pattern # 打印出 |/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E表示核…

Compose笔记(二十三)--多点触控

这一节主要了解一下Compose中多点触控&#xff0c;在Jetpack Compose 中&#xff0c;多点触控处理需要结合Modifier和手势API来实现&#xff0c;一般通过组合 pointerInput、TransformableState 和 TransformModifier 来创建支持缩放、旋转和平移的组件。 一、 API 1. Pointer…

【Java ee初阶】HTTP(4)

构造HTTP请求 1&#xff09;开发中&#xff0c;前后端交互。浏览器运行的网页中&#xff0c;构造出HTTP请求 2&#xff09;调试阶段&#xff0c;通过构造HTTP请求测试服务器 朴素的方案&#xff1a; 通过tcp socket 的方式构造HTTP请求 按照HTTP请求格式&#xff0c;往TCP…

STM32 __main

STM32开发中__main与用户main()函数的本质区别及工作机制 在STM32开发中&#xff0c;__main和用户定义的main()函数是启动过程中的两个关键节点&#xff0c;分别承担运行时初始化和用户程序入口的职责。以下是它们的核心差异及协作机制&#xff1a; 一、定义与层级差异 ​__ma…

什么是PMBus

一、PMBus的定义与背景 PMBus&#xff08;Power Management Bus&#xff0c;电源管理总线&#xff09; 是一种基于SMBus&#xff08;System Management Bus&#xff09;的开放标准数字通信协议&#xff0c;专为电源设备的监控、配置和控制设计。由PMBus联盟&#xff08;现并入…