Keil中的USE MicroLib說明

無痕幽雨發表於2018-03-21

出處:https://www.cnblogs.com/zyqgold/p/6114637.html


在keil建立ARM的工程時

其中有一項是選 use MicroLIB

 

由於對KEIL不是很熟悉,於是就查了查,得到了以下資訊:

microlib 是預設 C 庫的備選庫。 它旨在與需要裝入到極少量記憶體中的深層嵌入式應用程式配合使用。 這些應用程式不在作業系統中執行。

microlib 進行了高度優化以使程式碼變得很小。 它的功能比預設 C 庫少,並且根本不具備某些 ISO C 特性。 某些庫函式的執行速度也比較慢,例如,memcpy()

與預設 C 庫之間的差異

microlib 與預設 C 庫之間的主要差異是:

  • microlib 不符合 ISO C 庫標準。 不支援某些 ISO 特性,並且其他特性具有的功能也較少。

  • microlib 不符合 IEEE 754 二進位制浮點演算法標準。

  • microlib 進行了高度優化以使程式碼變得很小。

  • 無法對區域設定進行配置。 預設 C 區域設定是唯一可用的區域設定。

  • 不能將 main() 宣告為使用引數,並且不能返回內容。

  • 不支援 stdio,但未緩衝的 stdinstdout 和 stderr 除外。

  • microlib 對 C99 函式提供有限的支援。

  • microlib 不支援作業系統函式。

  • microlib 不支援與位置無關的程式碼。

  • microlib 不提供互斥鎖來防止非執行緒安全的程式碼。

  • microlib 不支援寬字元或多位元組字串。

  • 與 stdlib 不同,microlib 不支援可選擇的單或雙區記憶體模型。 microlib 只提供雙區記憶體模型,即單獨的堆疊和堆區。

  • 可以合理地將 microlib 與 --fpmode=std 或 --fpmode=fast 配合使用。

microlib 中的函式負責:

  • 建立一個可在其中執行 C 程式的環境。 這包括:

    • 建立一個堆疊

    • 建立一個堆(如果需要)

    • 初始化程式所用的庫的部分組成內容。

  • 呼叫 main() 以開始執行程式。

要使用 microlib 構建程式,必須使用命令列選項 :library_type=microlib。 根據需要,編譯器、彙編程式或連結器可使用此選項處理不同的檔案。 將此選項與連結器配合使用時,將覆蓋所有其他選項。

轉自:http://blog.sina.com.cn/s/blog_7142d7da01013gub.html





相關文章