<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C2410的內(nèi)存映射

          S3C2410的內(nèi)存映射

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

          我用的板子是基于三星的2410,三星的內(nèi)存片選有8個bank,這里所謂的bank我開始也不是很清楚,在網(wǎng)上搜了一通也不知所云,但是當(dāng)我看了 2410的用戶手冊后才有點明白,這里的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.ex-cimer.com/article/201611/318881.htm


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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();