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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM裸機開發(fā)bootloader代碼搬移從SRAM到DRAM

          ARM裸機開發(fā)bootloader代碼搬移從SRAM到DRAM

          作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          本部分分兩部分去闡述:

          1、ARM啟動流程

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

          2、編寫代碼

          一、2440:一上電,就從Nand中取出4KB的代碼到SRAM中stepping stone運行,并對內(nèi)存進(jìn)行初始化。而后將Nand中代碼全部到內(nèi)存中。

          6410:一上電,SROM中的BL0會將Nand中8KB的代碼搬移到SRAM中stepping stone運行,并對內(nèi)存進(jìn)行初始化。而后將Nand中代碼全部到內(nèi)存中,剩余代碼會在內(nèi)存中運行。

          210:一上電,SROM中的BL0會將Nand中代碼到IRAM中運行,初始化內(nèi)存。而后將Nand中全部代碼搬移到內(nèi)存中。

          注:2440中stepping stone有4KB 6410中stepping stone有8KB 210中stepping stone 為96KB

          二、編寫代碼

          步驟:首先確定搬移的起點和終點,而后使用循環(huán)進(jìn)行搬移。

          起點:SRAM

          2440:0x0

          6410:0x0c000000

          210:0x00020000

          終點:內(nèi)存的鏈接地址

          鏈接起始地址:起始代碼在內(nèi)存中出現(xiàn)的地址。

          下面很有必要介紹一下相對地址與絕對地址:

          絕對地址:C語言中調(diào)用函數(shù);對PC賦值

          相對地址:匯編中的B指令,就是進(jìn)行相對地址操作。它移動相對地址標(biāo)號的位移。

          以6410為例:起點:0x0c000000 終點0x50008000


          copy_to_ram:ldr r0, =0x0c000000ldr r1, =0x50008000add r3, r0, #1024*4copy_loop:ldr r2, [r0], #4str r2, [r1], #4cmp r0, r3bne copy_loopmov pc, lr




          評論


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