資料介紹
嵌入式軟件開發往往缺乏必要的調試工具和調試手段,同時需要有較高的容錯處理能力,程序正常運行過程中盡量不因為出現異常而導致系統停止。一旦發生錯誤或異常,開發人員需要盡量多的錯誤環境信息來查找問題的原因。從程序編寫的角度來講,一般嵌入式軟件都采用C語言開發。C語言本身的特點決定了無法利用語言本身的功能實現對異常的跟蹤與處理,只能通過良好的編程模型與習慣,以及后期的大量測試,來發現和解決異常。因此,如何進一步提升程序開發中的可調試性,對于運行中的異常如何保存現場,從而方便進行異常追蹤等,是開發者需要考慮的重要問題。本文針對嵌入式C語言開發的特點,提出一種基于堆棧模式的異常追蹤編程模型,能夠實現有效的異常現場保存與恢復,并為后期的問題分析與解決打好基礎。同時,本文所提出的思路亦可作為實際運行階段提升可調試性的一種手段應用于嵌入式軟件編程中,最大限度實現對于異常發生環境的保存與定位,提升系統的可維護性。
1 建立全局錯誤代碼表
對于嵌入式軟件來說,盡量節省內存資源、降低程序代碼量是十分重要的。因此,將程序中所有錯誤、異常情況都進行了統一編碼,提高了錯誤處理代碼的規范化與可讀性。設計8位整數編碼格式如下:

每個錯誤代碼在程序中僅需要1個字節進行存儲。對于程序中每個可能異常的地方(如COM1沒打開),都設定1個唯一編號,當出現錯誤或異常時根據該編號可以直接定位到源程序對應文件和程序段,并確定錯誤類型。
采用錯誤代碼的形式存儲錯誤信息,不僅可以精確描述錯誤的類型、位置等信息,還可以最大限度地節省寶貴的可執行內存資源,降低程序對內存的需求。
2 建立全局異常堆棧
在一個復雜的嵌入式實時系統中,程序處理流程復雜,不同資源之間往往在操作上存在著交叉。當出現程序錯誤或異常時,不能簡單地退出程序,而是應當盡量將錯誤處理掉,實在無法處理的錯誤應進行記錄,但整個程序的運行不應當中斷。對此,使用1個錯誤堆棧來保存錯誤信息。該棧用下面數組定義:

ERROR_STACK為全局錯誤棧類型定義,MainErrStack為全局棧實例,其元素個數由ERR_STACK_SIZE確定。ErrorParm為字符數組,當錯誤發生時可以依次保存函數的人口參數以及異常發生之前局部變量的值等。實際數組長度ERR_ENV_LEN可以根據情況調整,一般情況下開發階段可以設置大一些,保證存放更多的錯誤信息用于調試;進入實際運行階段可以適當縮小該錯誤環境棧長度,減少內存空間的占用。
1 建立全局錯誤代碼表
對于嵌入式軟件來說,盡量節省內存資源、降低程序代碼量是十分重要的。因此,將程序中所有錯誤、異常情況都進行了統一編碼,提高了錯誤處理代碼的規范化與可讀性。設計8位整數編碼格式如下:

每個錯誤代碼在程序中僅需要1個字節進行存儲。對于程序中每個可能異常的地方(如COM1沒打開),都設定1個唯一編號,當出現錯誤或異常時根據該編號可以直接定位到源程序對應文件和程序段,并確定錯誤類型。
采用錯誤代碼的形式存儲錯誤信息,不僅可以精確描述錯誤的類型、位置等信息,還可以最大限度地節省寶貴的可執行內存資源,降低程序對內存的需求。
2 建立全局異常堆棧
在一個復雜的嵌入式實時系統中,程序處理流程復雜,不同資源之間往往在操作上存在著交叉。當出現程序錯誤或異常時,不能簡單地退出程序,而是應當盡量將錯誤處理掉,實在無法處理的錯誤應進行記錄,但整個程序的運行不應當中斷。對此,使用1個錯誤堆棧來保存錯誤信息。該棧用下面數組定義:

ERROR_STACK為全局錯誤棧類型定義,MainErrStack為全局棧實例,其元素個數由ERR_STACK_SIZE確定。ErrorParm為字符數組,當錯誤發生時可以依次保存函數的人口參數以及異常發生之前局部變量的值等。實際數組長度ERR_ENV_LEN可以根據情況調整,一般情況下開發階段可以設置大一些,保證存放更多的錯誤信息用于調試;進入實際運行階段可以適當縮小該錯誤環境棧長度,減少內存空間的占用。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- PLC編程實現堆棧功能
- STM32WB BLE 堆棧編程指南
- 社區中老年人空間行為軌跡異常分析及其實驗 12次下載
- 一種多維時間序列汽車駕駛異常點檢測模型 2次下載
- 通信協議CANOpen堆棧手冊資源下載 8次下載
- 可動態判別電網異常負荷的CNN閥值模型 12次下載
- 基于Greenshield模型的異常節點檢測機制 0次下載
- 云模型的網絡異常流量檢測 1次下載
- 基于稀疏隨機森林模型的用電側異常行為檢測 5次下載
- 基于隱馬爾可夫模型的視頻異常檢測模型 8次下載
- 基于Q-學習算法的異常檢測模型
- 基于危險模式的異常檢測模型
- MSP430 C語言編程的程序堆棧溢出分析
- 基于特征模式的馬爾可夫鏈異常檢測模型
- ARM微處理器的編程模型
- 堆棧和內存的基本知識 521次閱讀
- SPI全雙工模式下數據接收異常的一個原因 1404次閱讀
- 基于DiAD擴散模型的多類異常檢測工作 1476次閱讀
- 什么是堆棧溢出?如何分配堆棧空間大小? 4768次閱讀
- 基于星火大模型的智能編程助手iFlyCode簡介 3584次閱讀
- 使用Complete FDCB模式恢復擦寫異常的QSPI Flash 1141次閱讀
- 任務堆棧的檢測方法 2827次閱讀
- 基于異常檢測的模型表現對比 1879次閱讀
- 詳解C/C++堆棧的工作機制 1161次閱讀
- 協作組編程模型的特點及應用 1691次閱讀
- PLC編程異常的原因及處理辦法 1w次閱讀
- 基于嵌入式C語言開發中的異常堆棧錯誤追蹤機制的設計 1230次閱讀
- 編程面試最常見的14種模式 3185次閱讀
- 詳解單片機堆棧 6130次閱讀
- 基于Python 異常的介紹以及異常處理的方法解析 6301次閱讀
下載排行
本周
- 1EMC電路設計工程師必備的EMC基礎
- 0.42 MB | 4次下載 | 2 積分
- 2AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數據手冊
- 1.19 MB | 1次下載 | 免費
- 3低壓降肖特基整流管SR340L數據手冊
- 0.78 MB | 1次下載 | 免費
- 4ZX8002E 觸摸調光LED集成IC數據手冊
- 2.27 MB | 次下載 | 免費
- 5SOD-323塑料封裝ESD保護二極管SD05T系列規格書
- 1.07 MB | 次下載 | 免費
- 6SOT-23塑料封裝ESD保護二極管SMxx Series系列規格書
- 0.93 MB | 次下載 | 免費
- 7高效率整流二極管HER151 THRU HER158數據手冊
- 0.54 MB | 次下載 | 免費
- 8低壓降肖特基整流管SL22 THRU SL210數據手冊
- 1.03 MB | 次下載 | 免費
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費下載
- 27.35 MB | 111次下載 | 1 積分
- 2運算放大器基本電路中文資料
- 1.30 MB | 16次下載 | 免費
- 3蘋果iphone 11電路原理圖
- 4.98 MB | 11次下載 | 5 積分
- 4TL494工業用開關電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 8次下載 | 免費
- 6QW2893應急燈專用檢測芯片
- 590.40 KB | 4次下載 | 免費
- 7相關協議信號總結
- 0.94 MB | 4次下載 | 免費
- 8EMC電路設計工程師必備的EMC基礎
- 0.42 MB | 4次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論