大家好,請(qǐng)問一下MRS中,有沒有方法不編譯未調(diào)用的函數(shù)和變量,從而節(jié)省flash和ram空間。謝謝!
很多現(xiàn)代編譯器都是這樣的吧,沒有引用到就不會(huì)編譯進(jìn)去。如果你覺得清理的不夠干凈,可以打開-flto(鏈接時(shí)優(yōu)化,Link Time Optimization),鏈接器會(huì)在鏈接過程中檢查未被引用的符號(hào)并移除,但可能會(huì)引起一些其他的潛在問題,如手工重定向了中斷向量表等情況可能會(huì)錯(cuò)誤的移除。
您好,使用MRS開發(fā)時(shí),默認(rèn)都是開啟優(yōu)化的,編譯是都會(huì)編譯的,但在執(zhí)行鏈接時(shí)會(huì)將沒用到的函數(shù)和變量去掉,同樣是可以達(dá)到節(jié)省FLASH和RAM的效果的。
指條路:
-ffunction-sections -fdata-sections
--gc-sections
自己去研究吧
能不能設(shè)置不優(yōu)化:有時(shí)候延時(shí)函數(shù)會(huì)被優(yōu)化的不好
您好,MRS可以設(shè)置不開優(yōu)化,如下圖。關(guān)于延時(shí)函數(shù)會(huì)被優(yōu)化的不好,這個(gè)延時(shí)函數(shù)是指自定義的延時(shí)函數(shù)么。若是指自定義延時(shí)函數(shù)會(huì)被優(yōu)化不起作用,可在for循環(huán)或while循環(huán)中加nop指令,防止被優(yōu)化。若是延時(shí)時(shí)間的一致性問題,可將延時(shí)函數(shù)放在RAM中,具體操作可參考下帖。