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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式軟件開發(fā)之:編譯器的缺省行為

          嵌入式軟件開發(fā)之:編譯器的缺省行為

          作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

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

          13.2.4 鏈接程序放置規(guī)則

          鏈接程序遵守一組規(guī)則,以決定代碼和數(shù)據(jù)位于存儲(chǔ)器中的什么位置,如圖13.4所示。

          鏈接程序放置遵循以下規(guī)則:

          ① 映像首先按屬性組織:RO段在最低的存儲(chǔ)器地址,其次是RW段,然后是ZI段。每一種屬性中,代碼在數(shù)據(jù)之前。

          ② 鏈接程序按名稱的字母順序放置輸入段(Section)。輸入段名稱即匯編程序AREA偽操作定義的名稱。

          圖13.4 鏈接程序放置規(guī)則

          ③ 在輸入段中,獨(dú)立對(duì)象的代碼和數(shù)據(jù),按照對(duì)象文件在鏈接程序命令行中被指定的順序放置。

          要精確放置代碼和數(shù)據(jù),公司建議不要過分依靠這些規(guī)則。相反,必須使用分散加載機(jī)制來完全控制代碼和數(shù)據(jù)的放置。請(qǐng)參閱下一章的調(diào)整映像存儲(chǔ)器映射以適應(yīng)目標(biāo)系統(tǒng)硬件存儲(chǔ)器的實(shí)際要求。

          13.2.5 應(yīng)用程序啟動(dòng)

          多數(shù)嵌入式系統(tǒng)中,執(zhí)行主任務(wù)前,執(zhí)行初始化序列來設(shè)置系統(tǒng)。默認(rèn)的RVCT初始化序列如圖13.5所示。

          圖13.5 默認(rèn)RVCT初始化序列

          在進(jìn)入用戶代碼(main())前,初始化序列可分成三個(gè)功能塊:__main直接跳轉(zhuǎn)到__scatterload;__scatterload負(fù)責(zé)建立運(yùn)行時(shí)的映像存儲(chǔ)器映射,而__rt_entry(運(yùn)行時(shí)的入口)則負(fù)責(zé)初始化C庫(kù)。

          __scatterload執(zhí)行代碼和數(shù)據(jù)復(fù)制以及ZI數(shù)據(jù)的清零。對(duì)于ZI數(shù)據(jù)的清零和未改變的RW數(shù)據(jù)來說,這一步總是要做的。

          __scatterload跳轉(zhuǎn)到__rt_entry。它設(shè)置應(yīng)用程序的棧和堆,初始化庫(kù)函數(shù)及其靜態(tài)數(shù)據(jù),并調(diào)用任何全局聲明的對(duì)象的構(gòu)造函數(shù)(僅C++)。

          然后__rt_entry跳轉(zhuǎn)到應(yīng)用程序入口main()。主應(yīng)用程序結(jié)束執(zhí)行時(shí),__rt_entry將庫(kù)關(guān)閉,然后把控制權(quán)交還給調(diào)試器。

          RVCT中,函數(shù)main()有一個(gè)特殊含意。main()函數(shù)的存在強(qiáng)制鏈接程序鏈接到__main和__rt_entry中的初始化代碼。沒有main()函數(shù),就不會(huì)鏈接到初始化進(jìn)程,那么一些標(biāo)準(zhǔn)C庫(kù)功能就不會(huì)得到支持。



          [1] 在一些的中文參考文獻(xiàn)中,將譯為半主機(jī)。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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