亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

Keil微庫和標(biāo)準(zhǔn)C庫的區(qū)別

2023-06-05 10:10:55 來源:strongerHuang

初學(xué)者使用 Keil學(xué)習(xí)單片機(jī),用串口printf打印輸出時,通常都會使能Keil工具自帶的微庫(MicroLib):

最近看到有讀者在討論Keil的MicroLib微庫和標(biāo)準(zhǔn)C庫的話題,今天就來給大家簡單分享一下相關(guān)內(nèi)容。

什么是MicroLib?


(資料圖)

MicroLib是針對以C語言編寫的基于ARM嵌入式應(yīng)用程序的高度優(yōu)化的庫。

與ARM Compiler工具鏈附帶的標(biāo)準(zhǔn)C庫相比,MicroLib具有明顯的代碼大小優(yōu)勢。

上圖是一個性能基準(zhǔn)測試代碼,通過上圖可以發(fā)現(xiàn),微庫在不同內(nèi)核下代碼量明顯少很多。

補(bǔ)充:

C語言標(biāo)準(zhǔn)庫,我們經(jīng)常都會調(diào)用,比如:、 、 、 、 等庫文件。

在這些文件下還有很多各類庫函數(shù),比如:printf()、 malloc()、 memcpy()、 strncpy()等。

微庫與標(biāo)準(zhǔn)C庫區(qū)別

因?yàn)獒槍rm的嵌入式系統(tǒng),通常存儲(代碼)資源相對較小,為了使其能用上標(biāo)準(zhǔn)函數(shù),工程師就針對Arm嵌入式系統(tǒng),對標(biāo)準(zhǔn)C庫進(jìn)行了優(yōu)化,以減小代碼量。

優(yōu)化標(biāo)準(zhǔn)庫,肯定會帶來一些差異,下面分享幾點(diǎn)主要的差異:

1.代碼(數(shù)據(jù))量更?。▽Ρ壬蠄D)。

2.缺少一些不常用標(biāo)準(zhǔn)庫函數(shù),比如:文件 I/O 的庫函數(shù)。

3.微庫最大程度優(yōu)化代碼量,可能會導(dǎo)致有些庫代碼運(yùn)行速度更慢。

4.可用于RTOS這類系統(tǒng)中,但不支持在像Windosw這類系統(tǒng)中。

總結(jié)

微庫函數(shù)也是一種函數(shù),其很多庫函數(shù)原型在網(wǎng)上都能找到,如果你有特殊需求,可以不用微庫,在庫函數(shù)原型的基礎(chǔ)上進(jìn)行修改。

比如:你的項(xiàng)目經(jīng)過驗(yàn)證,發(fā)現(xiàn)微庫的代碼量,或者運(yùn)行速度都不理想的情況下,可以自己修改原型函數(shù)。

當(dāng)然,在萬不得已的情況下才建議修改原型函數(shù)。通常還是建議直接使用微庫,畢竟經(jīng)過別人多次驗(yàn)證的庫,出現(xiàn)bug的概率更小。

審核編輯:湯梓紅

標(biāo)簽:

上一篇:SiC MOSFET模塊串?dāng)_問題及應(yīng)用對策|世界今亮點(diǎn)
下一篇:最后一頁