時間:2019-07-11 00:00:00 來源:信盈達 作者:信盈達
一個正式的開發工程師是一個艱辛的過程。從規范完善的開發周期到嚴格執行和系統檢查,開發高可靠性系統的技術有許多種。今天給大家介紹7個易操作且可以長久使用的技巧,它們對于確保系統更加可靠地運行并捕獲異常行為大有幫助。
軟件開發人員往往都是非常樂觀的一群人,只要讓他們的代碼忠實地長時間地運行就可以了,僅此而已。微控制器跳出應用程序空間并在非預想的代碼空間中執行這種情況似乎是相當少有的。然而,這種情況發生的機會并不比緩存溢出或錯誤指針失去引用少。它確實會發生!發生這種情況后的系統行為將是不確定的,因為默認情況下內存空間都是0xFF,或者由于內存區通常沒有寫過,其中的值可能只有上帝才知道。
然而,如果CRC或校驗和保持在內存中,那么驗證應用程序在啟動時(或甚至對長時間運行的系統定期驗證)是否仍然完好是確保意外之事不會發生的極好途徑。現在一個編程過的應用程序發生改變的概率是很小的,但考慮每年交付的數十億個微控制器以及可能惡劣的工作環境,應用程序崩潰的機會并不是零。更有可能的是,系統中的一個缺陷可能導致某一扇區發生閃存寫入或閃存擦除,從而破壞應用程序的完整性。
為了建立一個更加可靠和扎實的系統,確保系統硬件正常工作非常重要。畢竟硬件會發生故障。(幸運的是軟件永遠不會發生故障,軟件只會做代碼要它做的事,不管是正確的還是錯誤的)。在啟動時驗證RAM的內部或外部沒有問題,是確保硬件可以如預期般運作的一個好方法。
堆棧大小是在編譯時就靜態分配好的,但堆棧是以動態的方式使用的。隨著代碼的執行,應用程序需要的變量、返回的地址和其它信息被不斷存儲在堆棧中。這種機制導致堆棧在其分配的內存中不斷增長。然而,這種增長有時會超出編譯時確定的容量極限,導致堆棧破壞相鄰內存區域的數據。
在過去,是很難在一個小而廉價的微控制器中找到內存保護單元(MPU)的,但這種情況已經開始改變。現在從高端到低端的微控制器都已經有MPU,而這些 MPU為嵌入式軟件開發人員提供了一個可以大幅提高其固件(firmware)魯棒性(robustness)的機會。
你經常會發現的一種總是*受喜愛的看門狗(watchdog)實現是,在看門狗被啟用之處(這是一個很好的開始),但也是可以用周期性定時器將該看門狗清零之處;定時器的啟用是完全與程序中出現的任何情況隔離的。使用看門狗的目的是協助確保如果出現錯誤,看門狗不會被清零,即當工作暫停,系統會被迫去執行硬件重設定(hardware reset),以便恢復。使用與系統活動獨立的定時器可以讓看門狗保持清零,即使系統已失效。
免費領取試聽卡
申請已經提交
老師會馬上給您安排試聽課程!
申請出錯了
您可以加老師QQ:914865590報名咨詢!