亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1072 | 回復: 0
打印 上一主題 下一主題

[學習分享] TQ210:內(nèi)存配置 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-01-13 17:04 |只看該作者 |倒序瀏覽
  S5PV210有兩個獨立的DRAM控制器,分別是DMC0和DMC1,其中,DMC0最大支持512MByte,DMC1最大支持1GByte,而DMC0和DMC1又同時支持兩個片選CS0和CS1。S5PV210的內(nèi)存模塊相比2440和6410來講要更加復雜一些,要想正確的配置S5PV210的內(nèi)存,應該仔細閱讀芯片手冊相關部分,在配置參數(shù)時也應該適當?shù)拈喿x下內(nèi)存芯片的手冊。這部分的寄存器和配置過程比較復雜(但是不難),我只簡單的講一下我配置時遇到的問題。

  一、 接線原理

  我的開發(fā)板是TQ210,開發(fā)板上有8片128M*8bits的內(nèi)存芯片,從原理圖上可以看到,其中4片并聯(lián)接在DMC0上,另外四片并聯(lián)在DMC1上,這里我只貼出一個鏈接方式,因為8片都是一樣的,只是前四片跟后四片掛載的位置不同。

  



  我們可以注意到,TQ210是將四片K4T1G084QQ的地址線并聯(lián),將數(shù)據(jù)線串聯(lián),這樣正好是32位數(shù)據(jù)。另外,我們還可以看到K4T1G084QQ只接了14根地址線,這是因為K4T1G084QQ有14根行地址,10根列地址,這14根線是復用的。但是K4T1G084QQ有8個bank,而DMC只有兩根bank線,為此,S5PV210給出了以下幾個解決方案:

  



  根據(jù)注釋3,我們可以看到當S5PV210掛載8bank內(nèi)存時CS1復用為BANK2,這中狀態(tài)下S5PV210相當于只有一根片選引腳CS0,這樣就可以理解了,我們從這里也可以知道配置num_chip參數(shù)時可以設置為1(經(jīng)測試設置為2也可以,不過MEMCONFIG1的配置沒有意思,因為8bank時只有CS0而沒有CS1)。對于8banks且15根行地址的內(nèi)存芯片也有一套解決方案,所以,一定要注意下面的注釋,我當時配置時閱讀手冊就不夠仔細,沒有看下面的注釋,結(jié)果卡了我一上午,沒有弄明白內(nèi)存芯片的接線原理,甚至認為開發(fā)板接線接錯了。

  二、 地址映射

  S5PV210的DMC跟6410和2440的DMC有個重要區(qū)別,S5PV210可以控制內(nèi)存地址映射,DMC0的地址空間為0x2000,0000~0x3fff,ffff,DMC1的地址空間為0x4000,0000~0x7fff,ffff,DMC可以通過配置寄存器來使內(nèi)存芯片映射到其內(nèi)存段內(nèi)的適當位置。這個配置在MEMCONFIG寄存器中,這個地址映射讓我糾結(jié)了很長一段時間,最后還是查資料看明白的。

  如果設置chip_base為0x20:

  (1)我們掛載的內(nèi)存為128M,那么這個chip_mask應該設置為0xF8

  (2)我們掛載256M內(nèi)存時,chip_mask應該設置為0xF0

  (3)我們掛載512M時,chip_mask應該設置為0xE0

  (4)我們掛載1GB內(nèi)存時,chip_mask就應該設置為0xC0。

  以DMC0為例,當DMC0接收到來自AXI的0x2000,0000~0x3fff,ffff內(nèi)的地址時,會作如下處理:

  (1)將AXI地址的高8位與chip_mask相與得到結(jié)果,記為X。

  (2)將X分別與MEMCONFIG0和MEMCONFIG1的chip_base相比較,如果相等,則打開相應的片選。

  假如掛載的內(nèi)存為128M,且CS0和CS1上分別掛了一片,那么128M=128*1024*1024=0x8000000,則128M內(nèi)存的偏移范圍應該是0x0000,0000~0x07ff,ffff,高位剩余5位,那么,我們把MEMCONFIG0的chip_base設置為0x20,chip_mask設置為0xF8,為了保持內(nèi)存連續(xù),則需要將MEMCONFIG1的chip_base設置為0x28,chip_mask設置為0xF8,當AXI發(fā)來的地址為0x23xx,xxxx時,0x23&0xF8得到0x20,所以,會打開片選CS0,當AXI發(fā)來的地址為0x28xx,xxxx時,0x28&0xF8得到0x28,所以,會打開片選CS1,依此類推。

  特別的,當載在的內(nèi)存芯片為8bank(8bank內(nèi)存芯片一般為14/15行地址,10列地址,即容量一般為512M或者1G)時,由于CS1為bank2引腳,為了保持CS0時鐘處于片選狀態(tài),對于512M內(nèi)存來講需要將chip_mask設置為0xE0,這是因為512M=512*1024*1024=0x2000,0000,也就是說,512M內(nèi)存的偏移應該為0x0000,0000~0x1fff,ffff,所以高位剩余3位,即0xE0,當然了,如果內(nèi)存為1G=1024*1024*1024=0x4000,0000,即偏移為0x0000,0000~0x3fff,ffff,高位剩余2為,故設置chip_mask為0xC0。這樣,就會計算偏移這兩個值了。

  三、 配置流程

  內(nèi)存芯片的配置比較復雜,好在芯片手冊上給出了常用內(nèi)存類型的初始化序列,TQ210的內(nèi)存是DDR2的,可以按照如下順序進行初始化:

  源文件下載地址請見天嵌官網(wǎng):


  上面就是手冊上給出的DDR2型內(nèi)存芯片的初始化序列,但是單純的根據(jù)上面的步驟配置可能有些困難,這時,我們可以參考u-boot的內(nèi)存初始化代碼來初始化內(nèi)存,最后你會發(fā)現(xiàn)u-boot的操作順序跟上面是完全一致的。

  四、 內(nèi)存初始化代碼

  我將我配置內(nèi)存的代碼上傳到CSDN的下載空間,如果需要的話可以去我資源里下載,是C語言版的。

  五 、USB啟動

  S5PV210的USB啟動過程跟Nand啟動方式不一樣,S5PV210以USB方式啟動時會先將三星提供的一個固件程序下載到0xd0020010處運行,然后,再將用戶代碼下載0x23e00000處運行,也就是說,固件程序完成了內(nèi)存的初始化,因為我們的代碼位于0x23e00000處。而我們的代碼中再次配置內(nèi)存時會重置內(nèi)存,下載到內(nèi)存中的代碼也就丟失了,所以程序執(zhí)行到內(nèi)存初始化函數(shù)就會掛掉。

  為了證明上面的假設,我在代碼中加上一段程序,該程序?qū)?nèi)存的中代碼拷貝到iram的16K以后的位置上(直接拷貝到0xd0020000處有問題,我是拷貝到了0xd0024000處,現(xiàn)在還不知道什么原因),然后將代碼跳轉(zhuǎn)到IRAM中,如果代碼可以正常運行就可以證明內(nèi)存初始化部分正常,實驗結(jié)果是肯定的,下面總結(jié)下:

  S5PV210以USB方式啟動時用戶代碼是下載到內(nèi)存中的(0x23e00000處),要使代碼以USB方式啟動時正常運行,應該注意以下兩點:

  (1)如果是位置相關的代碼,連接地址應該鏈接到0x23e00000,如果是位置無關碼,可以隨便指定連接地址。

  (2)用戶代碼需要檢驗自己運行時的位置,如果運行在內(nèi)存中則需跳過內(nèi)存初始化,根據(jù)需要決定是否需要代碼重定位。

1_副本.jpg (60.32 KB, 下載次數(shù): 33)

1_副本.jpg
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP