新聞中心

        S3C2440-SDRAM

        作者: 時間:2016-12-02 來源:網絡 收藏
        我板子的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
        我的開發板要求在0x32000000這個地址運行,也就是在Non-Cacheable Area這段內存區域。SDRAM內部是一個存儲陣列,陣列就如同表格一樣,將數據“填進去”。和表格的檢索原理一樣,先指定一個行(Row),再指定一個列(Column),就可以準確的找到所需要的存單元格,這就是SDRAM尋址的基本原理。這個單元格被成為存儲單元,這個表格就是邏輯BANK(Logic Bank,下文稱L-Bank),SDRAM一般含有4個L-Bank。SDRAM有13個控制寄存器。
        BWSCON總線寬度與等待狀態控制寄存器
        BANKCON0"BANKCON7,BANK控制寄存器
        REFRESH,刷新控制寄存器
        BANKSIZE寄存器
        MRSRB6,MRSRB7,模式寄存器集寄存器
        下面完成一個程序讓跑馬燈程序在0x0地址運行,如果是Nandflash啟動,也就是在steppingstone中運行,把它搬到SDRAM中運行。程序還是有問題有待于改進。
        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設為輸出口
        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++);
        }


        關鍵詞: S3C2440SDRAM存儲陣

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 大冶市| 安福县| 温宿县| 绥芬河市| 丰城市| 裕民县| 吉水县| 京山县| 探索| 曲阳县| 吴江市| 道孚县| 白沙| 海兴县| 西丰县| 呼伦贝尔市| 安阳市| 赣榆县| 阳原县| 阿合奇县| 普兰店市| 瓦房店市| 皮山县| 娄底市| 慈溪市| 台北县| 通山县| 固安县| 张家界市| 页游| 郑州市| 喜德县| 中西区| 淮北市| 江达县| 时尚| 鄂尔多斯市| 万年县| 阿拉尔市| 新源县| 吴忠市|