痞子衡嵌入式:MCUBootUtility v3.5發佈,支持串列NOR的ECC及雙程式啟動

来源:https://www.cnblogs.com/henjay724/archive/2022/03/20/16029876.html
-Advertisement-
Play Games

-- 痞子衡維護的 NXP-MCUBootUtility 工具距離上一個大版本(v3.4.0)發佈過去半年了,這一次痞子衡為大家帶來了版本升級 v3.5.0,這個版本主要有幾個非常重要的更新需要跟大家特別說明一下。 一、v3.5更新記錄 二、幾個不可忽視的更新 2.1 支持串列NOR雙程式啟動下載 ...


--
  痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.4.0)发布过去半年了,这一次痞子衡为大家带来了版本升级 v3.5.0,这个版本主要有几个非常重要的更新需要跟大家特别说明一下。

一、v3.5更新记录

二、几个不可忽视的更新

2.1 支持串行NOR双程序启动下载

  部分 i.MXRT 型号 BootROM 支持串行 NOR Flash 的双程序启动,这意味着在这些型号上用户可以不用额外设计二级 bootloader 也可以完成本地 OTA 升级。

  之前痞子衡把所有支持双程序启动的 i.MXRT 型号都试了一遍,一共写了三篇文章,在文中痞子衡是借助 MCUBootUtility v3.4 里的通用编程器来手动做两个 image 的下载的,并且 image 版本头添加,以及 Fuse 烧写也都是手工完成的,步骤稍显复杂。

《i.MXRT1060,1010上串行NOR Flash冗余程序启动设计》
《i.MXRT1170上串行NOR Flash双程序可交替启动设计》
《i.MXRT500,600系列上串行NOR Flash双程序可交替启动设计》

  在 MCUBootUtility v3.5 上再去做同样的事情就简单多了,只需要在 FlexSPI NOR Device Configuration 界面里设置双程序启动相关参数即可,工具会自动完成后续所有事情(烧写相应 Fuse、添加 image 版本头,烧写两份 image 进 Flash)。

  • Note1: Image 1 offset 保持默认 0,即不使能双程序下载;如果设为非 0,这个值也会被烧写进 Fuse。
  • Note2: Image 0/1 version 如果保持 none 值,在双程序下载使能的情况下实际等同于 0xFFFF 值。

2.2 支持串行NOR的ECC方式下载

  在部分增强型 i.MXRT 型号上(比如 i.MXRT1170),芯片内部增加了很多 ECC 方面设计,从 RAM 到 Flash 再到 Fuse,全部都有 ECC 保护,这样芯片可放心用于那些对稳定性要求高的产品场合(比如汽车)。

  在 i.MXRT1170 上是 XECC 模块负责了 FlexSPI 外设连接的 Flash 上 ECC 处理,痞子衡之前为此写过一篇文章 《i.MXRT1170 XECC功能特点及其保护串行NOR Flash和SDRAM之道》。但是官方 SDK 里提供的 Flashloader (路径在 \SDK_2.11.0_MIMXRT1170-EVK\boards\evkmimxrt1170\bootloader_examples\flashloader)并不支持 ECC 方式的写入,而 MCUBootUtility 正是借助这个官方 Flashloader 完成 Flash 的擦写的,所以我们需要改这个官方 Flashloader,为此痞子衡创建了一个项目:

  在 imxrt-ecc-flashloader 工程里,痞子衡引入了 XECC 模块驱动,并且将 ECC 功能集成到了 set-property 13 和 write-memory 这两个命令里。这里有两个注意点,一是:使能 ECC 写入后,写入首地址需要以 4KB 对齐(在 XECC 模块的限制下做的设定),二是:使能 ECC 写入后,擦除长度需要是 image 长度的两倍(XECC 原理决定的)。

// 初始化 Flash
blhost -u -- fill-memory 0x20200000 0x4 0xC0000005
blhost -u -- fill-memory 0x20200004 0x4 0x0
blhost -u -- configure-memory 0x9 0x20200000

// 关闭 ECC 写入功能,复位 XECC 模块(默认配置)
blhost -u -- set-property 13 0
// 擦除 Flash 前 16KB 空间
blhost -u -- flash-erase-region 0x30000000 0x4000
// 正常写入 Flash
blhost -u -- write-memory 0x30000000 bt_image_16KB.bin 0x9

// 使能 ECC 写入功能
blhost -u -- set-property 13 1
// 擦除 Flash 前 32KB 空间
blhost -u -- flash-erase-region 0x30000000 0x8000
// 先初始化 XECC 模块,然后以 ECC 方式写入 Flash(写入地址需要以 4KB 对齐)
blhost -u -- write-memory 0x30000000 bt_image_16KB.bin 0x9
// 每一次写完 Flash 需要关闭 ECC 写入功能
blhost -u -- set-property 13 0

  痞子衡将 imxrt-ecc-flashloader 工程生成的可执行文件(CM4版本)放到了 \NXP-MCUBootUtility\src\targets\MIMXRT1176\flashloader_user.srec,让工具用这个含 ECC 功能的 Flashloader,并且在工具通用编程器界面增加了 ECC Write 按钮,这个按钮可以一键完成 .bin 格式文件的 ECC 方式下载。

  • Note: v3.5版本工具里没有自动集成 ECC 使能的 Fuse 位烧写,因为 Fuse 烧写完,芯片需要复位一次,XECC 才生效,所以用户需要自己手动烧写 Fuse。

  至此,这次更新的主要特性便介绍完了。MCUBootUtility项目地址如下。虽然当前版本(v3.5.0)功能已经非常完备,你还是可以在此基础上再添加自己想要的功能。如此神器,还不快快去下载试用?

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

  最后欢迎关注痞子衡个人微信公众号【痞子衡嵌入式】,一个专注嵌入式技术的公众号,跟着痞子衡一起玩转嵌入式。

痞子衡嵌入式-微信二维码 痞子衡嵌入式-微信收款二维码 痞子衡嵌入式-支付宝收款二维码

  衡杰(痞子衡),目前就职于恩智浦MCU系统部门,担任嵌入式系统应用工程师。

  专栏内所有文章的转载请注明出处:http://www.cnblogs.com/henjay724/

  与痞子衡进一步交流或咨询业务合作请发邮件至 [email protected]

  可以关注痞子衡的Github主页 https://github.com/JayHeng,有很多好玩的嵌入式项目。

  关于专栏文章有任何疑问请直接在博客下面留言,痞子衡会及时回复免费(划重点)答疑。

  痞子衡邮箱已被私信挤爆,技术问题不推荐私信,坚持私信请先扫码付款(5元起步)再发。



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

-Advertisement-
Play Games
更多相關文章
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • 一、Vim編譯器 1.什麼是vim編譯器 Vim相當於vi的升級版 Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用。 簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程式開發 ...
  • ls 列出當前目錄下所有文件 https://files.cnblogs.com/files/zhangzongjian/ls.css | 參數 | 描述 | 樣例 | 樣例說明 | | | | | | | -l | 詳細文件信息 | | | | -t | 修改時間排序 | | | | -r | 倒 ...
  • linux的三種軟體安裝及基本環境安裝 安裝軟體一般有三種方式: rpm 解壓縮 yum線上安裝 1.JDK安裝(rpm安裝) 1.rpm下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.如果有安裝ope ...
  • Linux學習 一、入門概述 我們為什麼要學Linux Linux誕生了這麼多年,以前還喊著如何能取代windows系統,現在這個口號已經小多了,任何事物發展都有其局限性都有其天花板。就如同在國內再搞一個社交軟體取代騰訊一樣,想想而已基本不可能,因為用戶已經習慣於使用微信交流,不是說技術上實現不瞭解 ...
  • 一、什麼是Shell腳本 Shell腳本(英語:Shell script),又稱Shell命令稿、程式化腳本,是一種電腦程式與文本文件,內容由一連串的shell命令組成,經由Unix Shell直譯其內容後運作。被當成是一種腳本語言來設計,其運作方式與直譯語言相當,由Unix shell扮演命令行解 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...