實踐是每個固件應(yīng)用程序都應(yīng)該遵循的基本的、基本的實踐。防御性編程一直是一項重要的軟件技能。以下是嵌入式開發(fā)人員應(yīng)牢記的一些使用C進(jìn)行防御性編程的實踐:
l 檢查功能的輸入和輸出
l 檢查函數(shù)的返回值(它們經(jīng)常被忽略!)
l 監(jiān)控緩沖區(qū)以防止溢出
l 驗證指針不為空,尤其是函數(shù)指針
l 使用斷言宏來檢測錯誤而不是錯誤條件
l 2–3%的代碼應(yīng)該是斷言
l 斷言不應(yīng)該修改系統(tǒng)的狀態(tài)
l 僅公開大型程序需要知道的數(shù)據(jù)和函數(shù)(封裝)
l 在構(gòu)建過程中執(zhí)行靜態(tài)分析
l 監(jiān)視堆棧是否溢出
l 用已知模式、ISR向量或stop指令填充未使用的ROM
l 看門狗系統(tǒng)應(yīng)該是綜合的,不能盲目寵看門狗
嵌入式開發(fā)人員遵循這些簡單的實踐有助于確保提高固件質(zhì)量,這是開發(fā)安全固件的第一步。