日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在實驗室中起作用的東西并不總是在現場起作用,這通常是由于意外的交互和未發現的錯誤。防御性編程有助于使設計更具彈性,但開發能夠處理不可預見情況的嵌入式軟件并非易事,這需要紀律和深謀遠慮。這里有五個技巧可以幫助嵌入式開發人員成為更好的防御性程序員。

技巧1——校驗和或 CRC 數據

使用校驗和和循環冗余校驗 (CRC) 算法是開發人員驗證通過串行鏈路發送的數據確實是否正確的一種好方法。經過審查的嵌入式系統在測試平臺的受控環境中將始終按預期運行。然而,一旦系統被釋放到野外,系統運行的環境就變得非常未知。嘈雜的環境可能會產生通信噪聲,從而導致位翻轉和誤讀數據。檢測這些損壞數據的最大希望是通過使用校驗和或 CRC 對數據進行完整性檢查。

技巧2——契約式設計

契約式設計是一種開發軟件的方法,它產生高度定義的軟件接口,其中每個功能都與明確定義的前置條件和后置條件相關聯。這個想法是,如果應用程序要調用特定函數,調用的應用程序必須滿足函數的先決條件才能獲得有效的響應或操作。契約式設計對于開發人員來說是一個強大的工具,因為它明確地指定了函數期望接收的內容以及在有效前提條件下保證的輸出將是什么。由于期望不是“從字里行間讀取”,調用該函數的嵌入式開發人員確切地知道為了使用該函數而期望是什么。

技巧3——使用斷言

斷言宏是開發人員在應用程序中的給定時刻驗證他們對應用程序的假設的好方法。斷言的使用對于在錯誤發生的那一刻捕捉程序中的錯誤和意外行為非常有效。斷言甚至可以在按契約式設計的環境中使用,以驗證契約的前置條件和后置條件是否得到滿足。

技巧4——檢查指針和緩沖區

指針和緩沖區是開發人員似乎總是讓自己陷入麻煩的兩個地方。在用C開發嵌入式系統時,很容易意外地取消對空指針的引用或溢出緩沖區。防御性的程序員應該在取消引用一個指針之前檢查它的有效性。指針是否為空?不要取消引用它!指針中存儲的值是有效值嗎?如果是,則取消引用。

指針算法和數組的使用也非常危險。嵌入式開發人員應該在緩沖區和指針算術運算中添加邊界檢查,以確保結果保持在它們應該在的內存空間內。意外地覆蓋一個字節的內存可能會給嵌入式系統帶來災難性的后果,更重要的是,會給用戶帶來災難性的后果。

技巧5——使用堆棧監視器

執行最壞情況下的堆棧分析并正確確定堆棧大小是一項艱巨的任務。通常堆棧的大小要么保留編譯器的默認設置,要么開發人員在一張紙上草草寫下一些可能的值,并使用“eeny meeny miny moe”技術。這兩種技術都不充分,最壞的情況是堆棧溢出。

開發人員可以通過監視此類事件來幫助防止堆棧溢出。大多數實時操作系統都內置了堆棧監視器。啟用堆棧監視器只不過是用RTOS的配置來調整宏。在裸機系統中,開發人員需要更加積極主動,要么自己編寫一個堆棧監視器,要么使用互聯網上提供的許多堆棧監視器中的一個。

最后的想法

這五個技巧只是嵌入式開發人員如何通過防御性編程來改進嵌入式軟件的幾個例子。還有許多其他技術,如編寫安全代碼和加密數據,可以幫助提高嵌入式系統在不可預見的情況下繼續運行的機會。

分享到:
標簽:編程
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定