對(duì)于網(wǎng)站開(kāi)發(fā)而言,使用引導(dǎo)加載程序更新嵌入式系統(tǒng)的能力是一項(xiàng)需要掌握的重要技能。盡管為開(kāi)發(fā)嵌入式系統(tǒng)付出了所有努力,但要么在現(xiàn)場(chǎng)發(fā)現(xiàn)錯(cuò)誤,要么最終用戶要求附加功能。為了在現(xiàn)場(chǎng)或遠(yuǎn)程無(wú)線更新固件,嵌入式系統(tǒng)必須具有板載引導(dǎo)加載程序。對(duì)于作為物聯(lián)網(wǎng)一部分的無(wú)線更新的嵌入式系統(tǒng),嵌入式開(kāi)發(fā)團(tuán)隊(duì)面臨五個(gè)關(guān)鍵挑戰(zhàn)。
挑戰(zhàn) 1 – 代碼大小
基于微控制器的應(yīng)用程序過(guò)去非常小,最多只有8到16 KB?,F(xiàn)代微控制器可以為開(kāi)發(fā)人員提供價(jià)值超過(guò)1024 KB 的應(yīng)用程序代碼空間。盡管容量和功能呈爆炸式增長(zhǎng),但對(duì)于希望通過(guò)無(wú)線方式更新固件的嵌入式程序員來(lái)說(shuō),代碼大小是第一個(gè)挑戰(zhàn)。
代碼大小的挑戰(zhàn)之一是微控制器通常沒(méi)有用于正在運(yùn)行的應(yīng)用程序代碼的板載文件系統(tǒng),這與運(yùn)行Linux的基于CPU的系統(tǒng)不同。由于文件不存在,目標(biāo)文件被鏈接器連續(xù)放置在內(nèi)存中。對(duì)應(yīng)用程序的微小調(diào)整可能會(huì)導(dǎo)致更新整個(gè)閃存空間!為了防止這樣的災(zāi)難,開(kāi)發(fā)人員需要預(yù)先考慮對(duì)內(nèi)存進(jìn)行分區(qū),并預(yù)測(cè)可能需要修改代碼庫(kù)的哪些區(qū)域。結(jié)果可能是板載閃存的使用效率低下,并增加了系統(tǒng)的相當(dāng)復(fù)雜性。
挑戰(zhàn) 2 – 帶寬
通常,當(dāng)嵌入式開(kāi)發(fā)人員考慮與引導(dǎo)加載程序相關(guān)的帶寬時(shí),帶寬用于確定更新應(yīng)用程序所需的最大閃存時(shí)間。無(wú)線更新嵌入式系統(tǒng)可能會(huì)增加一些額外的挑戰(zhàn)。
第一個(gè)挑戰(zhàn)涉及需要在無(wú)線鏈路上工作的引導(dǎo)加載程序,這可能會(huì)產(chǎn)生與傳輸和接收數(shù)據(jù)相關(guān)的成本。在許多情況下,無(wú)線更新可能會(huì)通過(guò)WIFI或以太網(wǎng)執(zhí)行,但使用蜂窩數(shù)據(jù)鏈路的移動(dòng)設(shè)備呢?考慮到單個(gè)嵌入式系統(tǒng),可能會(huì)忽略更新系統(tǒng)所需的單個(gè)MB應(yīng)用程序代碼,但是,當(dāng)有數(shù)百萬(wàn)臺(tái)設(shè)備需要更新時(shí)會(huì)發(fā)生什么?僅僅推出一個(gè)更新就可能產(chǎn)生相當(dāng)大的成本。
開(kāi)發(fā)引導(dǎo)加載程序的工程師,尤其是在無(wú)線執(zhí)行更新的工程師,需要找到壓縮應(yīng)用程序映像的方法,以最大限度地減少空中傳輸?shù)臄?shù)據(jù)量??梢酝ㄟ^(guò)多種方式執(zhí)行壓縮,或者如果開(kāi)發(fā)人員在每個(gè)對(duì)象基礎(chǔ)上對(duì)閃存空間進(jìn)行了分區(qū),甚至可以使用diff文件。
挑戰(zhàn) 3–穩(wěn)健性
對(duì)于網(wǎng)站建設(shè)公司來(lái)講,許多嵌入式開(kāi)發(fā)團(tuán)隊(duì)面臨的引導(dǎo)加載程序誘惑之一是使用芯片制造商提供的引導(dǎo)加載程序解決方案。芯片制造商解決方案的問(wèn)題在于它們通常位于無(wú)法定制的ROM空間中。更重要的是,基于ROM的引導(dǎo)加載程序通常只是功能代碼。功能代碼可以在受控條件下執(zhí)行目的,但不適用于任何事情發(fā)生的生產(chǎn)環(huán)境。
需要從一開(kāi)始就將魯棒性內(nèi)置到引導(dǎo)加載程序解決方案中。引導(dǎo)加載程序應(yīng)具有驗(yàn)證板載應(yīng)用程序完整性的能力。引導(dǎo)加載程序應(yīng)該能夠檢測(cè)到失敗的固件更新并回滾到原始應(yīng)用程序,而不是使系統(tǒng)變磚。在生產(chǎn)環(huán)境中,有許多事件可能會(huì)擾亂系統(tǒng),但設(shè)計(jì)合理的引導(dǎo)加載程序?qū)⒆銐驈?qiáng)大,可以順利處理它們,而最終用戶不會(huì)意識(shí)到存在問(wèn)題。
挑戰(zhàn)4 – 安全
許多基于微控制器的引導(dǎo)加載程序忽略了安全性,這是執(zhí)行無(wú)線更新的開(kāi)發(fā)人員面臨的關(guān)鍵挑戰(zhàn)。嵌入式開(kāi)發(fā)人員可以采取的最簡(jiǎn)單的安全措施之一就是簡(jiǎn)單地鎖定閃存系統(tǒng),執(zhí)行無(wú)線更新的開(kāi)發(fā)人員可能會(huì)考慮加密他們的應(yīng)用程序映像,以防止任何人深入了解專(zhuān)有固件,甚至是逆向工程和入侵系統(tǒng)。無(wú)線引導(dǎo)加載程序應(yīng)具有用于驗(yàn)證更新過(guò)程的內(nèi)置方法。
挑戰(zhàn) 5 – 版本管理
管理將分發(fā)給潛在數(shù)百萬(wàn)臺(tái)設(shè)備的固件版本并非易事。奇怪的是,固件更新不會(huì)一次全部推送,而是分批推送。更重要的是,有可能在某個(gè)時(shí)候存在不同版本的硬件,甚至可能為不同的最終用戶提供不同的應(yīng)用程序集。跟蹤并確保固件順利推出可能是一項(xiàng)重大挑戰(zhàn)。
結(jié)論
引導(dǎo)加載程序通常在開(kāi)發(fā)周期結(jié)束之前被忽略,但它們?cè)谇度胧较到y(tǒng)中發(fā)揮著關(guān)鍵作用。這里提出的五個(gè)挑戰(zhàn)只是嵌入式開(kāi)發(fā)人員面臨的幾個(gè)挑戰(zhàn),他們正在使用微控制器開(kāi)發(fā)連接系統(tǒng)。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專(zhuān)線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹(shù)莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專(zhuān)線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專(zhuān)線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)