新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式軟件開發之:編譯器的缺省行為

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

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

        本文引用地址:http://www.104case.com/article/257029.htm

        3.需求函數

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

        表13.1 Semihosting函數列表

        函 數 名 稱

        描 述

        SYS_OPEN (0x01)

        打開文件

        SYS_CLOSE(0x02)

        關閉使用SYS_OPEN打開的文件

        SYS_WRITEC (0x03)

        向控制臺輸出字符

        SYS_WRITE0 (0x04)

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

        SYS_WRITE (0x05)

        寫入主機上的文件

        續表

        函 數 名 稱

        描 述

        SYS_READ (0x06)

        將文件內容讀取到緩存器

        SYS_READC (0x07)

        從控制臺讀取字節

        SYS_ISERROR (0x08)

        確定返回代碼是否錯誤

        SYS_ISTTY (0x09)

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

        SYS_SEEK (0x0A)

        搜索到文件中的某個位置

        SYS_FLEN (0x0C)

        返回文件的長度

        SYS_TMPNAM (0x0D)

        返回文件的臨時名稱

        SYS_REMOVE (0x0E)

        刪除主機上的文件

        SYS_RENAME (0x0F)

        重命名主機上的文件

        SYS_CLOCK (0x10)

        執行開始后的厘秒數

        SYS_TIME (0x11)

        1970 年 1 月 1 日到現在的秒數

        SYS_SYSTEM (0x12)

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

        SYS_ERRNO (0x13)

        獲得 C 庫 errno 變量的值

        SYS_GET_CMDLINE (0x15)

        獲得用于調用可執行程序的命令行

        SYS_HEAPINFO (0x16)

        獲得系統堆參數

        SYS_ELAPSED (0x30)

        獲得自執行開始的目標滴答聲數目

        SYS_TICKFREQ (0x31)

        確定滴答聲的頻率

        13.2.2 C 庫結構

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

        圖13.2 C庫的函數結構

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

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

        13.2.3 默認存儲器映射

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

        圖13.3 默認存儲器映射

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

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

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

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

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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 锡林郭勒盟| 枝江市| 河津市| 连州市| 兴文县| 同江市| 耿马| 阜新市| 石门县| 湟源县| 尤溪县| 六盘水市| 内丘县| 介休市| 怀仁县| 左云县| 安达市| 阿尔山市| 法库县| 平定县| 冕宁县| 湛江市| 建瓯市| 白沙| 锦屏县| 临安市| 金平| 无棣县| 肇东市| 双桥区| 宝应县| 志丹县| 福安市| 湖南省| 沙湾县| 通海县| 格尔木市| 齐河县| 当阳市| 紫金县| 威远县|