S3C2410處理器的擴展設(shè)計
1.需求分析
S3C2410是32位處理器(指令一次能夠操作32位數(shù)據(jù)(運算器一次可以處理32位數(shù)據(jù));通用寄存器多是32位寄存器;處理器內(nèi)部數(shù)據(jù)通道也是32位的;處理器外部數(shù)據(jù)總線寬度通常是32位的,地址總線寬度只是代表CPU尋址范圍大小,與CPU是多少位的無關(guān),也即32位CPU的地址總線不一定是32根的,例如對于s3c2410,每一個Bank對應(yīng)27根地址線,尋址能力為128MB,全部8個Bank總的尋址能力為1GB),所以為了最大限度的發(fā)揮其性能,內(nèi)存最好也是32位(指數(shù)據(jù)寬度)的,(當(dāng)然,在s3c2410的8個bank中,除了Bank0只能選擇16/32數(shù)據(jù)位寬外,其余的7個Bank均可以單獨選擇8/16/32位寬的存儲系統(tǒng))然而市面上很少有32位寬度的單片SDRAM,所以一般都采取兩片16位的SDRAM進行位擴展得到32位的SDRAM
2.設(shè)計電路圖
2410與K4S561632D相連
本系統(tǒng)擴展后的內(nèi)存系統(tǒng)為16M×32Bit的(此處32Bit是指數(shù)據(jù)位寬度,而非地址位,可以理解SDRAM數(shù)據(jù)位寬度與地址線的條數(shù)無關(guān),明白數(shù)據(jù)線和地址線的區(qū)別,對于下面地址線的連接方式的理解非常重要
3.初始化程序代碼
子函數(shù)說明:初始化內(nèi)存控制器
memsetup:
mov r1,#MEM_CTL_BASE
adrl r2,mem_cfg_val
add r3,r1,#52
1:
ldr r4,[r2],#4 @將地址為R2的內(nèi)存單元數(shù)據(jù)讀取到R4中,然后r2=r2 +4
str r4,[r1],#4 @將r4的數(shù)據(jù)寫入到r1的內(nèi)存單元,然后r1=r1+4
cmp r1,r3 @比較R1,R3是否設(shè)置完所有的13個寄存器。
bne 1b
S3C2410是32位處理器(指令一次能夠操作32位數(shù)據(jù)(運算器一次可以處理32位數(shù)據(jù));通用寄存器多是32位寄存器;處理器內(nèi)部數(shù)據(jù)通道也是32位的;處理器外部數(shù)據(jù)總線寬度通常是32位的,地址總線寬度只是代表CPU尋址范圍大小,與CPU是多少位的無關(guān),也即32位CPU的地址總線不一定是32根的,例如對于s3c2410,每一個Bank對應(yīng)27根地址線,尋址能力為128MB,全部8個Bank總的尋址能力為1GB),所以為了最大限度的發(fā)揮其性能,內(nèi)存最好也是32位(指數(shù)據(jù)寬度)的,(當(dāng)然,在s3c2410的8個bank中,除了Bank0只能選擇16/32數(shù)據(jù)位寬外,其余的7個Bank均可以單獨選擇8/16/32位寬的存儲系統(tǒng))然而市面上很少有32位寬度的單片SDRAM,所以一般都采取兩片16位的SDRAM進行位擴展得到32位的SDRAM
2.設(shè)計電路圖
2410與K4S561632D相連
本系統(tǒng)擴展后的內(nèi)存系統(tǒng)為16M×32Bit的(此處32Bit是指數(shù)據(jù)位寬度,而非地址位,可以理解SDRAM數(shù)據(jù)位寬度與地址線的條數(shù)無關(guān),明白數(shù)據(jù)線和地址線的區(qū)別,對于下面地址線的連接方式的理解非常重要
1: