s3c2440的内存管理机制
1.???? Nand Flash、Nor Flash、SDRAM地址區(qū)別
Nand Flash:ROM,容量大,適用于數(shù)據(jù)存儲(chǔ),ARM不能從Nand中直接啟動(dòng),需要把程序從Nand的前4k空間中拷貝到SDRAM,然后再?gòu)?span face="Calibri">SDRAM中啟動(dòng)。
Nor Flash:ROM,容量小,適用于程序存儲(chǔ),ARM可以從Nor Flash中直接啟動(dòng)。
SDRAM: RAM,容量大,操作系統(tǒng)等大型軟件都運(yùn)行在SDRAM中。
?
2.???? S3c2440尋址空間:
S3C2440有27根地址線ADDR[26:0],8根片選信號(hào)ngcs0-ngcs7,對(duì)應(yīng)bank0-bank7,當(dāng)訪問(wèn)bankx的地址空間,ngcsx引腳為低電平,選中外設(shè)。
2^27=2^7 * 2^10 * 2^10 = 128Mbyte
8*128Mbyte = 1Gbyte
所以S3C2440總的尋址空間是1Gbyte。(也就是最高地址0x40000000)
尋址空間如下圖:
?
3.???? SDRAM的尋址原理:
SDRAM內(nèi)部是一個(gè)存儲(chǔ)陣列。可以把它想象成一個(gè)表格。和表格的檢索原理一樣,先指定行,再指定列,就可以準(zhǔn)確找到所需要的存儲(chǔ)單元。這個(gè)表格稱(chēng)為邏輯BANK。目前的SDRAM基本都是4個(gè)BANK。尋址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。這就是SDRAM的尋址原理。
4.???? 內(nèi)存片(HY57V561620F)的連接方式:
HY57V561620F的容量是16M尋址*16位寬=256Mbit。
TQ2440中使用了兩片內(nèi)存,總?cè)萘繛?span face="Calibri">2*32M=64Mbyte。
A0-A12是地址線:行地址、列地址復(fù)用,行地址使用A0-A12(13條),列地址使用A0-A8(9條)。
BA0-BA1是bank選擇引腳。(bank選擇與行地址(row address)同時(shí)下發(fā),在列地址下發(fā)時(shí),有其他用途)。
?
這個(gè)SDRAM有
13根行地址線?? RA0-RA12
9根列地址線??? CA0-CA8
2根BANK選擇線 BA0-BA1
SDRAM的地址引腳是復(fù)用的,在讀寫(xiě)SDRAM存儲(chǔ)單元時(shí),操作過(guò)程是將讀寫(xiě)的地址分兩次輸入到芯片中,每一次都由同一組地址線輸入。兩次送到芯片上去的地址分別稱(chēng)為行地址和列地址。它們被鎖存到芯片內(nèi)部的行地址鎖存器和列地址鎖存器。/RAS是行地址鎖存信號(hào),該信號(hào)將行地址鎖存在芯片內(nèi)部的行地址鎖存器中;/CAS是列地址鎖存信號(hào),該信號(hào)將列地址鎖存在芯片內(nèi)部的列地址鎖存器中。
SDRAM的A0接S3C2440的ADDR2,很多初學(xué)者都對(duì)這里又疑問(wèn)。A0為什么不接ADDR0?
要理解這種接法,首先要清楚在CPU的尋址空間中,字節(jié)(8位)是表示存儲(chǔ)容量的唯一單位。
用2片HY57V561620F擴(kuò)展成32位SDRAM,可以認(rèn)為每個(gè)存儲(chǔ)單元是4個(gè)字節(jié)。因此當(dāng)它的地址線A1:A0=01時(shí),處理器上對(duì)應(yīng)的地址線應(yīng)為ADDR3:ADDR2=01(32位SDRAM每4字節(jié)一個(gè)地址,對(duì)應(yīng)于CPU)(因?yàn)?/span>CPU的尋址空間是以Byte為單位的)。所以SDRAM的A0引腳接到了S3C2440的ADDR2地址線上。
(可以看成,ARM的尋址地址=CPU的地址*4,因?yàn)閷?duì)CPU來(lái)講相當(dāng)于沒(méi)讀一次都相隔4byte)。
?
同理,如果用1片HY57V561620F,數(shù)據(jù)線是16位,因?yàn)橐粋€(gè)存儲(chǔ)單元是2個(gè)字節(jié),這時(shí)SDRAM的A0要接到S3C2440的ADDR1上。
?也就是說(shuō)SDRAM的A0接S3C2440的哪一根地址線是根據(jù)整個(gè)SDRAM的數(shù)據(jù)位寬來(lái)決定的。
上面的接線圖上,BA0,BA1接ADDR24,ADDR25,為什么用這兩根地址線呢?
BA0~BA1代表了SDRAM的最高地址位。因?yàn)镃PU的尋址空間是以字節(jié)(Byte)為單位的,本系統(tǒng)SDRAM容量為64MByte,那就需要A25~A0(64M=2^26)地址線來(lái)尋址,所以BA1~BA0地址線應(yīng)該接到2440的ADDR25~ADDR24引腳上。
13根行地址線+9根列地址線 = 22根。另外HY57V561620F一個(gè)存儲(chǔ)單元是2個(gè)字節(jié),相當(dāng)于有了23根地址線。BA0,BA1是最高地址位,所以應(yīng)該接在ADDR24,ADDR25上。
?
5.???? 啟動(dòng)過(guò)程中尋址方式
系統(tǒng)啟動(dòng)取決于S3c2440 CPU的OM0、OM1兩個(gè)引腳的取值:
因此在TQ2440中,直接將OM1接地(永遠(yuǎn)為0),OM0作為撥碼開(kāi)關(guān),來(lái)選擇是從nand啟動(dòng)(接地,0)還是從nor 32-bit啟動(dòng)(懸空,1)。
6.???? Nor Flash引腳圖(EN29LV160AB-70TCP)
地址線A0-A19,共20條;
數(shù)據(jù)線D0-D15,共16條(D15為數(shù)據(jù)、地址復(fù)用);
當(dāng)47腳BYTE#配置為字節(jié)byte模式時(shí)(0),D15用于A-1地址線,所以尋址空間為20+1=21條,也就是2M byte。
當(dāng)47腳BYTE#配置為雙字word模式時(shí)(1),D0-D15都用于數(shù)據(jù)線,尋址空間為20條,1M,數(shù)據(jù)線D0-D15有效,數(shù)據(jù)量為1M*2=2Mbyte。(TQ2440采用此模式)
7.???? 重要信息地址
| ? | 標(biāo)示 | 地址 | 含義 |
| 寄存器 | 寄存器范圍 | 0x48000000~0x5fffffff | ? |
| ? | S3C24X0_GPIO_BASE | 0x56000000 | Gpio各寄存器基地址 |
| ? | S3C2410_SDI_BASE | 0x5A000000 | SDI |
| ? | S3C24X0_USB_DEVICE_BASE | 0x52000140 | 用戶(hù)設(shè)備 |
| ? | S3C2410_NAND_BASE | 0x4E000000 | Nand |
| ? | S3C24X0_LCD_BASE | 0x4D000000 | LCD |
| ? | S3C24X0_INTERRUPT_BASE | 0x4A000000 | 中斷 |
| ? | ? | ? | ? |
| 運(yùn)行數(shù)據(jù) | _bss_start | 0x33db6990 | ? |
| ? | _armboot_start | 0x33d80000 | ? |
| ? | CFG_ENV_SIZE | 0x20000 | ? |
| ? | FREE_RAM_SIZE | 0x3d1df7c | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
?
| 宏觀內(nèi)存范圍 | Nor Flash(nor 啟動(dòng)方式) | 0x00000000~0x001fffff | Nor flash位于bank0。 2Mbyte容量。 |
| ? | CPU內(nèi)部SRAM(Nand Flash啟動(dòng)方式) | 0x00000000~ | Nand flash啟動(dòng)時(shí)拷貝到SRAM中運(yùn)行 |
| ? | 外部SDRAM | 0x30000000~0x34000000 | 64Mbyte容量 |
| ? | Nand Flash | NULL | Nand Flash不直連總線,通過(guò)控制器訪問(wèn)。 |
?
?
內(nèi)存分配
| SDRAM地址end | @0x34000000 |
| Bss_start | 此上,為bss數(shù)據(jù)區(qū) |
| Armboot_start | 此上,為uboot映像,大概200k |
| CFG_MALLOC_LEN | 256k |
| GLB_DATA_SIZE | 128byte+4byte |
| IRQ_stack | 4k |
| FIQ_stack | 4k |
| 用戶(hù)棧區(qū) | 128k |
| 空閑地址空間 | 大概61Mbyte(SDRAM內(nèi)存總共64M). |
| SDRAM地址start | @0x30000000 |
| Nor /nand flash….. | ? |
| ? | ? |
?
8.???? 名詞解釋
| ? | ? | ? |
| nGCS0 | 芯片選擇(片選)寄存器 | nGCS0-nGCS7 |
| ? | ? | ? |
| ? | ? | ? |
總結(jié)
以上是生活随笔為你收集整理的s3c2440的内存管理机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 淘汰LTPO!天马发布全新低频OLED屏
- 下一篇: 编译zlib库