• gzyueqian
    13352868059

    開(kāi)發(fā)可靠固件的3個(gè)常被忽視的技術(shù)

    更新時(shí)間: 2024-05-27 10:14:09來(lái)源: 粵嵌教育瀏覽量:157

    可靠的軟件是指在指定的時(shí)間內,在指定的條件下持續執行其所需功能的軟件類(lèi)別??煽康?/span>固件通常具有正確性、健壯性、容錯性和一致的行為等特征。可能會(huì )認為可靠的軟件是不想執行系統重置來(lái)使其再次工作的軟件。比如飛行控制器、剎車(chē)系統、醫療設備等。這篇文章將探討開(kāi)發(fā)可靠固件的三種通常被忽視的技術(shù)。

     

    技巧1使用內置糾錯碼(ECC)外設

    大多數微控制器都有一個(gè)開(kāi)發(fā)人員容易忽略的外設,即ECC。ECC主要用于易出現位錯誤的存儲器類(lèi)型,如閃存或SRAM。許多ECC外設將連接到內部和外部存儲器,例如通過(guò)QSPI連接的存儲器。

     

    ECC向存儲的數據添加額外的位(奇偶校驗位)??梢韵胂?,這意味著(zhù)要使用ECC,將需要額外的內存。如果ECC外設,通常不必擔心CPU開(kāi)銷(xiāo),因為這些位是使用硬件加速算法計算的,幾乎不需要CPU干預?;刈x數據時(shí),ECC邏輯會(huì )再次計算奇偶校驗位,并將它們與存儲的奇偶校驗位進(jìn)行比較。如果不匹配,則意味著(zhù)數據中存在錯誤。

     

    ECC可以檢測兩種類(lèi)型的錯誤:單位錯誤和多位錯誤。當檢測到一位錯誤時(shí),可以自動(dòng)糾正。ECC邏輯會(huì )在CPU或其他外設使用數據之前自動(dòng)糾正數據??梢詸z測到多位錯誤,但無(wú)法糾正。在這種情況下,ECC邏輯可以向系統發(fā)出錯誤情況信號,然后系統可以采取適當的措施,例如標記錯誤或啟動(dòng)系統重置。

     

    開(kāi)發(fā)人員經(jīng)常忽略ECC,因為部署在地面上的設備比在軌道上或更高海拔的設備發(fā)生比特翻轉和單粒子翻轉的概率更低。當在實(shí)驗臺上沒(méi)有看到問(wèn)題時(shí),很容易假設系統不會(huì )經(jīng)歷這些行為。ECC也不會(huì )出現在大多數配置軟件中,因為它通常通過(guò)對微控制器配置寄存器中的單個(gè)位進(jìn)行編程來(lái)啟用。設置通常保留默認值。

    在可靠性至關(guān)重要的應用中,例如醫療、汽車(chē)或航天系統中,使用ECC可能是實(shí)現所需可靠性水平的整體策略的一部分。

     

    技巧2:設計強大的看門(mén)狗解決方案

    對于可靠的固件來(lái)說(shuō),看門(mén)狗是一種經(jīng)常被忽視的技術(shù)嗎?嗯,它被廣泛忽視了,因為它是團隊經(jīng)常實(shí)施的最后一件事。最后一刻的實(shí)現通??紤]不周,可能無(wú)法滿(mǎn)足系統的需求。團隊經(jīng)常在創(chuàng )建任務(wù)時(shí)打開(kāi)內部看門(mén)狗定時(shí)器,該任務(wù)會(huì )定期觸發(fā)定時(shí)器,并表示他們有看門(mén)狗解決方案。事實(shí)并非如此。

     

    可靠的看門(mén)狗解決方案需要與正在開(kāi)發(fā)的軟件緊密集成。它需要一個(gè)總體策略來(lái)跟蹤內存、任務(wù)執行、應用程序代碼和驅動(dòng)程序??煽肯到y中的看門(mén)狗會(huì )小心保護系統并查找問(wèn)題。如果發(fā)現問(wèn)題,它可能會(huì )重新啟動(dòng)系統或有問(wèn)題的線(xiàn)程或進(jìn)程。有無(wú)數種方法可以根據所需的可靠性水平在系統中實(shí)現看門(mén)狗。

     

    在某些系統中,看門(mén)狗可能是多層的。它可以利用內部看門(mén)狗定時(shí)器、監視軟件行為的線(xiàn)程和監視整個(gè)系統的外部看門(mén)狗。這些系統的可靠性很高,但看門(mén)狗的復雜性也很高。最終目標是設計一個(gè)看門(mén)狗,安全可靠地檢測問(wèn)題并恢復系統。

     

    技巧3:使用斷言

    CC++中,斷言檢查程序中的條件或假設,如果不滿(mǎn)足這些條件,就停止程序的執行。斷言有助于調試并確保的代碼按預期運行。CC++中有兩種類(lèi)型的斷言:運行時(shí)斷言和靜態(tài)斷言。

     

    運行時(shí)斷言是使用cassert(C++)assert.h(c++)頭文件提供的assert宏實(shí)現的。assert宏將表達式作為參數。假設表達式被評估為假(即,不滿(mǎn)足條件)。在這種情況下,它會(huì )觸發(fā)一個(gè)斷言失敗,通常會(huì )導致程序陷入一個(gè)無(wú)限循環(huán),并給出失敗條件的詳細信息。

     

    靜態(tài)斷言對于在編譯時(shí)捕捉潛在問(wèn)題特別有用,而運行時(shí)斷言用于運行時(shí)調試和驗證。如果想編寫(xiě)更可靠的軟件,使用這些斷言可以幫助發(fā)現潛在的問(wèn)題,否則可能會(huì )被忽視。

     

    結論

    編寫(xiě)可靠的固件是許多嵌入式系統專(zhuān)業(yè)人員的一項重要技能。嵌入式系統通常被部署到現場(chǎng),并期望在不被重置的情況下正確工作數周或數月。今天討論的技術(shù)對于開(kāi)發(fā)可靠的軟件來(lái)說(shuō)是必不可少的。如果使用得當,可以提高系統的可靠性。

    免費預約試聽(tīng)課

    九九久久精品国产AV片国产_久久久久精品免费_亚洲精品高清国产一线久久_亚洲国产成人影院在线播放