成都免費(fèi)招聘網(wǎng)站溫州seo推廣外包
資源受限MCU Flash空間占用優(yōu)化步驟:
- 避免重復(fù)功能,排查軟件工程中,重復(fù)功能的代碼片段,抽象出來,重新進(jìn)行封裝;
- 減少內(nèi)聯(lián)函數(shù)inline,內(nèi)聯(lián)函數(shù)過大且過多的調(diào)用無疑會增加代碼量,占用過多的flash,如果代碼運(yùn)行速度要求不高類似這樣的內(nèi)聯(lián)函數(shù),盡量改成函數(shù)調(diào)用;
- 開啟最高優(yōu)化,優(yōu)化時(shí)應(yīng)傾向于速度和代碼量的平衡,不能一味地縮小代碼量,因?yàn)檫@很可能會出現(xiàn)意想不到的問題,特殊源文件也可開局部優(yōu)化功能;
- 減少運(yùn)行庫調(diào)用,編譯器自帶的運(yùn)行庫一般都過大而復(fù)雜,例如常用的printf調(diào)試打印,將會占用大量flash空間,因此設(shè)計(jì)代碼時(shí),應(yīng)通過宏配置可禁掉類似printf的調(diào)試代碼或直接通過UART發(fā)送字符功能打印調(diào)試信息;
- 自行實(shí)現(xiàn)標(biāo)準(zhǔn)庫函數(shù),簡單的庫功能如:memcpy、memset等功能自行實(shí)現(xiàn)也會減少標(biāo)準(zhǔn)庫調(diào)用而導(dǎo)致占用過多的flash空間;
- 使用MCU本身的硬件特性,如果支持,盡量使用MCU的硬件乘法器或者浮點(diǎn)運(yùn)算單元,這樣會比直接進(jìn)行乘法或者浮點(diǎn)運(yùn)算運(yùn)行減少很多代碼量;
- 定義恰當(dāng)?shù)淖兞款愋?#xff1a;C編譯器支持變量的類有char、int、long等,定義恰當(dāng)?shù)淖兞款愋?#xff0c;可以有效的減少代碼和數(shù)據(jù)的長度,同時(shí)也能提高運(yùn)行效率。