<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S3C2440與SDRAM NorFlash NandFlash連線(xiàn)分析

S3C2440與SDRAM NorFlash NandFlash連線(xiàn)分析

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏

一、SDRAM(HY57V561620F)連線(xiàn)分析

1、S3C2440有27根地址線(xiàn)ADDR[26:0],8根片選信號ngcs0-ngcs7,對應bank0-bank7,當訪(fǎng)問(wèn)bankx的地址空間,ngcsx引腳為低電平,選中外設。

本文引用地址:http://dyxdggzs.com/article/201611/317483.htm

2^27=128MByte, 8*128Mbyte = 1Gbyte,所以S3C2440總的尋址空間是1Gbyte。但市面上很少有32位寬度的單片SDRAM,一般選擇2片16位SDRAM擴展得到32位SDRAM.

2、這里選擇的SDARM是HY57V561620F,4Mbit * 4bank *16I/O,共32Mbyte。

首先了解下SDRAM的尋址原理。SDRAM內部是一個(gè)存儲陣列,可以把它想象成一個(gè)表

格。和表格的檢索原理一樣,先指定行,再指定列,就可以準確找到所需要的存儲單元。這個(gè)表格稱(chēng)為邏輯BANK。目前的SDRAM基本都是4個(gè)BANK。尋址的流程就是先指定BANK地址,再

指定行地址,最后指定列地址。這就是SDRAM的尋址原理。存儲陣列示意圖如下:

查看HY57V561620F的資料,可知這個(gè)SDRAM有13根行地址線(xiàn)RA0-RA12, 9根列地址線(xiàn)CA0-CA8,2根BANK選擇線(xiàn)BA0-BA1。

SDRAM的地址引腳是復用的,在讀寫(xiě)SDRAM存儲單元時(shí),操作過(guò)程是將讀寫(xiě)的地址分兩次輸入到芯片中,每一次都由同一組地址線(xiàn)輸入。兩次送到芯片上去的地址分別稱(chēng)為行地址和列地址。它們被鎖存到芯片內部的行地址鎖存器和列地址鎖存器。

/RAS是行地址鎖存信號,該信號將行地址鎖存在芯片內部的行地址鎖存器中;

/CAS是列地址鎖存信號,該信號將列地址鎖存在芯片內部的列地址鎖存器中。

地址連線(xiàn)如下圖:

問(wèn)題1:SDRAM:的A0接S3C2440的ADDR2,A0 為什么不接ADDR0?

要理解這種接法,首先要清楚在CPU的尋址空間中,字節(8位)是表示存儲容量的唯一單位。用2片HY57V561620F擴展成32位SDRAM,可以認為每個(gè)存儲單元是4個(gè)字節。因此當它的地址線(xiàn)A1:A0=01時(shí),處理器上對應的地址線(xiàn)應為ADDR3:ADDR2=01(因為CPU的尋址空間是以Byte為單位的)。所以SDRAM的A0引腳接到了S3C2440的ADDR2地址線(xiàn)上。同理,如果用1片HY57V561620F,數據線(xiàn)是16位,因為一個(gè)存儲單元是2個(gè)字節,這時(shí)SDRAM的A0要接到S3C2440的ADDR1上。

就是說(shuō)SDRAM的A0接S3C2440的哪一根地址線(xiàn)是根據整個(gè)SDRAM的數據位寬來(lái)決定的。

問(wèn)題2:上圖接線(xiàn)中,BA0,BA1接ADDR24,ADDR25,為什么用這兩根地址線(xiàn)呢?

BA0~BA1代表了SDRAM的最高地址位。因為CPU的尋址空間是以字節(Byte)為單位的,本系統SDRAM容量為64MByte,那就需要A25~A0(64M=2^26)地址線(xiàn)來(lái)尋址,所以BA1~BA0地址線(xiàn)應該接到S3C2440的ADDR25~ADDR24引腳上。

13根行地址線(xiàn)+ 9根列地址線(xiàn)= 22根地址線(xiàn)。另外HY57V561620F一個(gè)存儲單元是2個(gè)字節(16I/O),相當于有了23根地址線(xiàn)。BA0,BA1是最高地址位,所以應該接在A(yíng)DDR24,ADDR25上。

就是說(shuō)SDRAM的BA0,BA1接S3C2440的哪幾根地址線(xiàn)是根據整個(gè)SDRAM的容量來(lái)決定的。

二、NOR FLASH(AM29LV160DB)的接線(xiàn)分析

NOR FLASH的地址線(xiàn)和數據線(xiàn)是分開(kāi)的。AM29LV160DB是一個(gè)2Mbyte的NOR FLASH,分區結構是:

1個(gè)16Kbyte扇區,2個(gè)8Kbyte扇區,1個(gè)32Kbyte扇區,31個(gè)64Kbyte扇區(字節模式);

1個(gè)8Kbyte扇區,2個(gè)4Kbyte扇區,1個(gè)16Kbyte扇區,31個(gè)32Kbyte扇區(半字模式);

共35個(gè)扇區。引腳如下:


設計原理圖如下:

說(shuō)明:

AM29LV160DB第47腳是BYTE#腳,BYTE#接高電平時(shí),器件數據位是16位,接低電平時(shí),數據位是8位。

上圖BYTE#接VCC,D0-D15做為數據輸入輸出口。A0-A19是地址線(xiàn),在半字模式下,D0-D15做為數據輸入輸出口。因為數據位是16位,A0-A19可以選擇2^20 = 1M *2BYTE = 2Mbyte。正好是AM29LV160DB的容量。

S3C2440的ADDR1要接AM29LV160DB的A0。上圖中AM29LV160DB的A20,A21是空腳,分別接的是LADDR21,LADDR22。這應該是為了以后方便擴展NOR FLASH的容量。LADDR21,LADDR22對AM29LV160DB是沒(méi)用的。

當BYTE#接低電平時(shí),D0-D7做為8位數據輸入輸出口,D15做為地址線(xiàn)A-1。相當于有了A-1,A0-A19共21根地址線(xiàn)。這個(gè)時(shí)候S3C2440的ADDR0應該接在D15(A-1)………,ADDR20接A19。21根地址線(xiàn)的尋址空間是2^21 = 2Mbyte。正好是AM29LV160DB的容量。

三、與NAND FLASH(K9F1208)的接線(xiàn)分析

1、K9F1208結構如下圖

K9F1208位寬是8位(I/O0~I/O7)。

一頁(yè):1Page = 512byte + 16byte最后16byte是用于存儲校驗碼和其他信息用的,不能存放實(shí)際的數據。

一塊有32 page:1block = 32* (512byte + 16byte) =(16k+512)byte

K9F1208有4096個(gè)塊:

1 device = 4096 *32* (512byte + 16byte) = (64M+2M)byte,總共有64Mbyte可操作的芯片容量

NAND FLASH以頁(yè)為單位讀寫(xiě)數據,以塊為單位擦除數據。

其引腳如下:

S3C24440和K9F1208的接線(xiàn)圖如下:

當選定一個(gè)NAND FLASH的型號后,要根據選定的NAND FLASH來(lái)確定S3C2440的NCON,GPG13,GPG14,GPG15的狀態(tài)。

下圖是S3C2440中4個(gè)腳位狀態(tài)的定義

K9F1208的一頁(yè)是512byte,所以NCON接低電平,GPG13接高電平。

K9F1208需要4個(gè)尋址命令,所以GPG14接高電平

K9F1208的位寬是8,所以GPG15接低電平。

NAND FLASH尋址:

對K9F1208來(lái)說(shuō),地址和命令只能在I/O[7:0]上傳遞,數據寬度是8位。地址傳遞分為4步,如下圖:

說(shuō)明:

第1步發(fā)送列地址,既選中一頁(yè)512BYTE中的一個(gè)字節。512byte需要9bit來(lái)選擇,這里只用了A0 -A7,原因是把一頁(yè)分成了2部分,每部分256字節。通過(guò)發(fā)送的讀命令字來(lái)確定是讀的前256字節還是后256字節。

當要讀取的起始地址(Column Address)在0~255內時(shí)我們用00h命令,

當讀取的起始地址是在256~511時(shí),則使用01h命令。

一個(gè)塊有32頁(yè),用A9-A13共5位來(lái)選擇一個(gè)塊中的某個(gè)頁(yè)。

總共有4096個(gè)塊,用A14-A25共12位來(lái)選擇一個(gè)塊。

K9F1208總共有64Mbyte,需要A0-A25共26個(gè)地址位。

例如:要讀NAND FLASH的第5000字節開(kāi)始的內容。

把5000分解成列地址和行地址。

Column_address = 5000%512 = 392

因為column_address>255,所以用01h命令讀

Page_address = (5000>>9) = 9

發(fā)送命令和參數的順序是:

NFCMMD = 0x01;從后256字節開(kāi)始讀

NFADDR = column_address & 0xff;取column_address的低8位送到數據線(xiàn)

NFADDR = page_address & 0xff;發(fā)送A9-A16

NFADDR = (page_address >>8) & 0xff;發(fā)送A17-A24

NFADDR = (page_address >> 16) & 0xff;發(fā)送A25

上面的NFCMMD,NFADDR.是S3C2440的NAND FLASH控制寄存器。讀取的數據會(huì )放在NFDATA中。


四、S3C2440開(kāi)發(fā)板中SDRAM NOR NAND地址分配

(1)SDRAM地址分配

這是S3C2440的存儲器地址分配圖,SDARM只能接在BANK6或BANK7。

從分析SDRAM接線(xiàn)圖可以看到,SDRAM接的是ngcs6,也就是接在BANK6,因為選擇的SDRAM是2片32Mbyte,總容量是64Mbyte,所以SDRAM的地址范圍是0x3000 0000 --- 0x33ff ffff。

(2)NORFLASH地址分配

S3C2440啟動(dòng)方式如下:

上文講述的NORFLASH是16bit數據位寬,選擇從NOR FLASH啟動(dòng),所以

OM0接VDD,OM1接VSS。

從分析NOR FLASH接線(xiàn)的接線(xiàn)圖可看到,NOR FLASH接的ngcs0,也就是接在BANK0。因為選擇NORFLASH是2Mbyte,所以NOR FLASH的地址范圍是0x0000 0000 --- 0x001f ffff。

上電時(shí),程序會(huì )從Norflash中啟動(dòng),ARM直接取Norflash中的指令運行。

(3)NANDFLASH地址分配

最后來(lái)看NANDFLASH,NANDFLASH以頁(yè)為單位讀寫(xiě),要先命令,再給地

址,才能讀到NAND的數據。NANDFLASH是接在NANDFLASH控制器上而不是系統總線(xiàn)上,所以沒(méi)有在8個(gè)BANK中分配地址。如果S3C2440被配置成從Nand Flash啟動(dòng), S3C2440的Nand Flash控制器有一個(gè)特殊的功能,在S3C2440上電后,Nand Flash控制器會(huì )自動(dòng)的把Nand Flash上的前4K數據搬移到4K內部SRAM中,系統會(huì )從起始地址是0x0000 0000的內部SRAM啟動(dòng)。

程序員需要完成的工作,是把最核心的啟動(dòng)程序放在Nand Flash的前4K中,也就是說(shuō),你需要編寫(xiě)一個(gè)長(cháng)度小于4K的引導程序,作用是將主程序拷貝到SDRAM中運行。由于NandFlash控制器從NandFlash中搬移到內部RAM的代碼是有限的,所以在啟動(dòng)代碼的前4K里,我們必須完成S3C2440的核心配置以及把啟動(dòng)代碼(U-BOOT)剩余部分搬到RAM中運行。

至于將2440當做單片機玩裸跑程序的時(shí)候,就不要做這樣的事情,當代碼小于4K的時(shí)候,只要下到nand flash中就會(huì )被搬運到內部RAM中執行了。

不管是從NOR FLASH啟動(dòng)還是從NANDFLASH啟動(dòng),ARM都是從0x0000 0000地址開(kāi)始執行的。




關(guān)鍵詞: S3C2440SDRAMNorFlashNandFlas

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>