資料介紹
隨著實時嵌入式系統(tǒng)的復雜程度不斷提高,低效率的調試方法的成本日益增加。鑒于當前嵌入式應用的復雜性還有繼續(xù)上升的趨勢,對這些系統(tǒng)的調試將成為加速產(chǎn)品上市和提供魯棒性最終產(chǎn)品的關鍵因素。隨著應用對多線程和中斷嵌套的使用,開發(fā)商的大部分時間目前都花在調試上。應用的實時屬性使得將伴隨同時發(fā)生多個事件的故障問題孤立起來變得更為困難。本文將討論常見的調試問題以及預防和檢查這些故障問題的一些方法。
從歷史角度上來看,嵌入式應用代碼的調試流程可以分為兩類。第一類調試流程是回答 “我的代碼現(xiàn)在執(zhí)行到哪里?” 的問題。當開發(fā)商依靠打印語句或者LED的閃爍來指示應用程序執(zhí)行到某個節(jié)點的調試方法時,往往就屬于這種情形。如果開發(fā)工具支持這種調試方法,可以沿著應用應當程序應當執(zhí)行的路徑插入斷點。第二類調試流程是幫助回答“我看到的這一數(shù)值是從哪里來的?”這一問題。在這種情況下,人們往往依靠寄存器顯示窗口觀察變量信息、處理器內存的內容。人們還可以嘗試單步執(zhí)行,并且觀察所有這些數(shù)據(jù)窗口以了解某個寄存器狀態(tài)何時出現(xiàn)錯誤,內存位置何時得到錯誤的數(shù)據(jù),抑或指針何時出現(xiàn)了誤用。
當開發(fā)商寫完全部代碼后,如果無需了解網(wǎng)絡基礎設施,也沒有操作系統(tǒng)的任務調度需要考慮,那么就可以利用這些調試方法使一個應用程序運行起來。然而,現(xiàn)在的情況并非如此。嵌入式處理器以超過600 MHz的速度運行,并且擁有可支持Ethernet和USB等協(xié)議的嵌入式外設,它們支持功能齊備的操作系統(tǒng),例如uClinux,而且這些操作系統(tǒng)所調度的各種應用程序是由數(shù)千行代碼構成。使用打印語句和利用LED來調試是不現(xiàn)實的,因為現(xiàn)在常常有如此之多的功能在執(zhí)行是不可能的,或者它們會影響標準I/O口,從而造成處理器性能大幅度下降。
也可能發(fā)生這樣的情況:處理器的工作速度是如此之快,以至于LED的亮滅速度會快到人眼無法察覺。另外現(xiàn)代的嵌入式系統(tǒng)通常支持斷點的設定,但是伴隨這些處理器所運行的代碼數(shù)量,使得這種類型的斷點調試難以駕馭。中斷和多線程系統(tǒng)在代碼的任何一點上設置一個斷點,可能都無法指示系統(tǒng)的正確狀態(tài)。由于斷點設置在物理內存的某個地址上,索引不必了解線程的狀態(tài)。如果使用寄存器顯示方法,那么局部變量窗口和內存窗口都將有助于隔離出所載入的不恰當?shù)牧恐?,但是,由于這些是靜態(tài)化的工具,不能給出有意義的運行中的調試信息,其適用性也常常很有限。
實時嵌入式系統(tǒng)軟件最常見的調試問題可以大致劃分為如下幾類:
1. 同步問題
2. 內存和寄存器訛誤(corruption)
3. 與中斷相關的問題
4. 硬件配置問題
5. 異常情況
同步問題
在任何系統(tǒng)中,只要有多串序線程或者進程都在運行,而且是異步共享數(shù)據(jù),則系統(tǒng)必然存在同步問題。對于共享數(shù)據(jù)的全部操作必須是原子化的,也就是說,只有在一個線程或者進程完成對數(shù)據(jù)的操作后,其它的線程才能對數(shù)據(jù)進行操作。
以圖1為例,線程A和線程B對共享變量“counter”進行操作,A讓counter 增加,而B則讓counter減少。下方示出了線程A的counter++和線程B counter—的匯編代碼。假設線程B的優(yōu)先級要高于線程A,而線程A目前正在運行,則線程B將被阻止。
![實時嵌入式系統(tǒng)調試解析](/uploads/allimg/171104/2362486-1G104103311139.png)
舉例來說,假設初始的計數(shù)值是2,而線程A是執(zhí)行線程。則線程A讀入計數(shù)值,并送入一個寄存器,在使其增加一個增量后,再將其寫回計數(shù)器變量上。
在可搶先的多線程系統(tǒng)中,高優(yōu)先級的線程的執(zhí)行可以搶先于低優(yōu)先級的線程。例如,假定線程A執(zhí)行Reg1 = Reg1+1指令后,一個事件喚醒線程B。此時,Reg1儲存量值3。現(xiàn)在線程B被喚醒(正如藍線所標示的那樣),并讀入計數(shù)器的量值2(它尚未被線程A刷新)并將其量值減小到1。正如棕色的線所顯示的那樣,經(jīng)過一段時間,線程A恢復運行,將Reg1寫入計數(shù)器中,而該計數(shù)器的儲存量值為3。 在這個過程中,線程B的減量操作結果被丟棄。計數(shù)器存儲的量值變?yōu)?,即線程A進行一次增量后,線程B又進行了一次減量操作。被竄改的鏈接表則是另一個例子。如果數(shù)據(jù)被一個線程和中斷例程共享,則也會出現(xiàn)上面的問題,因為中斷的執(zhí)行與線程的執(zhí)行之間是異步關系。
從歷史角度上來看,嵌入式應用代碼的調試流程可以分為兩類。第一類調試流程是回答 “我的代碼現(xiàn)在執(zhí)行到哪里?” 的問題。當開發(fā)商依靠打印語句或者LED的閃爍來指示應用程序執(zhí)行到某個節(jié)點的調試方法時,往往就屬于這種情形。如果開發(fā)工具支持這種調試方法,可以沿著應用應當程序應當執(zhí)行的路徑插入斷點。第二類調試流程是幫助回答“我看到的這一數(shù)值是從哪里來的?”這一問題。在這種情況下,人們往往依靠寄存器顯示窗口觀察變量信息、處理器內存的內容。人們還可以嘗試單步執(zhí)行,并且觀察所有這些數(shù)據(jù)窗口以了解某個寄存器狀態(tài)何時出現(xiàn)錯誤,內存位置何時得到錯誤的數(shù)據(jù),抑或指針何時出現(xiàn)了誤用。
當開發(fā)商寫完全部代碼后,如果無需了解網(wǎng)絡基礎設施,也沒有操作系統(tǒng)的任務調度需要考慮,那么就可以利用這些調試方法使一個應用程序運行起來。然而,現(xiàn)在的情況并非如此。嵌入式處理器以超過600 MHz的速度運行,并且擁有可支持Ethernet和USB等協(xié)議的嵌入式外設,它們支持功能齊備的操作系統(tǒng),例如uClinux,而且這些操作系統(tǒng)所調度的各種應用程序是由數(shù)千行代碼構成。使用打印語句和利用LED來調試是不現(xiàn)實的,因為現(xiàn)在常常有如此之多的功能在執(zhí)行是不可能的,或者它們會影響標準I/O口,從而造成處理器性能大幅度下降。
也可能發(fā)生這樣的情況:處理器的工作速度是如此之快,以至于LED的亮滅速度會快到人眼無法察覺。另外現(xiàn)代的嵌入式系統(tǒng)通常支持斷點的設定,但是伴隨這些處理器所運行的代碼數(shù)量,使得這種類型的斷點調試難以駕馭。中斷和多線程系統(tǒng)在代碼的任何一點上設置一個斷點,可能都無法指示系統(tǒng)的正確狀態(tài)。由于斷點設置在物理內存的某個地址上,索引不必了解線程的狀態(tài)。如果使用寄存器顯示方法,那么局部變量窗口和內存窗口都將有助于隔離出所載入的不恰當?shù)牧恐?,但是,由于這些是靜態(tài)化的工具,不能給出有意義的運行中的調試信息,其適用性也常常很有限。
實時嵌入式系統(tǒng)軟件最常見的調試問題可以大致劃分為如下幾類:
1. 同步問題
2. 內存和寄存器訛誤(corruption)
3. 與中斷相關的問題
4. 硬件配置問題
5. 異常情況
同步問題
在任何系統(tǒng)中,只要有多串序線程或者進程都在運行,而且是異步共享數(shù)據(jù),則系統(tǒng)必然存在同步問題。對于共享數(shù)據(jù)的全部操作必須是原子化的,也就是說,只有在一個線程或者進程完成對數(shù)據(jù)的操作后,其它的線程才能對數(shù)據(jù)進行操作。
以圖1為例,線程A和線程B對共享變量“counter”進行操作,A讓counter 增加,而B則讓counter減少。下方示出了線程A的counter++和線程B counter—的匯編代碼。假設線程B的優(yōu)先級要高于線程A,而線程A目前正在運行,則線程B將被阻止。
![實時嵌入式系統(tǒng)調試解析](/uploads/allimg/171104/2362486-1G104103311139.png)
舉例來說,假設初始的計數(shù)值是2,而線程A是執(zhí)行線程。則線程A讀入計數(shù)值,并送入一個寄存器,在使其增加一個增量后,再將其寫回計數(shù)器變量上。
在可搶先的多線程系統(tǒng)中,高優(yōu)先級的線程的執(zhí)行可以搶先于低優(yōu)先級的線程。例如,假定線程A執(zhí)行Reg1 = Reg1+1指令后,一個事件喚醒線程B。此時,Reg1儲存量值3。現(xiàn)在線程B被喚醒(正如藍線所標示的那樣),并讀入計數(shù)器的量值2(它尚未被線程A刷新)并將其量值減小到1。正如棕色的線所顯示的那樣,經(jīng)過一段時間,線程A恢復運行,將Reg1寫入計數(shù)器中,而該計數(shù)器的儲存量值為3。 在這個過程中,線程B的減量操作結果被丟棄。計數(shù)器存儲的量值變?yōu)?,即線程A進行一次增量后,線程B又進行了一次減量操作。被竄改的鏈接表則是另一個例子。如果數(shù)據(jù)被一個線程和中斷例程共享,則也會出現(xiàn)上面的問題,因為中斷的執(zhí)行與線程的執(zhí)行之間是異步關系。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- ucosII嵌入式實時操作系統(tǒng)實驗
- arm11嵌入式系統(tǒng)實時網(wǎng)絡通信和lcd顯示的實現(xiàn)
- ARM11嵌入式系統(tǒng)實時網(wǎng)絡通信和PWM波輸出控制的實現(xiàn)
- 嵌入式LINUX系統(tǒng)內核和內核模塊調試
- Linux+嵌入式實時操作系統(tǒng)開發(fā)與應用
- VivadoHLS嵌入式實時圖像處理系統(tǒng)的構建與實現(xiàn)優(yōu)先出版 0次下載
- 嵌入式實時操作系統(tǒng)FreeRTOS在ARM7上移植實現(xiàn)
- 嵌入式教程之嵌入式實時操作系統(tǒng)RTEMS的詳細資料介紹 27次下載
- 實時操作系統(tǒng)用于嵌入式應用系統(tǒng)的設計 42次下載
- 嵌入式系統(tǒng)及其實時軟件的開發(fā) 55次下載
- 基于嵌入式Web實時監(jiān)控系統(tǒng)的設計
- 通過任務分割提高嵌入式系統(tǒng)的實時性
- 嵌入式實時操作系統(tǒng)教程
- 嵌入式實時系統(tǒng)及其在煙機中的應用
- 基于ARM的嵌入式系統(tǒng)軟件設計
- 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應用 2563次閱讀
- 基于優(yōu)先級調度的嵌入式實時操作系統(tǒng)內核詳解(下) 936次閱讀
- 基于實時嵌入式操作系統(tǒng)mC/OS-II實現(xiàn)GPRS終端系統(tǒng)的設計 2408次閱讀
- 嵌入式系統(tǒng)的全面解析 3280次閱讀
- 如何實現(xiàn)嵌入式系統(tǒng)遠程調試 5401次閱讀
- 米爾科技嵌入式實時操作系統(tǒng)介紹 2348次閱讀
- 基于嵌入式軟件的JNI技術應用解析 1106次閱讀
- 從嵌入式系統(tǒng)到嵌入式操作系統(tǒng) 761次閱讀
- 基于嵌入式實時系統(tǒng)的提高構件化嵌入式操作系統(tǒng)性能的方案設計 850次閱讀
- 關于嵌入式系統(tǒng)的特點和Linux內核的實時應用分析 1141次閱讀
- 基于FPGA嵌入式系統(tǒng)的智能小車全面解析 9454次閱讀
- 基于嵌入式系統(tǒng)的物流管理終端的系統(tǒng)解析 2084次閱讀
- 嵌入式系統(tǒng)調試方法介紹 提高診斷能力 2231次閱讀
- 一種采用特殊緩存機制和解析機制的嵌入式軟件實時跟蹤系統(tǒng) 1151次閱讀
- 基于FreeRTOS的嵌入式實時操作系統(tǒng)的原理和實現(xiàn) 6714次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論