新聞中心

S3C2440-SDRAM

作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
我板子的SDRAM是64M,從0x30000000"0x3fffffff,被BANK6選中。
//64MB
// 0x30000000 " 0x30ffffff : Download Area (16MB) Cacheable
// 0x31000000 " 0x33feffff : Non-Cacheable Area
// 0x33ff0000 " 0x33ff47ff : Heap & RW Area
// 0x33ff4800 " 0x33ff7fff : FIQ " User Stack Area
// 0x33ff8000 " 0x33fffeff : Not Useed Area
// 0x33ffff00 " 0x33ffffff : Exception & ISR Vector Table
我的開發(fā)板要求在0x32000000這個地址運(yùn)行,也就是在Non-Cacheable Area這段內(nèi)存區(qū)域。SDRAM內(nèi)部是一個存儲陣列,陣列就如同表格一樣,將數(shù)據(jù)“填進(jìn)去”。和表格的檢索原理一樣,先指定一個行(Row),再指定一個列(Column),就可以準(zhǔn)確的找到所需要的存單元格,這就是SDRAM尋址的基本原理。這個單元格被成為存儲單元,這個表格就是邏輯BANK(Logic Bank,下文稱L-Bank),SDRAM一般含有4個L-Bank。SDRAM有13個控制寄存器。
BWSCON總線寬度與等待狀態(tài)控制寄存器
BANKCON0"BANKCON7,BANK控制寄存器
REFRESH,刷新控制寄存器
BANKSIZE寄存器
MRSRB6,MRSRB7,模式寄存器集寄存器
下面完成一個程序讓跑馬燈程序在0x0地址運(yùn)行,如果是Nandflash啟動,也就是在steppingstone中運(yùn)行,把它搬到SDRAM中運(yùn)行。程序還是有問題有待于改進(jìn)。
SADD EQU 0x30000000
BWSCONS EQU 0x48000000
AREA |DATA|,CODE,READONLY
ENTRY
IMPORT LedMain
bl disableWTD
bl initmem
bl Copy_Sdram
ldr pc,=on_sdram
on_sdram
ldr sp,=0x34000000
bl LedMain
disableWTD
mov r1,#0x53000000
mov r2,#0
str r2,[r1]
mov pc,lr
initmem
ldr r1,=SDRAM_add
ldr r2,=BWSCONS
add r3,r2,#52
cp1
ldr r4,[r1],#4
str r4,[r2],#4
cmp r2,r3
bne cp1
mov pc,lr
Copy_Sdram
mov r1,#0
add r2,r1,#4096
ldr r4,=SADD
cp2
ldr r3,[r1],#4
str r3,[r4],#4
cmp r1,r2
bne cp2
mov pc,lr
ALIGN 4
SDRAM_add
DCD 0x22011110 ;BWSCON
DCD 0x00000700 ;BANKCON0
DCD 0x00000700 ;BANKCON1
DCD 0x00000700 ;BANKCON2
DCD 0x00000700 ;BANKCON3
DCD 0x00000700 ;BANKCON4
DCD 0x00000700 ;BANKCON5
DCD 0x00018005 ;BANKCON6
DCD 0x00018005 ;BANKCON7
DCD 0x008c07a3 ;REFRESH
DCD 0x000000b1 ;BANKSIZE
DCD 0x00000030 ;MRSRB6
DCD 0x00000030 ;MRSRB7
END
#define GPFCON (*(volatile unsigned *)0x56000050)
#define GPFDAT (*(volatile unsigned *)0x56000054)
#define GPFUP (*(volatile unsigned *)0x56000058)
int LedMain()
{
void Delay(unsigned int);
unsigned char ledtab[]={0xf7,0xef,0xdf,0xbf};
int i;
GPFUP&=0XFFFFFF87; //使能上拉F3-6
GPFCON&=0XC03f;
GPFCON|=0X1540; //將F3-6設(shè)為輸出口
while(1)
{
for(i=0;i<4;i++)
{
GPFDAT=ledtab[ i];
Delay(670);
}
}
return(0);
}
void Delay(unsigned int x )
{
unsigned int i,j,k;
for(i=0;i<=x;i++)
for(j=0;j<=0xff;j++)
for(k=0;k<=0xff;k++);
}


關(guān)鍵詞: S3C2440SDRAM存儲陣

評論


技術(shù)專區(qū)

關(guān)閉