i.MX RT105X如何使用外部SDRAM

原創(chuàng) 2022-06-18 16:14:00 Rt1052 外部SDRAM

很多時(shí)候,芯片內(nèi)部RAM空間不夠的時(shí)候,需要用到SDRAM。正常情況下,CPU一上電,內(nèi)部RAM就已經(jīng)初始化好了,而對(duì)于外部的SDRAM,則需要先初始化RT105X的SDRAM控制器(SEMC),才能向SDRAM可尋址空間copy數(shù)據(jù)。

1、一般情況下,SDRAM初始化代碼存儲(chǔ)在dcd_sdram[]數(shù)組中,boot ROM code在進(jìn)入_main之前已經(jīng)調(diào)用了dcd碼,即已經(jīng)初始化了sdram。問(wèn)題就出在這個(gè)dcd碼上,不同型號(hào)的sdram芯片,初始化過(guò)程也是不同的,dcd碼當(dāng)然也就不同,所以,為了適配自己的板子,需要更改官方板子對(duì)應(yīng)sdram初始化dcd碼,即將自己板子上的sdram型號(hào)對(duì)應(yīng)的dcd碼替換原來(lái)的dcd碼。前面已經(jīng)說(shuō)了,所謂的dcd碼不過(guò)是由sdram初始化代碼轉(zhuǎn)化成的一堆16進(jìn)制數(shù)據(jù)組成的數(shù)組。所以,我們要想完成dcd碼覆蓋工作,就需要先將sdram初始化代碼轉(zhuǎn)化為dcd碼數(shù)組,使用工具dcdgen.exe即可完成轉(zhuǎn)化。

2、如果沒(méi)有dcdgen.exe工具,還有另一種簡(jiǎn)單的方法達(dá)到初始化SDRAM的目的。

打開(kāi)系統(tǒng)工程中startup_MIMXRT1052.s文件,找到如下代碼:

Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  SystemInit
                IMPORT  __main
                CPSID   I               ; Mask interrupts
                LDR     R0, =0xE000ED08
                LDR     R1, =__Vectors
                STR     R1, [R0]
                LDR     R2, [R1]
                MSR     MSP, R2
                LDR     R0, =SystemInit
                BLX     R0
                CPSIE   i               ; Unmask interrupts
                LDR     R0, =__main
                BX      R0
                ENDP

由此可以看到,在進(jìn)入_main之前,有個(gè)SystemInit函數(shù),我們只需將初始化SDRAM的代碼,放進(jìn)SystemInit函數(shù)末尾,讓boot ROM code進(jìn)入_main之前,進(jìn)行sdram初始化。這個(gè)SystemInit函數(shù)存在于startup_MIMXRT1052.c文件中。

如下在SystemInit末尾添加SDRAM_Init()函數(shù):


  SystemInitHook();
 /////////////////////////add by zzzppp//////////////////////////// 
  #ifdef SDRAM_INIT
   SDRAM_Init();
   #endif
  /////////////////////////////////////////////////////////////////
}

這樣,即使boot ROM code提前執(zhí)行了錯(cuò)誤的SDRAM初始化dcd碼也沒(méi)關(guān)系,因?yàn)樵谙到y(tǒng)初始化結(jié)束時(shí)(SystemInit函數(shù)末尾),又一次執(zhí)行了正確的SDRAM。



相關(guān)產(chǎn)品 >

  • FET1052-C核心板

    iMXRT核心板采用NXP iMXRT1050系列的i.MX RT1052跨界處理器設(shè)計(jì),兼容MCU與MPU各自領(lǐng)域特點(diǎn)。iMXRT1052主頻高達(dá)600MHz是單片機(jī)界的性能怪獸。iMXRT1052作為一款跨界核心板,采用 Cortex-M7架構(gòu)微控制器,主頻卻高達(dá)600MHz,高密度的512KB TCM SRAM和16MB的高速SDRAM,超快的實(shí)時(shí)響應(yīng),超低的功耗,超強(qiáng)處理性能賦予了RT1052視頻編解碼能力。


    了解詳情
    FET1052-C核心板
  • OK1052-C開(kāi)發(fā)板

    飛凌提供的i.MXRT105x系列單片機(jī),iMXRT1052單片機(jī)基于NXP Cortex-M7 i.MX RT1052跨界處理器設(shè)計(jì),底板+核心板分離結(jié)構(gòu),開(kāi)發(fā)更簡(jiǎn)單,imxrt1052核心板僅售68元,歡迎致電400-699-6866咨詢(xún)。推薦iMXRT單片機(jī),性?xún)r(jià)比高。 了解詳情
    OK1052-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批