內存是代碼的執行空間,程序在運行之前由操作系統裝載入內存之中,內存是RAM,可以通過地址去定位一個字節的數據,CPU在執行程序時將PC的值設置為程序在內存中的起始地址,CPU會依次從內存中取指、譯碼、執行。 在內存沒有被初始化之前,內存好比是沒有建好的房子,是不能讀取和存儲數據的,因此想讓程序代碼在內存中運行,必須進行內存的初始化。
NORFLSH:支持芯片內執行,不必再把代碼讀到系統RAM中,可以隨機尋址。成本較高。
NANDFLSH:高存儲密度,不支持XIP,成本較低。壞塊。
S3C2440存儲器地址段:
27根地址線,最多可以尋址128MB,而由于8個BANK,故而可以尋址1GB.nGCSx引腳低電平選中外接設備。
NORFLASH啟動,將NANDFLASH焊接在BANK0,系統上電后,CPU從BANK0的開始地址0x00000000開始取值執行。
跳線從NANDFLASH啟動,系統上電后,CPU自動將NANDFLASH里面前4KB數據復制到stepping stone.
BANK0-BANK5可以焊接ROM或SRAM,BANK6-BANK7焊接ROM、SRAM、SDRAM。
S3C2440為32位芯片,理論上可以達到4GB的尋址范圍,除去上述8個BANK共1GB用于連接設備外,還有一部分地址空間用于設備特殊功能寄存器。其余地址沒有使用。
內存工作原理:
兩個引腳BA0和BA1,用于選擇4個L-BANK.內存外界地址線A0-A12共13根,可尋址8MB內存空間,由于行列地址線的分時復用 故而可尋址64MB。先送行地址,再送列地址。
尋址總線從 A2開始是因為內存地址都是按照字節對齊的。A2-A14尋址總線.A24,A25為L-BANK片選信號。Dn為數據總線。
存儲芯片位寬為16位2個字節,而操作系統里最小字節為1.因此引入/LDQM和/UDQM控制高低位的讀寫,低電平有效。
讀 操作:

預充電操作:
預充電為充電重寫和關閉操作行過程,發送預充電信號時,意味著先執行存儲體充電,然后關閉當前的L-BANK操作行。預充電在讀寫操作之后執行。
SDRAM突發操作:
是一種在同一行中相鄰的存儲單元連續進行數據傳輸的方式,除了第一筆數據的傳輸需要若干個周期外【Trcd+CL】,以后每個數據只需要一個周期即可。
讀操作總結:
發芯片有效命令(ACTIVE),鎖定相應的L-BANK地址(BA0 BA1)和行地址(A0-A12).芯片激活命令后等待大于tRCD時間后發出讀命令。CL個時鐘周期后,數據依次出現在數據總線上。讀取最后向SDRAM發預充電(precharge)命令,以關閉已經激活的L-BANK。等待tRP時間后開始下一次的讀寫。讀操作支持突發模式,突發長度為1、2、4、8可選。
寫操作:
發芯片有效命令(ACTIVE),鎖定相應的L-BANK地址(BA0 BA1)和行地址(A0-A12).芯片激活命令后等待大于tRCD時間后發出寫命令。待寫入數據依次出現在數據總線DQ上。在最后一個數據寫入后,延遲tWR時間向SDRAM發預充電(precharge)命令,以關閉已經激活的頁。等待tRP時間后開始下一次的讀寫。讀操作支持突發模式,突發長度為1、2、4、8可選。
SDRAM刷新:
預充電是不定期的對一行或所有L-BANK中的工作行進行操作;刷新是周期性對所有行進行操作。這里的行是指所有L-BANK中地址相同的行。64ms刷新一次。
刷新操作分為自動刷新和自刷新。每次刷新占用的時間為9個時鐘周期。自刷新主要用于休眠模式低功耗狀態下的數據保存。自動刷新是正常模式。
|