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.pswp.cn/diannao/83527.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83527.shtml
英文地址,請注明出處:http://en.pswp.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;現并入…