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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 簡(jiǎn)單的啟動(dòng)代碼(Startup.s)分析

          簡(jiǎn)單的啟動(dòng)代碼(Startup.s)分析

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          以下啟動(dòng)代碼是從《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(一)》中提取出來(lái)的。

          &nbsp;1;啟動(dòng)文件,初始化C程序的運(yùn)行環(huán)境,然后進(jìn)入C程序代碼。
          2
          3IMPORT|Image$$RO$$Limit|
          4IMPORT|Image$$RW$$Base|
          5IMPORT|Image$$ZI$$Base|
          6IMPORT|Image$$ZI$$Limit|
          7
          8IMPORTMain;聲明C程序中的Main()函數(shù)
          9
          10AREA Start,CODE,READONLY;聲明代碼段Start
          11ENTRY;標(biāo)識(shí)程序入口
          12 CODE32;聲明32位ARM指令
          13
          14Reset LDRSP,=0x40003F00;設(shè)置堆棧
          15
          16;初始化C程序的運(yùn)行環(huán)境
          17 LDRR0,=|Image$$RO$$Limit|
          18LDRR1,=|Image$$RW$$Base|
          19LDRR3,=|Image$$ZI$$Base|
          20
          21CMPR0,R1
          22BEQ LOOP1
          23LOOP0 CMPR1,R3
          24LDRCC R2,[R0],#4
          25STRCC R2,[R1],#4
          26BCCLOOP0
          27
          28LOOP1 LDRR1,=|Image$$ZI$$Limit|
          29MOVR2,#0
          30LOOP2 CMPR3,R1
          31STRCC R2,[R3],#4
          32BCCLOOP2
          33
          34B Main;跳轉(zhuǎn)到C程序代碼Main()函數(shù)
          35
          36END

          本文引用地址:http://www.ex-cimer.com/article/201611/321098.htm從ADS1.2的幫助文檔可以看出以下幾個(gè)symbol的定義應(yīng)該是:
          |Image$$RO$$Base|
          表示RO輸出段運(yùn)行時(shí)起始地址,也可以說(shuō)是程序代碼存放的起始地址,由-ro-base這個(gè)參數(shù)指定;
          |Image$$RO$$Limit|
          表示RO輸出 段運(yùn)行時(shí)存儲(chǔ)區(qū)域界限,其值可通過(guò)|Image$$RO$$Base|+Codesizes+RO Data sizes+4計(jì)算得出;
          |Image$$RW$$Base|
          表示RW輸出段運(yùn)行時(shí)起始地址,記得是運(yùn)行時(shí)的地址,而不一定是加載時(shí)的存放地址,因?yàn)镽W輸出段在加載時(shí)可能是在ROM中并緊跟著RO輸出段存放的,當(dāng)程序運(yùn)行時(shí)才移動(dòng)(在有些書(shū)中說(shuō)是移動(dòng),個(gè)人覺(jué)得應(yīng)該只是復(fù)制,希望大家能幫我解釋一下,謝謝!) 到RAM起始地址為|Image$$RW$$Base|的區(qū)域,由-rw-base這個(gè)參數(shù)指定;未指定的話,默認(rèn)緊跟RO輸 出段,那么|Image$$RW$$Base|=|Image$$RO$$Limit|;
          |Image$$RW$$Limit|
          表示RW輸出 段運(yùn)行時(shí)存儲(chǔ)區(qū)域界限,其值可通過(guò)|Image$$RW$$Base|+RW Data sizes+4計(jì)算得出;
          |Image$$ZI$$Base|
          表示ZI輸出段運(yùn)行時(shí)起始地址,它是運(yùn)行時(shí)在RAM中生成的,緊跟著RW輸出段存放,其 值和|Image$$RW$$Limit| 一樣;
          |Image$$ZI$$Limit|
          表示ZI輸出 段運(yùn)行時(shí)存儲(chǔ)區(qū)域界限,其值可通過(guò)|Image$$ZI$$Base|+ZI Data sizes+4計(jì)算得出。


          關(guān)鍵詞: 啟動(dòng)代碼Startup

          評(píng)論


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