<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          SDRAM初始化過程的詮釋

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          幾天前看初始化SDRAM代碼時(shí)覺得比較困難,主要是因?yàn)橹皼]有接觸過這方面,毫無經(jīng)驗(yàn),現(xiàn)在看來不難,麻煩在需要根據(jù)datasheet進(jìn)行設(shè)置,好在是移植,很多強(qiáng)人的文章可參考。自己很容易忘事,就記錄下來吧。

          我的板子是sbc2410,使用兩片容量為32MB、位寬16bit的HY57V561620CT-H芯片拼成容量為64M、32bit的SDRAM存儲(chǔ)器。根據(jù)2410datasheet,要使用SDRAM需配置13個(gè)寄存器,以下逐個(gè)來看:

          本文引用地址:http://www.ex-cimer.com/article/201611/316620.htm

          BWSCON:Bus width & wait status control register總線位寬和等待狀態(tài)控制寄存器。

          此寄存器用于配置BANK0 – BANK7的位寬和狀態(tài)控制,每個(gè)BANK用4位來配置,分別是:

          ● ST(啟動(dòng)/禁止SDRAM的數(shù)據(jù)掩碼引腳。對于SDRAM,此位置0;對于SRAM,此位置1)

          ● DWSDRAM是32位,故將DW6設(shè)為10)

          特殊的是bit[2:1],即DW0,設(shè)置BANK0的位寬,又板上的跳線決定,只讀的。我這板子BWSCON可設(shè)置為0x22111110。其實(shí)只需將BANK6對應(yīng)的4位設(shè)為0010即可。

          用來分別配置8個(gè)BANK的時(shí)序等參數(shù)。SDRAM是映射到BANK6和BANK7上的(內(nèi)存只能映射到這兩個(gè)BANK,具體映射多大的空間,可用BANKSIZE寄存器設(shè)置),所以只需參照SDRAM芯片的datasheet配置好BANK6和BANK7,BANKCON0 – BANKCON5使用默認(rèn)值0x00000700即可。

          (1)MT(bit[16:15]):設(shè)置本BANK映射的物理內(nèi)存是SRAM還是SDRAM,后面的低位就根據(jù)此MT的選擇而分開設(shè)置。本板子應(yīng)置0b11,所以只需要再設(shè)置下面兩個(gè)參數(shù)

          (2)Trcd(bit[3:2]):RAS to CAS delay(00=2 clocks,01=3 clocks,10=4 clocks),推2410手冊上的薦值是0b01。我們PC的BIOS里也可以調(diào)節(jié)的,應(yīng)該玩過吧。

          (3)SCAN(bit[1:0]):Column address number(00 = 8-bit,01 = 9-bit,10= 10-bit),SDRAM列地址位數(shù)。查閱HY57V561620CT-H芯片手冊得知此值是9,所以。

          此寄存器的bit[23:11]可參考默認(rèn)值,或自己根據(jù)經(jīng)驗(yàn)修改,這里用0x008e0000,關(guān)鍵是最后的Refresh Counter(簡稱R_CNT,bit[10:0])的設(shè)置,2410手冊上給出了公式計(jì)算方法。SDRAM手冊上“8192 refresh cycles / 64ms”的描述,得到刷新周期為64ms/8192=7.8125us,結(jié)合公式,R_CNT=2^11 + 1 – 12 * 7.8125 = 1955。所以可得REFRESH=0x008e0000+1995=0x008e07a3。

          BANKSIZE:設(shè)置SDRAM的一些參數(shù)。其中BK76MAP(bit[2:0])配置BANK6/7映射的大小,可設(shè)置為010 = 128MB/128MB或001 = 64MB/64MB,只要比實(shí)際RAM大都行,因?yàn)閎ootloader和linux內(nèi)核都可以檢測可用空間的。BANKSIZE=0x000000b2。

          MRSRB6、MRSRB7:Mode register set register bank6/7

          可以修改的只有CL[6:4](CAS latency,000 = 1 clock, 010 = 2 clocks, 011=3 clocks),其他的全部是固定的(fixed),故值為0x00000030。這個(gè)CAS在BIOS中應(yīng)該也設(shè)置過吧,對PC的速度提升很明顯哦J

          至此,13個(gè)寄存器全部配置好了,下面就可以把代碼復(fù)制到SDRAM中執(zhí)行了,同樣的程序速度要比片內(nèi)SRAM運(yùn)行的慢不少。


          關(guān)鍵詞: SDRAM初始化過

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();