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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 程序在RAM中調(diào)試的運行方式&程序固化后運行方式

          程序在RAM中調(diào)試的運行方式&程序固化后運行方式

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          程序固化運行方式

          程序開始運行后需要將RW 和ZI段搬移到RAM中去,程序下載進Flash中以后,上電后是怎樣將RW ZI斷搬移到RAM中去的?注意IAR和ADS在進行完.s文件的初始化以后都不是直接跳轉(zhuǎn)到main函數(shù)去執(zhí)行,IAR是跳轉(zhuǎn)到?main中而ADS是跳轉(zhuǎn)到__main函數(shù)中,在這些函數(shù)中根據(jù)icf文件的配置,將RW和ZI段搬移到icf文件規(guī)定的RAM區(qū)域中。如果程序的運行時域是在片外RAM中,那程序是在什么時候?qū)ζ釸AM控制器進行初始化呢?因為.s文件的開始部分是CODE RO的,不需要RAM空間,所以可以在.s文件中對片外RAM進行配置。還有一個問題,這個問題是在硬件設(shè)計時必須注意的,如果需要程序固化在外部Flash中,必須注意外接的Flash必須是片子上電后默認片外總線就支持的片子。

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

          程序在RAM中調(diào)試的運行方式

          為了調(diào)試的方便,程序有時候是不需要下載進flash進行調(diào)試,而是直接在RAM中運行,將icf文件中的ROM 和RAM地址都設(shè)成硬件RAM的地址,將Flashloader的使能關(guān)掉,那么程序就運行在RAM中了。但是問題又產(chǎn)生了,因為有時我們想在外部RAM中調(diào)試代碼,所以片外RAM控制器需要在代碼下載進RAM之前進行初始化,怎么能夠?qū)崿F(xiàn)呢?IAR是通過.mac文件實現(xiàn)的。在程序下載之前先執(zhí)行了。mac文件中的程序,下面是一個例子

          execUserFlashInit()
          {
          __writeMemory32(0x1000ffef, 0xffe00000 , "Memory");
          __writeMemory32(0x0f000114, 0xE002C014, "Memory");
          }

          該例子是lpc初始化外部RAM的例子。配置好了外部RAM就可以在里面跑代碼了。

          程序的IAR下載

          1. 文件在片內(nèi)Flash中下載運行

          這是最簡單也是最常用的方式,一般的ARM芯片都會帶有片內(nèi)Flash,IAR會通過Flashloader將二進制的可執(zhí)行文件下載到Flash中。下載的方式如下:如果要將程序B下載到片子里,IAR先將一個程序A(IAR事先編好的程序)下載到片內(nèi)的RAM中,然后利用這個程序A通過JTAG和Flashloader交互完成程序B的下載。

          2. 文件在片外Flash中下載

          IAR下載進RAM中的程序A必須支持片外的Flash,他能夠完成片外Flash的擦除。往往這個程序需要自己寫。像HJTAG的下載機制也是這樣,HJTAG中列舉了很多HJTAG支持的芯片,所謂支持就是HJTAG很有這些芯片的A程序。在HJTAG中必須要指定程序A將要下載到的RAM的地址,而且這個地址的RAM必須是可用的,比如如果用的片外SDRAM的話就必須初始化SDRAM控制器。這在HJTAG的Init Script中完成、在IAR的mac文件中完成。

          3. 文件在片內(nèi)RAM中下載 、文件在片外RAM中下載

          由于這兩種方式不需要Flashloader的參與,這時程序的加載時域和運行時域是相同的,程序運行后不涉及程序的搬移,所以只要給IAR指定運行時域的RAM地址就行了,如果是內(nèi)部RAM,那非常省事,直接在icf文件中將地址都設(shè)置成內(nèi)部RAM就行,如果是外部RAM那么在mac文件中初始化外部SDRAM控制器或者其他的RAM,然后IAR就可以完成將程序放在已經(jīng)初始化好的外部RAM里,并運行。



          評論


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