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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > S3C2410處理器的擴(kuò)展設(shè)計

          S3C2410處理器的擴(kuò)展設(shè)計

          作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          1. S3C2410處理器擴(kuò)展內(nèi)存32MB的SDRAM
          1.需求分析
          S3C2410是32位處理器(指令一次能夠操作32位數(shù)據(jù)(運(yùn)算器一次可以處理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進(jìn)行位擴(kuò)展得到32位的SDRAM
          2.設(shè)計電路圖
          2410與K4S561632D相連

          本系統(tǒng)擴(kuò)展后的內(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 @如果沒有復(fù)制完,就繼續(xù)
          mov pc,lr @復(fù)制完后返回,b指令則不行。區(qū)別bl。


          @*****************************************************************


          子函數(shù)說明:復(fù)制代碼到SDRAM,將SRAM中的4K數(shù)據(jù)全部復(fù)制到SDRAM,
          @ SRAM起始地址為0x00000000,SDRAM的起始地址為0x30000000
          @*****************************************************************

          copy_steppingstone_to_sdram:
          mov r1,#0 @設(shè)置R1為SRAM的起始地址為0x00000000
          ldr r2,=SDRAM_BASE @設(shè)置R2為SDRAM的起始地址為0設(shè)置R1為0X300 00000
          mov r3 ,#4*1024 @設(shè)置R3為4K
          1:
          ldr r4,[r1],#4 @從SRAM中讀取4字節(jié)的數(shù)據(jù)到R4中,然后r1=r 1+4
          str r4,[r2],#4 @將r4中的4字節(jié)數(shù)據(jù)復(fù)制到SDRAM中,然后r2= r2+4
          cmp r1,r3 @判斷是否完成:SRAM的地址是否等于末地址> 。
          bne 1b @若沒有完成,繼續(xù)復(fù)制
          mov pc,lr @返回

          .align 4
          @******************************************************
          @存儲控制器13個寄存器的設(shè)置值
          @******************************************************
          mem_cfg_val:
          .long 0x22011110 @BWSCON :
          .long 0x00000700 @BANKCON0
          .long 0x00000700 @BANKCON1
          .long 0x00000700 @BANKCON2
          .long 0x00000700 @BANKCON3
          .long 0x00000700 @BANKCON4
          .long 0x00000700 @BANKCON5
          .long 0x00018005 @BANKCON6
          .long 0x00018005 @BANKCON7
          .long 0x008e07a3 @REFRESH
          .long 0x000000b1 @BANKSIZE
          .long 0x00000030 @MRSRB6
          .long 0x00000030 @MRSRB7
          2.擴(kuò)展為64MB的NAND Flash用作啟動ROM和大容量存儲
          1.需求分析
          NandFlash接口信號較少
          * 數(shù)據(jù)寬度只有8Bit,沒有地址總線。地址和數(shù)據(jù)總線復(fù)用,串行讀取

          NandFlash地址結(jié)構(gòu)
          * NandFlash設(shè)備的存儲容量是以頁(Page)和塊(Block)為單位的。
          * Page=528Byte (512Byte用于存放數(shù)據(jù),其余16Byte用于存放其他信息,如塊好壞的標(biāo)記、塊的邏輯地址、頁內(nèi)數(shù)據(jù)的ECC校驗和等)。
          * Block=32Page
          * 容量為64MB的NandFlash存儲結(jié)構(gòu)為:512Byte×32Page×4096Block
          * NandFlash以頁為單位進(jìn)行讀和編程(寫)操作,一頁為512Byte;以塊為單位進(jìn)行擦除操作,一塊為512Byte*32page=16KB
          * 對于64MB的NAND設(shè)備,需要26根地址線,由于NAND設(shè)備數(shù)據(jù)總線寬度是8位的,因此必須經(jīng)過4個時鐘周期才能把全部地址信息接收下來
          * 可以這么說,第一個時鐘周期給出的是目標(biāo)地址在一個page內(nèi)的偏移量,而后三個時鐘周期給出的是頁地址。
          * 由于一個頁內(nèi)有512Byte,需要9bit的地址尋址,而第一個時鐘周期只給出了低8bit,最高位A8由不同的讀命令(Read Mode2)來區(qū)分的。
          NandFlash的命令

          2.電路圖設(shè)計
          擴(kuò)展芯片:HY57561620


          3.NAND FLASH配置寄存器初始化

          MemCfgInit(); //設(shè)置NAND FLASH的配置寄存器
          該函數(shù)原型:

          void MemCfgInit(void)
          {
          //rCLKCON |= 0xffff0;

          //enable nand flash control, initilize ecc, chip disable,
          rNFCONF = (1<<15)|(1<<12)|(1<<11)|(7<<8)|(7<<4)|(7);
          }
          使能nand flash控制,初始化,芯片禁能
          1<<15,NFCONF寄存器是NAND FLASH的配置寄存器
          第15位置1,是使能nand flash控制寄存器
          此位在芯片開始工作,自動導(dǎo)入的時候?qū)⒈蛔詣忧辶悖?br />如果想訪問nand flash存儲,該位必須置一。
          14,13位為保留位
          1<<12,第12位置1,初始化ECC,S3C2410僅僅支持512個字節(jié)的ECC校驗,
          所以每512個字節(jié),需要設(shè)置一次ECC初始化。
          ECC是Error Checking and Correcting,錯誤檢查與校驗
          1<<11,第11位置1,NAND flash nFCE 設(shè)置為不活動,即nand flash存儲芯片禁能
          7<<8,即10,9,8位設(shè)置為111,
          這3位是CLE ALE信號的持續(xù)時間值設(shè)置,持續(xù)時間=HCLK*(TACLS + 1)
          TACLS即111(b)=7;
          7位為保留位
          7<<4,即6,5,4位設(shè)置為111,為TWRPH0 周期設(shè)置值,duration=HCLK*
          (TWRPH0+1)
          3位為保留位
          7 位第2,1,0,設(shè)置為111,為TWRPH1周期設(shè)置值,duration=HCLK*(TWRPH0+1)



          評論


          技術(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); })();