ARM學習(28)NXP 雙coreMCU IMX1160學習----NorFlash 啟動引腳選擇
1、多種啟動方式介紹
IMX1166 支持多組flexSPI 引腳啟動,FlexSPI1以及FlexSPI2,通過boot cfg可以切換FlexSPI得實例。
每個實例又支持多組引腳,總共又兩個組別,每個組別又有兩組引腳,分別為PortA+PortB,ROM Code默認是通過黑體引腳去加載Code得。
實例1得第二組得PORTA+PORTB。
通過eUFSE信息可以去配置選擇是第幾組,且是哪個PORTA或者哪個PORTB。
eFUSE配置是通過NXP-MCUBootUtility-3.4.0工具來進行操作得。
下載地址:git@github.com:JayHeng/NXP-MCUBootUtility.git
- 點擊左下角connect,連接成功之后,會變成藍色,按鈕會變成reset device,同時就會連接成功,左下角有日志,顯示Flash得相關size信息
- 界面中間有eFUSE Operation Utility,可以操作eFUSE信息,eFUSE只可寫一次,之后就無法操作,如下圖二,可以縣級scan,可以讀出所有得eFUSE數據,點擊Burn,就可以寫eFUSE信息
- 界面中間得Boot Device Memory,可以對Flash進行讀寫擦,可以燒錄bin或者hex文件下去。
2、IDE 下載以及Jflash下載代碼
兩者均是下載程序到Flash中。
2.1 IDE 下載代碼(CMSIS DAP)
IDE采用CMSIS DAP下載代碼到Flash中,也可以采用JIink方式,但是開發板上面自帶得燒錄器,可以直接燒錄和串口顯示。
其燒錄得Flash Driver是MIMXRT1160_SFDP_QSPI.cfx,默認是實例1得第一組得PortA,如果換乘其他引腳無法燒錄,當然其還支持MIMXRT1160_FlexSPI2_A_SFDP_QSPI.cfx,實例2得第一組得PORTA。下載算法跟Flash得位置息息相關,如果Flash得引腳更換,會導致程序無法下載。
注意:程序如果更新到RAM,可以直接通過下載器 走JTAG協議下進去,但是Flash不行,Flash需要有單獨得接口進行操作,比如讀寫擦,所有下載到FLash得代碼,首先需要下載到RAM中一個Flash驅動程序,然后與Flash驅動程序進行通信,然后再把代碼下載到Flash中。
IDE得下載算法如這篇文章所示:RT1170 flexSPI1 secondary QSPI flash debug flashdriver。
2.2 JLink下載代碼
同樣JLink下載到Flash里面得程序,同樣需要JLink得Flash驅動程序,不過Jlink得Flash驅動程序和IDE得不一樣。
如果要通過JINK下載Flash,支持得引腳也有限,如下圖所示,如果引腳不一樣,則無法通過jlink下載程序。
JLink認為他們得下載程序更快,相對傳統得FLM Flash驅動程序,就是CMSIS loader開源得Flash下載驅動。具體相關得Flash下載驅動算法,下一章節詳細介紹ARM學習(30)JFlash下載Flash程序的理解。
3、下載到RAM運行
下載最簡單的hello wrold程序到RAM中,下圖為鏈接腳本,代碼放到SRAM_DTC_cm7位置。
現象:一直打印數據。
操作:trace32直接加載對應的axf文件,就可以直接燒錄到RAM上面運行。
SYStem.Down
IF SYStem.Mode()<5
(SYStem.CPU IMXRT1166-CM7SYStem.up)
Data.LOAD.Elf "~~~~/evkmimxrt1160_hello_world_cm7.axf"
Trace32窗口再新增一個core,然后點擊開始,就可以新建一個窗口,可以追蹤另外一個cortexm4的行為。