有人認(rèn)為“嵌入式開發(fā)人員不需要發(fā)布版本?!霸谀撤N程度上,這是有道理的。開發(fā)人員經(jīng)常在調(diào)試配置中開發(fā)和測試他們的軟件,他們應(yīng)該發(fā)布他們測試的內(nèi)容。然而,跳過發(fā)布版本的使用會對系統(tǒng)產(chǎn)生負(fù)面影響。這篇文章將探討你需要發(fā)布版本的五個原因。
原因1:性能優(yōu)化
當(dāng)你為調(diào)試構(gòu)建軟件時,構(gòu)建優(yōu)化級別通常設(shè)置在較低的級別。調(diào)試時,你可能需要逐句通過代碼或設(shè)置斷點(diǎn)來調(diào)查軟件正在做什么。較低的優(yōu)化級別可以防止編譯器重新安排指令和執(zhí)行其他可能會使人難以理解的優(yōu)化。如果你部署你的調(diào)試版本,你將錯過可以提高軟件執(zhí)行速度和軟件規(guī)模的優(yōu)化。
只有當(dāng)你正在積極調(diào)試軟件時,才應(yīng)使用調(diào)試生成。CI/CD管道中用于硬件在環(huán)測試、單元測試等的構(gòu)建都應(yīng)該使用發(fā)布構(gòu)建來完成。發(fā)布版本將最準(zhǔn)確地表示你將要發(fā)布的固件——它將被優(yōu)化,并且你將測試你發(fā)布的內(nèi)容。
原因2:內(nèi)存效率
嵌入式開發(fā)人員發(fā)布版本可以通過優(yōu)化數(shù)據(jù)結(jié)構(gòu)、刪除不必要的代碼和應(yīng)用節(jié)省內(nèi)存的技術(shù)來幫助減少嵌入式軟件的內(nèi)存占用。在資源經(jīng)常受限的嵌入式系統(tǒng)中,內(nèi)存效率至關(guān)重要。針對將應(yīng)用存儲器優(yōu)化的發(fā)布版本進(jìn)行編譯可能會將存儲器大小縮小到足夠小,從而可以使用更便宜的微控制器。或者它可以為將來添加到產(chǎn)品中的功能留出足夠的空間。
原因3:安全性增強(qiáng)
當(dāng)你為調(diào)試配置進(jìn)行構(gòu)建時,你會發(fā)現(xiàn)構(gòu)建中包含的信息通常要多得多,可以用來幫助調(diào)試系統(tǒng)。例如,你可能會發(fā)現(xiàn)其中包含調(diào)試符號和其他細(xì)節(jié),如果有人從閃存中取出軟件,可以更容易地對其進(jìn)行逆向工程。當(dāng)你為調(diào)試而構(gòu)建時,你經(jīng)常會發(fā)現(xiàn),為了使調(diào)試更容易,固件中不包含健壯的安全措施。調(diào)試版本的簡易性可能會留下痕跡,使入侵系統(tǒng)變得更加容易。
當(dāng)你執(zhí)行發(fā)布構(gòu)建時,你通常會啟用額外的安全特性,如堆棧保護(hù)、代碼混淆、更嚴(yán)格的警告檢查、地址清理和其他增強(qiáng)功能。如果你跳過發(fā)布版本,你可能會包含比你需要的更多的內(nèi)容,使對手更容易利用你的系統(tǒng)。
原因4:提高了電源性能
在嵌入式開發(fā)中,當(dāng)你為發(fā)布而構(gòu)建軟件時,還會進(jìn)行一些優(yōu)化。這些優(yōu)化通常會讓你的軟件運(yùn)行得更快。運(yùn)行速度更快的軟件的第二個好處是,如果你利用低功耗模式,你的系統(tǒng)也將使用更少的能源!更少的能源意味著你可以使用電池運(yùn)行更長時間,或者如果你使用連續(xù)電源,你的設(shè)備將會更加環(huán)保。
原因5:專業(yè)性
軟件開發(fā)人員經(jīng)常因為編寫錯誤的、低質(zhì)量的軟件而受到指責(zé)?;〞r間定義和測試一個優(yōu)化的發(fā)布版本表明你和你的團(tuán)隊不僅僅是另一組一起編寫代碼的開發(fā)人員。相反,這個版本是經(jīng)過深思熟慮的,高效的,并且經(jīng)過了很好的測試。這表明你是一個專業(yè)人士,超越了業(yè)余愛好者或開發(fā)者所做的“讓他們的代碼工作起來”。
結(jié)論
發(fā)布版本可以給嵌入式開發(fā)人員帶來很多好處。你將擁有更好的性能、更小的內(nèi)存占用、更高的安全性和更低能耗的設(shè)備。當(dāng)創(chuàng)建一個發(fā)布版本時,你不一定要刪除幫助你在現(xiàn)場調(diào)試系統(tǒng)的監(jiān)視器或工具。然而,它應(yīng)該區(qū)分配置為在實驗室中運(yùn)行的固件開發(fā)和完善的版本。