MCX產(chǎn)品系列是恩智浦憑借20多年來業(yè)界領(lǐng)先的Kinetis和LPC產(chǎn)品的實(shí)力,推出的新一代可擴(kuò)展、安全且以開發(fā)人員為中心的微控制器。MCX產(chǎn)品基于ArmCortex-M內(nèi)核,采用一系列核心技術(shù),支持廣泛的工業(yè)和物聯(lián)網(wǎng)應(yīng)用。MCX作為新一代帶閃存的32位微控制器,提供了更強(qiáng)的產(chǎn)品功能,存儲可擴(kuò)展性,且封裝選項(xiàng)廣泛。簡化系統(tǒng)設(shè)計(jì)為智能邊緣提供了最佳啟用和智能外圍設(shè)備,包括機(jī)器學(xué)習(xí)、無線、語音、電機(jī)控制、模擬等。
MCX N94x是其中一款典型產(chǎn)品,具有靈活串行外設(shè)接口(FlexSPI)的控制器,支持外接存儲器。外部flash儲存容量大、靈活性高,且相對獨(dú)立于主芯片的更換或升級,且具有較高的可靠性和壽命,但是與內(nèi)部flash相比,其配置和使用是一個(gè)比較復(fù)雜的過程,對于初次使用的用戶還是會有很大的阻礙,因此本文將會手把手教你配置外部NOR Flash的啟動和燒寫。
操作流程
本文以FRDM-MCXN947為例詳細(xì)講解如何配置外部flash的啟動和燒寫,主要包含以下三部分內(nèi)容:
流程一:配置外部 Flash 啟動
流程二:基于 MCUXpresso IDE 創(chuàng)建外部 Flash 工程
流程三:燒寫到外部 Flash
硬件:FRDM-MCXN947開發(fā)板
軟件:BlhostMCUXpresso IDE v11.8.1
流程一:配置外部Flash啟動
(一)配置注意事項(xiàng)
配置MCXN947從外部flash啟動的關(guān)鍵在于配置CMPA。CMPA是芯片內(nèi)的一塊可編程區(qū)域,也可以理解為芯片中的一塊特殊flash,通過配置CMPA中BOOT_CFG[bits 31:0]->BOOT_SRC(bits 1:0),定義如下:
BOOT_SRC(bits 1:0)=
00/11:Internal flash
01:FlexSPI-A flash XIP image
10:Secondary Boot loader in Bank1 IFRO (32KB).
此處我們應(yīng)配置為BOOT_CFG[bits 1:0]=0x01,手冊要求設(shè)置高16位BOOT_CFG[bits 31:16]=0x5963,其他位默認(rèn)為0x00。配置完成后bootROM會自動引導(dǎo)外部FlexSPI NOR flash啟動。CMPA文件cmpa_flexspi.bin大小為512byte,存放在blhost.exe同一目錄下,內(nèi)容如下圖:
(二)具體配置方法
我們可以使用兩種方法配置CMPA:blhost工具或者使用API函數(shù)。
第一種方法: 使用blhost配置CMPA
1.進(jìn)入ISP模式:按住FRDM-MCXN947開發(fā)板上SW3(ISP鍵)=>按住釋放SW1(RESET鍵)=>釋放SW3。
2.使用CMD命令打開blhost.exe。
3.命令行輸入“blhost -p com11 -- get-property 1”檢查是否成功進(jìn)入ISP模式,進(jìn)入ISP模式后,顯示如下圖:
4.將配置好的CMPA文件“cmpa_flexspi.bin”寫入CMPA,CMPA區(qū)域的起始地址是從0x1004000開始的。在命令窗輸入“blhost -p com11write-memory0x1004000 cmpa_flexspi.bin”,成功寫入顯示如下圖:
5.通過命令窗輸入“blhost -p com11 read-memory 0x1004000 0x100”還可以讀出寫入的內(nèi)容,以確保正確寫入,如下圖:
6.成功配置CMPA從外部flash啟動,按RESET鍵重啟。
第二種方法:使用API:ffr_cust_factory_page_writ配置CMPA
ffr_cust_factory_page_write(config, page_data, seal_part);
該API用于將CMPA數(shù)據(jù)寫入CMPA區(qū)域,使用時(shí)需注意應(yīng)該在flash_init()和ffr_init()之后調(diào)用,包含了三個(gè)參數(shù),芯片手冊中對參數(shù)進(jìn)行了詳細(xì)的描述,如下圖:
config:指向內(nèi)存中flash_config_t數(shù)據(jù)結(jié)構(gòu)的指針,用于存儲驅(qū)動程序運(yùn)行時(shí)狀態(tài)。
page_data:指向用戶存放cmpa數(shù)據(jù)的指針。
seal_part:如果設(shè)置為true或page_data包含非零CMAC數(shù)據(jù),則計(jì)算CMPA CMAC并將其編程到CMPA區(qū)域。
詳細(xì)代碼請查看附件。
流程二:基于MCUXpresso IDE創(chuàng)建外部Flash工程
外部flash和內(nèi)部flash工程配置有些不同,以MCUXpresso創(chuàng)建的工程為例進(jìn)行介紹,其它IDE同理。
(一)注意事項(xiàng)
創(chuàng)建外部flash啟動的工程,有兩種情況,一種是在工程中配置FCB,另一種是在工程中并沒有配置FCB。不同的情況對應(yīng)不同的燒寫方法。
(二)具體情況
第一種情況:工程中包含F(xiàn)CB
步驟1:配置FCB
步驟2:配置外部flash地址
當(dāng)我們基于MCXN947芯片創(chuàng)建一個(gè)新工程時(shí),默認(rèn)放在內(nèi)部flash(起始地址0x0),需要根據(jù)外部flash實(shí)際地址和大小進(jìn)行配置,此處起始地址和空間大小如下圖:
第二種情況:工程中不包含F(xiàn)CB:
流程三:燒寫到外部Flash
通過上面兩部分流程,外部flash啟動和工程配置完畢,現(xiàn)在只需要把程序下載到外部flash中,程序就可以在外部flash啟動運(yùn)行起來。有兩種下載方式,一種是使用blhost燒寫,另一種是使用IDE燒寫。
第一種方法:使用blhost燒寫
(一)注意事項(xiàng)
通過blhost向外部flash燒寫程序分為兩種情況:
第一種是工程中沒有配置FCB(不包含F(xiàn)CB的image),我們需要通過blhost對Flexspi接口以及FCB進(jìn)行配置,配置完成后再將image寫入flash;第二種是在工程內(nèi)配置了FCB,我們只需要在配置Flexspi接口后,直接把程序?qū)懭雈lash(寫入命令“flash-image xx.s19”),不需要配置FCB,此處必須使用SREC格式(xx.s19)或者.hex鏡像文件。
(二)具體步驟
第一步:打開blhost命令窗
在blhost.exe文件夾下啟動cmd,打開命令窗口。如下圖:
第二步:進(jìn)入ISP模式
前面我們已經(jīng)配置好了CMPA,可以直接進(jìn)入ISP模式,進(jìn)行以下操作:按住SW3(ISP鍵)=>按住釋放SW1(RESET鍵)=>釋放SW3。
第三步:配置FlexSPI接口
分為以下兩步:
1.在Blhost命令行輸入“blhost -p com11 fill-memory 0x20020000 4 0xc0000001”,運(yùn)行成功顯示如下圖:
2.在Blhost命令行輸入“blhost -p com11configure-memory 0x9 0x20020000”,運(yùn)行成功顯示如下圖:
第四步:配置FCB
注意:如果工程中已經(jīng)配置了FCB,則不需要執(zhí)行此步,直接跳到第五步。
分為以下三步:
1.在Blhost命令行輸入“blhost -p com11 flash-erase-region 0x80000000 0x10000”,對外部flash進(jìn)行擦除,運(yùn)行成功顯示如下圖:
2.在Blhost命令行輸入“blhost -p com11 fill-memory 0x20020000 4 0xf000000f”,運(yùn)行成功顯示如下圖:
3.在Blhost命令行輸入“blhost -p com11 configure-memory 0x9 0x20020000”,運(yùn)行成功顯示如下圖:
第五步:將目標(biāo)二進(jìn)制文件下燒寫到FlexSPI NOR flash中
(一)注意事項(xiàng)
如果工程中沒有配置FCB,執(zhí)行方法1,如果配置了FCB,執(zhí)行方法2.
(二)具體方法
方法1:
把生成的.bin文件通過blhost“write-memory”進(jìn)行寫入。
在Blhost命令行輸入
“blhost -p com11 write-memory 0x80001000 MCXN947_Project.bin”命令成功顯示如下圖:
方法2:
在blhost命令行輸入“blhost -p com11 -- flash-imagefrdmmcxn947_hello_world_qspi_xip.s19”,成功顯示如下圖:
第六步:完成下載后,重新啟動。
按下RESET,重新啟動開發(fā)板,燒寫到外部flash中的程序就啟動運(yùn)行。
第二種方法:MCUXpresso IDE一鍵下載
注意事項(xiàng):此種方法只用于工程中配置了FCB的情況。
本節(jié)我們以官方demo“frdmmcxn947_hello_world_qspi_xip工程為例”,
從該工程中我們可以看到在“source”文件夾中的“mcxn_flexspi_nor_config.c”文件,里面對FCB進(jìn)行了詳細(xì)的配置,包含了對QSPI以及LUT的配置,如下圖:
第一步:配置下載算法
FCB是放在flash偏移地址0X08000400開始用于FlexSPI NOR boot的頭代碼,在“MCU settings”我們可以看到QSPI_FLASH以及QSPI_FCB的起始地址及其大小,如下圖:
“Driver”->“MCXN9xx_SFDP_FlexSPI.cfx”是MCXN9xx系列芯片的外部flash下載算法文件,通過該下載算法IDE可以直接將程序下載到外部flash。對于不同的芯片在MCUXpresso IDE中,我們可以點(diǎn)擊“MCXN9xx_SFDP_FlexSPI.cfx”出現(xiàn)“…”按鈕,打開就可以看到不同芯片的下載算法文件了,如下圖:
MCUXpresso IDE默認(rèn)自帶了非常多的flash下載算法,文件后綴名是.cfx。即使是同一顆芯,可以看到其有多個(gè).cfx可選,這分別對應(yīng)了不同的flash種類以及與主芯片連接端口。
第二步:下載程序
點(diǎn)擊編譯那妞,編譯成功后,點(diǎn)擊“GUI Flash Tool”燒寫,如下圖:
成功燒寫后,如圖:
小結(jié)
綜上,本文詳細(xì)講解了MCXN947外部flash的啟動配置,并通過blhost和MCUXpresso IDE都可以成功的將程序燒寫到外部flash。在用blhost工具下載時(shí),需要注意工程中是否配置了FCB,下載步驟會有所不同。
作者:Alice Yang
恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護(hù)航。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1673瀏覽量
151331 -
恩智浦
+關(guān)注
關(guān)注
14文章
5963瀏覽量
114637 -
燒寫
+關(guān)注
關(guān)注
0文章
58瀏覽量
14581 -
N94
+關(guān)注
關(guān)注
0文章
2瀏覽量
5365 -
32位微控制器
+關(guān)注
關(guān)注
1文章
8瀏覽量
1895
原文標(biāo)題:MCX N94x外部flash啟動配置和燒寫
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第17期:2025.06.23--2025.06.27
如何在MCXN947微控制器上配置安全啟動和生命周期

如何在MCXN947板的FlexSPI接口接HyperRAM

恩智浦MCU MCXN947 基于MCUXpresso Config tools創(chuàng)建IIC的教程步驟

MCXN947如何配置和外擴(kuò)PSRAM?
FRDM-MCXN947為什么無法使用配置工具修改示例項(xiàng)目中使用的led_blinky LED?
MCXN947使用ADC并編寫代碼,總是報(bào)警告是怎么回事?
關(guān)于將Flash寫入FRDM-MCXN947的問題求解
使用NXP MCX-N板卡搭建環(huán)境及點(diǎn)燈

恩智浦 MCX N系列之電源管理(MCX N94/54與MCX N23)

恩智浦MCX N23的官方評估板FRDM-MCXN236詳解

NXP MCX N23和MCX N94/54的不同之處

MCXN947系列高性能微控制器產(chǎn)品介紹

評論