痞子衡嵌入式:MCUBootUtility v5.3發佈,利用XMCD輕鬆使能外部RAM

来源:https://www.cnblogs.com/henjay724/archive/2023/09/29/17737431.html
-Advertisement-
Play Games

-- 痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v5.0.0)發佈過去4個多月了,期間痞子衡也做過三個小版本更新,但不足以單獨介紹。這一次痞子衡為大家帶來了全新重要版本v5.3.x,這次更新主要是想和大家特別聊聊 XMCD 這個特性的支持。 一、v5.1 - v5.3 ...


--
  痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v5.0.0)發佈過去4個多月了,期間痞子衡也做過三個小版本更新,但不足以單獨介紹。這一次痞子衡為大家帶來了全新重要版本v5.3.x,這次更新主要是想和大家特別聊聊 XMCD 這個特性的支持。

一、v5.1 - v5.3更新記錄

-- v5.1.0
Features:
    1. [RT1180] 支持自動載入Edgelock固件

-- v5.2.0
Features:
    1. [RTyyyy] 支持i.MXRT118x B0
    2. [RT] 對於FlexSPI NOR設備,支持下載安全與非安全兩種地址鏈接的CM33程式
    3. [RT] 對於FlexSPI NOR設備,支持別名地址鏈接的程式
Improvement:
    1. [RT1180] 用戶輸入的源程式文件可以包含啟動頭 (Container)

-- v5.2.1
Bufixes:
    1. [RTyyyy] 修複對FlexSPI NAND設備的下載支持

-- v5.3.0
Features:
    1. [RTyyyy] 支持XMCD配置功能,可用於載入image進FlexSPI RAM/SEMC SDRAM執行
    2. [RTyyyy] 支持第二個FlexSPI去下載啟動NAND
    3. [RT] 新增FlexSPI NAND啟動設備模型支持
Improvement:
    1. [RTyyyy] 將FlexSPI序號選擇從菜單欄改至設備配置界面
    2. [RTyyyy] 可以識別鏈接在FlexSPI RAM區域的程式
Bufixes:
    1. [RTyyyy] 無法識別IVT中複位函數地址相對向量表首地址偏移小於0xB00的可啟動程式文件

-- v5.3.1
Improvement:
    1. [RT] 可以檢查不同FlexSPI序號的有效XIP範圍
    2. [RTxxx] 可以識別鏈接在FlexSPI RAM區域的程式
Bufixes:
    1. [RT1180] 在FlexSPI NOR啟動設備下無法生成一些Non-XIP程式的可啟動程式

二、幾個不可忽視的更新

2.1 完善的FlexSPI NOR映射地址支持

  在 v5.0 及其之前的版本里,工具對於 FlexSPI NOR 設備映射地址的支持比較單一。在工具目錄 \src\targets\xxx\bltargetconfig.py 文件中僅可見如下定義(RT1180為例),即一個 FlexSPI 僅對應一個主映射地址:

flexspiNorMemBase0 = 0x38000000
flexspiNorMemBase1 = 0x14000000

  但是我們知道部分 i.MXRT 型號系統設計里對於 FlexSPI 除了支持主映射地址外,還支持所謂的別名映射地址(Aliased Address),甚至 CM33 內核的 i.MXRT 型號里還區分 Secure 和 Non-Secure 地址。因此 v5.3 里進一步豐富了 FlexSPI NOR 設備的映射地址,這樣我們在編譯鏈接 XIP 啟動程式的時候,地址選擇更加靈活。此外這裡如果你仔細看,會發現工具對於最大映射地址空間檢查也按 RT 型號不同做了具體區分。

  但是這裡有關於 RT1180 的一點註意事項,工具目錄 \src\targets\MIMXRT1189\ 下預先放了兩個版本的 flashloader,一個僅支持 Secure 地址,另一個僅支持 Non-Secure 地址,這是當前 flashloader 實現的限制。為了能讓工具自動根據用戶輸入源程式實際鏈接地址類型來選擇合適的 flashloader 去做擦寫操作,需要先點擊一次 Generate xxType Bootable Image 按鈕之後再點擊 Connect to ROM 按鈕,最後再 All-In-One Action

cntr_flashloader_s.bin
cntr_flashloader_ns.bin

2.2 支持鏈接在FlexSPI RAM區域的程式

  對於 Non-XIP 程式,除了鏈接在 RT 晶元內部 SRAM 空間之外,還可以鏈接在外部 RAM 空間,比如 SEMC 介面對應的 SDRAM 設備,或者 FlexSPI 介面對應的 HyperRAM 或者 PSRAM 設備。v5.0 及之前工具僅能支持鏈接在 SDRAM 的程式,對於鏈接在 FlexSPI 映射空間的 Non-XIP 程式,工具會直接報非法地址。v5.3 版本開始,這個限制將不復存在(見如下對 RT1180 FlexSPI RAM 地址的支持),這也是為了配合 DCD 以及 XMCD 功能而做的改進。

2.3 對於RT1170 XMCD功能支持

  從 RT1160/1170 B0 以及其後的 RT1180 開始,BootROM 里新增了 XMCD 功能,這是對 DCD 功能的補充。我們知道 DCD 可以實現對晶元指定外設的用戶定製化配置,常常用於配置 SEMC 寄存器去初始化 SDRAM 或者 FlexSPI 寄存器去初始化 HyperRAM/PSRAM,但是 DCD 的配置太細緻,需要從外設寄存器角度去理解那些外部 RAM 存儲器特性,這種方式從應用角度來說不夠友好。XMCD 正是為瞭解決這個問題,其將對 SDRAM/HyperRAM 配置以一種對用戶更友好更簡潔的方式來呈現,見如下界面設置:

  XMCD 雖好,但是其和 DCD 配合使用在當前工具里會有一些限制,這主要是因為工具依賴的 RT1170 底層工具鏈(elftosb)對於 dcd 數據的生成僅支持相對 IVT 起始地址 0x40 的偏移,但這個偏移恰恰又是 XMCD 的偏移位置,兩者有衝突:

  • 限制 1:如果是 All-In-One Action 操作,不可在界面里同時使能 DCD 和 XMCD。如果兩者同時使能,XMCD 設置會被自動忽略。
  • 限制 2:如果是 All-In-One Action 操作,用戶源應用程式里如果包含 DCD 數據結構,那麼工具界面里 XMCD 設置也會被自動忽略。
  • 限制 3:如果是 All-In-One Action 操作,用戶源應用程式里如果包含 XMCD 數據結構,且工具界面里 DCD 被使能,那麼 XMCD 數據結構將會被丟棄。

  當然如果你有一個同時包含 DCD 和 XMCD 數據的可啟動文件,可以在工具通用編程器(Boot Device Memory)界面使用 Write 按鈕去下載。

  至此,這次更新的主要特性便介紹完了。MCUBootUtility項目地址如下。雖然當前版本(v5.3.x)功能已經非常完備,你還是可以在此基礎上再添加自己想要的功能。如此神器,還不快快去下載試用?

歡迎訂閱

文章會同時發佈到我的 博客園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。

  最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。

痞子衡嵌入式-微信二維碼 痞子衡嵌入式-微信收款二維碼 痞子衡嵌入式-支付寶收款二維碼

  衡傑(痞子衡),目前就職於某知名外企半導體公司MCU系統部門,擔任嵌入式系統應用工程師。

  專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/

  與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]

  可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。

  關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。

  痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Java 21中,引入了虛擬線程(Virtual Threads)來簡化和增強併發性,這使得在Java中編程併發程式更容易、更高效。 虛擬線程,也稱為“用戶模式線程(user-mode threads)”或“纖程(fibers)”。該功能旨在簡化併發編程並提供更好的可擴展性。虛擬線程是輕量級的,這 ...
  • 折線圖是一種用於可視化數據變化趨勢的圖表,它可以用於表示任何數值隨著時間或類別的變化。 折線圖由折線段和折線交點組成,折線段表示數值隨時間或類別的變化趨勢,折線交點表示數據的轉折點。 折線圖的方向表示數據的變化方向,即正變化還是負變化,折線的斜率表示數據的變化程度。 1. 主要元素 折線圖主要由以下 ...
  • 1、概述 GEBCO(General Bathymetric Chart of the Oceans)全球 DEM數據集(Geo-Engineering Digital Savage)是基於“全球地球系統計劃”(Global Earth System Project)的最新數據集。 GEBCO 數據 ...
  • Question Description 使用JAVA語言的若依框架的時候,發現只要使用了startPage()函數, 並不需要前端傳遞分頁的數據,也不需要註解,就能完成分頁功能。預判他應該是使用類似攔截器的機制,但還是感覺很神奇,感覺知道個大概不過癮,還是要更細緻的瞭解才能滿足,就想研究一下並記錄 ...
  • 歡迎訪問我的GitHub 這裡分類和彙總了欣宸的全部原創(含配套源碼):https://github.com/zq2599/blog_demos 本篇概覽 本文是《Strimzi Kafka Bridge(橋接)實戰之》系列的第二篇,咱們直奔bridge的重點:常用介面,用實際操作體驗如何用brid ...
  • 問題: 當直接使用文件路徑載入8位灰度PNG圖片為Bitmap時,Bitmap的格式將會是Format32bppArgb,而不是Format8bppIndexed,這對一些判斷會有影響,所以需要手動解析PNG的數據來構造Bitmap 步驟 1. 判斷文件格式 若對PNG文件格式不是很瞭解,閱讀本文前 ...
  • 前言 隨著一年一度的國慶假期越來越近,身邊的國慶氛圍也越來越重,很多人也開始換上了漸變國旗頭像,提前為祖國母親慶生。那每年都很火的漸變國旗頭像要如何製作呢?其實一點也不難!接下來就分享一種漸變國旗頭像生成方法。 製作原理 上傳原始微信或其他頭像,將頭像的Image對象用Graphics創建返回GDI ...
  • VOD模塊NGINX編譯部署 主要解決我那破電視的觀影需求、軟體裝不了又不想掏錢看線上廣告;U盤也沒法播、沒幾個相容的解碼軟體,五六年前的電視買的是真坑爹,我又不會刷機,那索性用廢筆記本裝linux整個nginx-vod模塊整個音視頻鏈接,電視上用短小精悍的VLC觀影。 下包 mkdir /usr/ ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...