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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用C語言和ARM匯編語言設置SDRAM的慣用方法

          用C語言和ARM匯編語言設置SDRAM的慣用方法

          作者: 時間:2016-11-10 來源:網(wǎng)絡 收藏
          用C語言設置SDRAM的慣用方法

          /* SDRAM regisers */

          本文引用地址:http://www.ex-cimer.com/article/201611/317091.htm

          #defineMEM_CTL_BASE0x48000000// BWSCON的地址

          #defineSDRAM_BASE0x30000000// SDRAM的起始地址

          /* SDRAM 13個寄存器的值*/

          /*定義了一個數(shù)組,把13個寄存器的設置值存到一個數(shù)組里面*/

          unsignedlongconstmem_cfg_val[]={//注意unsignedlongconst的含義…

          0x22111110,//BWSCON

          0x00000700,//BANKCON0

          0x00000700,//BANKCON1

          0x00000700,//BANKCON2

          0x00000700,//BANKCON3

          0x00000700,//BANKCON4

          0x00000700,//BANKCON5

          0x00018005,//BANKCON6

          0x00018005,//BANKCON7

          0x008e07a3,//REFRESH

          0x000000b2,//BANKSIZE

          0x00000030,//MRSRB6

          0x00000030,//MRSRB7

          };

          /*設置控制SDRAM的13個寄存器*/

          /* for循環(huán)總共13次,剛好對13個寄存器賦值完畢*/

          void memsetup()

          {

          inti = 0;

          unsignedlong*p = (unsignedlong *)MEM_CTL_BASE;

          for(; i < 13; i++)

          p[i] = mem_cfg_val[i];

          }

          ARM匯編語言設置SDRAM的慣用方法

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

          @ File:head.s

          @功能:設置SDRAM,將程序復制到SDRAM,然后跳到SDRAM繼續(xù)執(zhí)行

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

          .equMEM_CTL_BASE,0x48000000

          .equSDRAM_BASE,0x30000000

          .text

          .global _start

          _start:

          bldisable_watch_dog

          blmemsetup

          blcopy_steppingstone_to_sdram

          ldrpc,=set_sp@跳到SDRAM中繼續(xù)執(zhí)行

          halt_loop:

          bhalt_loop

          memsetup:

          @ initialize the static memory

          @ set memory control registers

          movr1,#MEM_CTL_BASE

          adrlr2,mem_cfg_val@ adrl用于搬運地址

          movr3, #0x0@給r3清零(自己加上的一條指令)

          addr3,r1, #52@ 52 == 4*13

          1:

          ldrr4,[r2], #4

          strr4,[r1], #4

          cmpr1,r3

          bne1b@每次遞增4個字節(jié),共循環(huán)13次(設置13個寄存器)

          movpc,lr



          評論


          技術專區(qū)

          關閉
          看屁屁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); })();