技巧2——檢查應(yīng)用程序的CRC
對(duì)嵌入式工程師來(lái)說(shuō)一個(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ì)長(zhǎng)時(shí)間運(yùn)行的系統(tǒng)定期驗(yàn)證)是否仍然完好是確保意外之事不會(huì)發(fā)生的極好途徑。
現(xiàn)在一個(gè)編程過(guò)的應(yīng)用程序發(fā)生改變的概率是很小的,但考慮每年交付的數(shù)十億個(gè)微控制器以及可能惡劣的工作環(huán)境,應(yīng)用程序崩潰的機(jī)會(huì)并不是零。更有可能的是,系統(tǒng)中的一個(gè)缺陷可能導(dǎo)致某一扇區(qū)發(fā)生閃存寫(xiě)入或閃存擦除,從而破壞應(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)部或外部沒(méi)有問(wèn)題,是確保硬件可以如預(yù)期般運(yùn)作的一個(gè)好方法。
有許多不同的方法可用于執(zhí)行RAM檢查,但常用的方法是寫(xiě)入一個(gè)已知的模式,然后等上一小段時(shí)間再回讀。結(jié)果應(yīng)該是所讀就是所寫(xiě)。真相是,在大多數(shù)情況下RAM檢查是通過(guò)的,這也是我們想要的結(jié)果。但也有極小的可能性檢查不通過(guò),這時(shí)就為系統(tǒng)標(biāo)示出硬件問(wèn)題提供了極好的機(jī)會(huì)。