LPC55 系列 Flash 讀取問題

關鍵字 :LPC55FLASHlpc55lpc5500mculpc5506ipnxp

NXP LPC55 系列是基於 ARM Cortex-M33 內核的 MCU ,與傳統的LPC 控制器(LPC4300,LPC54000,LPC1800,LPC800)相比,LPC5500使用了新的 Flash IP,並啟用了 ROM API 驅動程序,操作 LPC5500 系列的 Flash 會有些不同,本文主要介紹讀取 Flash 的注意事項。

一、開發環境

IDE:MCUXpresso 11.9.1

MCU:LPC5506

SDK:2.11.0

硬體:LPC5506 EVK

二、Flash 讀取注意事項

LPC5500 系列 Flash 實現內部ECC管理,包括 Single bit 校正和 error correction 記錄,這使閃存比其他閃存更安全、更穩定,但是也因為這個原因,LPC55 系列使用指針或者 memcpy 等方式讀取已擦除或者損壞的 Flash 區域,那麼會造成 Hardfault 

與其它系列相比,讀取已擦除且未編程區域是比較容易忽略的地方,用戶往往會在擦除 Flash 之後再回讀數據校驗,來確保該區域被正確擦除,而對於 LPC55 系列來說不能使用回讀方式來校驗了。

以下為讀取 Flash API ,讀取擦除且未編程的 Flash 區域(blank 區域)會進 Hardfault

 三、解決方案

為了避免這個問題,NXP 提供了 ROM API 供用戶調用,在 User Manual 有相關介紹

 

在讀取 Flash 數據時調用 FLASH_VerifyErase 檢測是否為未使用區域(blank data),如果是未使用區域則不能讀取,否則可以正常讀取

 

對於 LPC55 系列來說,這個解決方案都是適用的,發現為 blank 區域後的操作,用戶可根據自身需求定義相關處理,這裡 FLASH_VerifyErase 只避免進入 Hardfault。

參考資料:《AN12949》 

https://www.nxp.com.cn/docs/en/application-note/AN12949.pdf

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論