在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            S3C2410的內(nèi)存映射

            作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
            這片文章主要介紹S3C2410內(nèi)存映射,主要參考2410的用戶手冊。

            我用的板子是基于三星的2410,三星的內(nèi)存片選有8個bank,這里所謂的bank我開始也不是很清楚,在網(wǎng)上搜了一通也不知所云,但是當(dāng)我看了 2410的用戶手冊后才有點(diǎn)明白,這里的bank就是片選,一個片選就是一個bank,在U-Boot中,配制的時候要配制SDRAM和FLASH的 bank數(shù),那么如果你的SDRAM或者FLASH就接了一個片選的時候,就定義為1就可以了,其他的類推。
            下面是2410的內(nèi)存映射圖,2410和其他的大部分的處理器一樣,支持NorFlash和NANDFlash啟動,而這兩種啟動方式內(nèi)存所映射的地址不怎么相同,我的板子沒有NANDFlash,所以就以從NorFlash啟動為例子了:
            ==============================================<-------0xFFFF_FFFF
            | NOT USED
            ==============================================<-------0x6000_0000
            | SFR Area (各個接口的控制寄存器)
            ==============================================<-------0x4800_0000
            ==============================================<-------0x4000_0FFF
            | BootSRAM (4KBytes)
            ==============================================<-------0x4000_0000
            | SROM/SDRAM nGCS7 (bank7)
            ==============================================<-------0x3800_0000
            | SROM/SDRAM nGCS6 (bank6)
            ==============================================<-------0x3000_0000
            | SROM nGCS5 (bank5)
            ==============================================<-------0x2800_0000
            | SROM nGCS4 (bank4)
            ==============================================<-------0x2000_0000
            | SROM nGCS3 (bank3)
            ==============================================<-------0x1800_0000
            | SROM nGCS2 (bank2)
            ==============================================<-------0x1000_0000
            | SROM nGCS1 (bank1)
            ==============================================<-------0x0800_0000
            | SROM nGCS0 (bank0)
            ==============================================<-------0x0000_0000
            上面的每個bank最大支持128M,除了bank0,其它的每個bank都支持8/16/32位操作,bank0只支持16/32位操作,在我的板子上,F(xiàn)lash接bank0,一共8M,16位,SDRAM接bank6,一個32M,32位。所以啟動的時候,CPU從0x0000_0000開始執(zhí)行,而在這上面的NorFlash,存放的是U-Boot,用于啟動Linux的。
            而我們目前所做的工作就是要把U-Boot移植成功,然后燒寫到該地址,假設(shè)你的板子的供應(yīng)商已經(jīng)提供了少些的工具,等到我們少些成功,我們就可以通過網(wǎng)絡(luò)來加載Linux,通過串口來調(diào)試了,至于怎么做的,我們慢慢來,以后的帖子會涉及到。。。
            在上面的存儲地址布局中,SFR Area就是各個接口控制器的地址,我們可以把它定義如下,來自華恒PPCboot上面的源代碼中的頭文件s3c2410.h:

            #define rBWSCON (*(volatile unsigned *)0x48000000)
            #define rBANKCON0 (*(volatile unsigned *)0x48000004)
            #define rBANKCON1 (*(volatile unsigned *)0x48000008)
            #define rBANKCON2 (*(volatile unsigned *)0x4800000C)
            #define rBANKCON3 (*(volatile unsigned *)0x48000010)
            #define rBANKCON4 (*(volatile unsigned *)0x48000014)
            #define rBANKCON5 (*(volatile unsigned *)0x48000018)
            #define rBANKCON6 (*(volatile unsigned *)0x4800001C)
            #define rBANKCON7 (*(volatile unsigned *)0x48000020)
            #define rREFRESH (*(volatile unsigned *)0x48000024)
            #define rBANKSIZE (*(volatile unsigned *)0x48000028)
            #define rMRSRB6 (*(volatile unsigned *)0x4800002C)
            #define rMRSRB7 (*(volatile unsigned *)0x48000030)

            #define rHcRevision (*(volatile unsigned *)0x49000000)
            #define rHcControl (*(volatile unsigned *)0x49000004)
            #define rHcCommonStatus (*(volatile unsigned *)0x49000008)
            #define rHcInterruptStatus (*(volatile unsigned *)0x4900000C)
            #define rHcInterruptEnable (*(volatile unsigned *)0x49000010)
            #define rHcInterruptDisable (*(volatile unsigned *)0x49000014)
            #define rHcHCCA (*(volatile unsigned *)0x49000018)
            #define rHcPeriodCuttendED (*(volatile unsigned *)0x4900001C)
            #define rHcControlHeadED (*(volatile unsigned *)0x49000020)
            #define rHcControlCurrentED (*(volatile unsigned *)0x49000024)
            #define rHcBulkHeadED (*(volatile unsigned *)0x49000028)
            #define rHcBuldCurrentED (*(volatile unsigned *)0x4900002C)
            #define rHcDoneHead (*(volatile unsigned *)0x49000030)
            #define rHcRmInterval (*(volatile unsigned *)0x49000034)
            #define rHcFmRemaining (*(volatile unsigned *)0x49000038)
            #define rHcFmNumber (*(volatile unsigned *)0x4900003C)
            #define rHcPeriodicStart (*(volatile unsigned *)0x49000040)
            #define rHcLSThreshold (*(volatile unsigned *)0x49000044)
            #define rHcRhDescriptorA (*(volatile unsigned *)0x49000048)
            #define rHcRhDescriptorB (*(volatile unsigned *)0x4900004C)
            #define rHcRhStatus (*(volatile unsigned *)0x49000050)
            #define rHcRhPortStatus1 (*(volatile unsigned *)0x49000054)
            #define rHcRhPortStatus2 (*(volatile unsigned *)0x49000058)

            #define rSRCPND (*(volatile unsigned *)0x4A000000)
            #define rINTMOD (*(volatile unsigned *)0x4A000004)
            #define rINTMSK (*(volatile unsigned *)0x4A000008)
            #define rPRIORITY (*(volatile unsigned *)0x4A00000C)
            #define rINTPND (*(volatile unsigned *)0x4A000010)
            #define rINTOFFSET (*(volatile unsigned *)0x4A000014)
            #define rSUBSRCPND (*(volatile unsigned *)0x4A000018)
            #define rINTSUBMSK (*(volatile unsigned *)0x4A00001C)

            #define rULCON0 (*(volatile unsigned *)0x50000000)
            #define rUCON0 (*(volatile unsigned *)0x50000004)
            #define rUFCON0 (*(volatile unsigned *)0x50000008)
            #define rUMCON0 (*(volatile unsigned *)0x5000000C)
            #define rUTRSTAT0 (*(volatile unsigned *)0x50000010)
            #define rUERSTAT0 (*(volatile unsigned *)0x50000014)
            #define rUFSTAT0 (*(volatile unsigned *)0x50000018)
            #define rUMSTAT0 (*(volatile unsigned *)0x5000001C)
            #define rUBRDIV0 (*(volatile unsigned *)0x50000028)
            #define rULCON1 (*(volatile unsigned *)0x50004000)
            #define rUCON1 (*(volatile unsigned *)0x50004004)
            #define rUFCON1 (*(volatile unsigned *)0x50004008)
            #define rUMCON1 (*(volatile unsigned *)0x5000400C)
            #define rUTRSTAT1 (*(volatile unsigned *)0x50004010)
            #define rUERSTAT1 (*(volatile unsigned *)0x50004014)
            #define rUFSTAT1 (*(volatile unsigned *)0x50004018)
            #define rUMSTAT1 (*(volatile unsigned *)0x5000401C)
            #define rUBRDIV1 (*(volatile unsigned *)0x50004028)
            #define rULCON2 (*(volatile unsigned *)0x50008000)
            #define rUCON2 (*(volatile unsigned *)0x50008004)
            #define rUFCON2 (*(volatile unsigned *)0x50008008)
            #define rUTRSTAT2 (*(volatile unsigned *)0x50008010)
            #define rUERSTAT2 (*(volatile unsigned *)0x50008014)
            #define rUFSTAT2 (*(volatile unsigned *)0x50008018)
            #define rUBRDIV2 (*(volatile unsigned *)0x50008028)
            #ifdef __BIG_ENDIAN
            #define rUTXH0 (*(volatile unsigned char *)0x50000023)
            #define rURXH0 (*(volatile unsigned char *)0x50000027)
            #define rUTXH1 (*(volatile unsigned char *)0x50004023)
            #define rURXH1 (*(volatile unsigned char *)0x50004027)
            #define rUTXH2 (*(volatile unsigned char *)0x50008023)
            #define rURXH2 (*(volatile unsigned char *)0x50008027)
            #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000023)=(unsigned char)(ch)
            #define RdURXH0() (*(volatile unsigned char *)0x50000027)
            #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004023)=(unsigned char)(ch)
            #define RdURXH1() (*(volatile unsigned char *)0x50004027)
            #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008023)=(unsigned char)(ch)
            #define RdURXH2() (*(volatile unsigned char *)0x50008027)
            #define UTXH0 (0x50000020+3)
            #define URXH0 (0x50000024+3)
            #define UTXH1 (0x50004020+3)
            #define URXH1 (0x50004024+3)
            #define UTXH2 (0x50008020+3)
            #define URXH2 (0x50008024+3)
            #else
            #define rUTXH0 (*(volatile unsigned char *)0x50000020)
            #define rURXH0 (*(volatile unsigned char *)0x50000024)
            #define rUTXH1 (*(volatile unsigned char *)0x50004020)
            #define rURXH1 (*(volatile unsigned char *)0x50004024)
            #define rUTXH2 (*(volatile unsigned char *)0x50008020)
            #define rURXH2 (*(volatile unsigned char *)0x50008024)
            #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)
            #define RdURXH0() (*(volatile unsigned char *)0x50000024)
            #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch)
            #define RdURXH1() (*(volatile unsigned char *)0x50004024)
            #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008020)=(unsigned char)(ch)
            #define RdURXH2() (*(volatile unsigned char *)0x50008024)
            #define UTXH0 (0x50000020)
            #define URXH0 (0x50000024)
            #define UTXH1 (0x50004020)
            #define URXH1 (0x50004024)
            #define UTXH2 (0x50008020)
            #define URXH2 (0x50008024)
            #endif

            #define rTCFG0 (*(volatile unsigned *)0x51000000)
            #define rTCFG1 (*(volatile unsigned *)0x51000004)
            #define rTCON (*(volatile unsigned *)0x51000008)
            #define rTCNTB0 (*(volatile unsigned *)0x5100000C)
            #define rTCMPB0 (*(volatile unsigned *)0x51000010)
            #define rTCNTO0 (*(volatile unsigned *)0x51000014)
            #define rTCNTB1 (*(volatile unsigned *)0x51000018)
            #define rTCMPB1 (*(volatile unsigned *)0x5100001C)
            #define rTCNTO1 (*(volatile unsigned *)0x51000020)
            #define rTCNTB2 (*(volatile unsigned *)0x51000024)
            #define rTCMPB2 (*(volatile unsigned *)0x51000028)
            #define rTCNTO2 (*(volatile unsigned *)0x5100002C)
            #define rTCNTB3 (*(volatile unsigned *)0x51000030)
            #define rTCMPB3 (*(volatile unsigned *)0x51000034)
            #define rTCNTO3 (*(volatile unsigned *)0x51000038)
            #define rTCNTB4 (*(volatile unsigned *)0x5100003C)
            #define rTCNTO4 (*(volatile unsigned *)0x51000040)

            本文引用地址:http://www.biyoush.com/article/201611/318881.htm


            關(guān)鍵詞: S3C2410內(nèi)存映

            評論


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

            關(guān)閉