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

          新聞中心

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

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

          作者: 時間:2013-09-30 來源:網絡 收藏

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

          3.需求函數(shù)

          需要的函數(shù)列表如表13.1所示。如果使用默認的功能,用戶不需要編寫任何其他代碼。也可以重新實現(xiàn)部分的輸入/輸出函數(shù),使這些函數(shù)和標準Semihosting混合使用。

          表13.1 Semihosting函數(shù)列表

          函 數(shù) 名 稱

          描 述

          SYS_OPEN (0x01)

          打開文件

          SYS_CLOSE(0x02)

          關閉使用SYS_OPEN打開的文件

          SYS_WRITEC (0x03)

          向控制臺輸出字符

          SYS_WRITE0 (0x04)

          將空終止的字符串寫入控制臺

          SYS_WRITE (0x05)

          寫入主機上的文件

          續(xù)表

          函 數(shù) 名 稱

          描 述

          SYS_READ (0x06)

          將文件內容讀取到緩存器

          SYS_READC (0x07)

          從控制臺讀取字節(jié)

          SYS_ISERROR (0x08)

          確定返回代碼是否錯誤

          SYS_ISTTY (0x09)

          檢查文件是否連接到交互設備

          SYS_SEEK (0x0A)

          搜索到文件中的某個位置

          SYS_FLEN (0x0C)

          返回文件的長度

          SYS_TMPNAM (0x0D)

          返回文件的臨時名稱

          SYS_REMOVE (0x0E)

          刪除主機上的文件

          SYS_RENAME (0x0F)

          重命名主機上的文件

          SYS_CLOCK (0x10)

          執(zhí)行開始后的厘秒數(shù)

          SYS_TIME (0x11)

          1970 年 1 月 1 日到現(xiàn)在的秒數(shù)

          SYS_SYSTEM (0x12)

          將命令傳遞給主機命令行解釋程序

          SYS_ERRNO (0x13)

          獲得 C 庫 errno 變量的值

          SYS_GET_CMDLINE (0x15)

          獲得用于調用可執(zhí)行程序的命令行

          SYS_HEAPINFO (0x16)

          獲得系統(tǒng)堆參數(shù)

          SYS_ELAPSED (0x30)

          獲得自執(zhí)行開始的目標滴答聲數(shù)目

          SYS_TICKFREQ (0x31)

          確定滴答聲的頻率

          13.2.2 C 庫結構

          從概念上來講,C庫函數(shù)可被化分成兩類,一類為ISO C語言的規(guī)范部分,該部分的主要功能是向用戶提供一個調用接口;另一類為ISO C語言規(guī)范提供支持。圖13.2顯示了這兩類函數(shù)在C庫中的結構。

          圖13.2 C庫的函數(shù)結構

          對部分ISO C功能的支持是由主機調試環(huán)境在支持函數(shù)的設備驅動程序級別提供的。

          例如,RVCT C庫通過寫入調試器控制臺窗口來實現(xiàn)ISO C printf()系列函數(shù)。通過調用__sys_write()來提供該功能。這是一個執(zhí)行半主機SWI的支持函數(shù),使字符串被寫入到控制臺。

          13.2.3 默認存儲器映射

          對于沒有描述存儲器映射的映像(Image),RVCT根據(jù)默認存儲器映射放置代碼和數(shù)據(jù)。默認的存儲器映射如圖13.3所示。

          圖13.3 默認存儲器映射

          結合圖13.3,可以看出默認的存儲器映射使用以下規(guī)則:

          · 鏈接映像,在地址0x8000加載并運行。首先放置所有的RO(只讀)段,其次是RW(讀寫)段,然后是ZI(零初始化)段。

          · 堆(Heap)直接從ZI段的頂端地址算起,因此,其準確位置在鏈接時決定。

          · 棧(Stack)的起始地址在應用程序啟動過程時由Semihosting操作提供。具體Semihosting操作設置的值由調試系統(tǒng)的不同而不同。

          ① RealView ulator ISS(RVISS)設置為配置文件peripherals.ami中設定的值。默認值是0x08000000。

          ② Multi-ICE將該地址設置為調試器內部變量top_of_memory的值。默認值是0x00080000。



          評論


          相關推薦

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