從一個(gè)小白到成為一名真正的嵌入式開發(fā)工程師,這個(gè)過程是需要不斷學(xué)習(xí)深化的,只有在不斷的學(xué)習(xí)中,你才能掌握作為一份嵌入式開發(fā)工程師所需要的技能。今天,小粵為大家找到了一些學(xué)習(xí)技巧,希望這些技巧可以在你的學(xué)習(xí)之路上幫助你快速成為一名合格的嵌入式開發(fā)工程師。
技巧1——用已知值填充ROM
軟件開發(fā)人員往往都是非常樂觀的一群人,只要讓他們的代碼忠實(shí)地長時(shí)間地運(yùn)行就可以了,僅此而已。微控制器跳出應(yīng)用程序空間并在非預(yù)想的代碼空間中執(zhí)行這種情況似乎是相當(dāng)少有的。然而,這種情況發(fā)生的機(jī)會(huì)并不比緩存溢出或錯(cuò)誤指針失去引用少。它確實(shí)會(huì)發(fā)生!發(fā)生這種情況后的系統(tǒng)行為將是不確定的,因?yàn)槟J(rèn)情況下內(nèi)存空間都是0xFF,或者由于內(nèi)存區(qū)通常沒有寫過,其中的值可能只有上帝才知道。
不過有相當(dāng)完備的linker或IDE技巧可以用來幫助識(shí)別這樣的事件并從中恢復(fù)系統(tǒng)。技巧就是使用FILL命令對(duì)未用ROM填充已知的位模式。要填充未使用的內(nèi)存,有很多不同的可能組合可以使用,但如果是想建立更加可靠的系統(tǒng),明顯的選擇是在這些位置放置ISR
fault
handler。如果系統(tǒng)出了某些差錯(cuò),處理器開始執(zhí)行程序空間以外的代碼,就會(huì)觸發(fā)ISR,并在決定校正行動(dòng)之前提供儲(chǔ)存處理器、寄存器和系統(tǒng)狀態(tài)的機(jī)會(huì)。
技巧2——檢查應(yīng)用程序的CRC
對(duì)嵌入式工程師來說一個(gè)很大的好處是,我們的IDE和工具鏈可以自動(dòng)產(chǎn)生應(yīng)用程序或內(nèi)存空間校驗(yàn)和(Checksum),從而根據(jù)這個(gè)校驗(yàn)和驗(yàn)證應(yīng)用程序是否完好。有趣的是,在許多這些案例中,只有在將程序代碼加載到設(shè)備時(shí),才會(huì)用到校驗(yàn)和。
然而,如果CRC或校驗(yàn)和保持在內(nèi)存中,那么驗(yàn)證應(yīng)用程序在啟動(dòng)時(shí)(或甚至對(duì)長時(shí)間運(yùn)行的系統(tǒng)定期驗(yàn)證)是否仍然完好是確保意外之事不會(huì)發(fā)生的極好途徑?,F(xiàn)在一個(gè)編程過的應(yīng)用程序發(fā)生改變的概率是很小的,但考慮每年交付的數(shù)十億個(gè)微控制器以及可能惡劣的工作環(huán)境,應(yīng)用程序崩潰的機(jī)會(huì)并不是零。更有可能的是,系統(tǒng)中的一個(gè)缺陷可能導(dǎo)致某一扇區(qū)發(fā)生閃存寫入或閃存擦除,從而破壞應(yīng)用程序的完整性。
技巧3——在啟動(dòng)時(shí)執(zhí)行RAM檢查
為了建立一個(gè)更加可靠和扎實(shí)的系統(tǒng),確保系統(tǒng)硬件正常工作非常重要。畢竟硬件會(huì)發(fā)生故障。(幸運(yùn)的是軟件永遠(yuǎn)不會(huì)發(fā)生故障,軟件只會(huì)做代碼要它做的事,不管是正確的還是錯(cuò)誤的)。在啟動(dòng)時(shí)驗(yàn)證RAM的內(nèi)部或外部沒有問題,是確保硬件可以如預(yù)期般運(yùn)作的一個(gè)好方法。
有許多不同的方法可用于執(zhí)行RAM檢查,但常用的方法是寫入一個(gè)已知的模式,然后等上一小段時(shí)間再回讀。結(jié)果應(yīng)該是所讀就是所寫。真相是,在大多數(shù)情況下
RAM檢查是通過的,這也是我們想要的結(jié)果。但也有極小的可能性檢查不通過,這時(shí)就為系統(tǒng)標(biāo)示出硬件問題提供了極好的機(jī)會(huì)。
當(dāng)然要成為一名成功的嵌入式開發(fā)工程師,主要的還是要有完整培訓(xùn)經(jīng)歷。在培訓(xùn)過程中老師會(huì)傳授給你更多的知識(shí)和技巧,讓你打好扎實(shí)的基礎(chǔ),在技術(shù)這條路上越走越遠(yuǎn)。達(dá)內(nèi)IT培訓(xùn)班,會(huì)讓你快速成為一名嵌入式開發(fā)工程師,不信,你來試試就知道了。