a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > MIPS系統異?,F場分析工具的設計與實現

MIPS系統異?,F場分析工具的設計與實現

作者: 時間:2016-09-12 來源:網絡 收藏

是一款RISC體系結構的中央處理器,在嵌入式應用的場合,和ARM一樣,核作為IP授權給各集成電路設計廠商根據自己的特定應用生產專用的SOC(single on chip)解決方案。

本文引用地址:http://www.j9360.com/article/201609/304029.htm

為節省成本,很多嵌入的SOC實現,省掉了MIPS的J—TAG支持;或者應用MIPS核的系統,在形成產品應用到實際環境時,才出現死機等情況。無論哪種情況,都使得要解決遇到的死機問題變得非常困難。

1 處理機制

任何一個CPU都要提供一個詳細的和中斷處理機制。一個軟件系統,如操作系統,就是一個時序邏輯系統,通過時鐘,外部事件來驅動整個預先定義好的邏輯行為。本文通過設計工具載入異常內存數據(dump),然后進行反匯編,得到系統發生異常情況,定位異常所在位置及引起異常的調用堆棧,反序列出函數調用清單。

2 工具設計與實現

2.1 設計思路及流程

產品軟件在工作中,引起死機的原因,一般是非法指令或指令訪問了非法地址。而這類非法訪問,在支持虛擬地址的CPU體系中,都會引起系統的指令異常,從而進入異常服務程序。該工具根據異常的堆棧數據,配合整個程序空間的指令,列出引起死機問題的有效指令(引起異常的指令地址和函數調用返回的地址)的調用序列。從而避免到處懷疑代碼,加入各種觀察代碼勞心費力的抓取死機現象來解決問題這種低效的方式。該工具對其他的硬件原因引起的死機問題,不在分析之列。流程圖如圖1。

MIPS系統異常現場分析工具的設計與實現

2.2 設計準備

1)在發布系統程序前,確保系統中異常服務程序,處于活動狀態;異常服務程序中,對于數據和指令引起的異常,要輸出(dump)引起異常任務當時的堆棧數據。

2)發布系統程序時,保留源碼和系統對應的反匯編代碼備用。

3)在系統運行過程中,保持對系統串口的接收就緒狀態,一旦系統發生異常引起死機,將接收的數據保存到文件(即所指的serial.log文件)。

2.3 反匯編解析

1)復制腳本文件disassemble.sh到ygwinsrcgnutoolsmipsisa32-elfbin目錄下。

2)打開Cygwin,在命令行運行disassemble.shOBERON.elf,生成OBERON.elf.lst文件。如圖2。

MIPS系統異?,F場分析工具的設計與實現

3)運行MStarAnaWexe軟件,在反匯編文件欄添加OBERONelf.list文件,在輸出記錄欄添加serial.log文件,如圖3。

MIPS系統異?,F場分析工具的設計與實現

4)添加serial.log文件之后系統自動切換到檢查堆棧信息界面,如圖4。

2.4 堆棧分析

1)一般情況下,本工具自動完成結果,在屏幕上依次顯示堆棧調用情況,前面的是被調用函數,后面的是調用者。

2)在分析過程中,可能會需要使用者輸入兩個參數,這時需要使用這根據輸出結果分析匯編代碼,輸入正確的值這兩個值一個是匯編函數的返回地址所在的對邊偏移,一個是本函數的堆棧使用情況。返回地址要查看兩個相關的匯編代碼,“jr ra”即為函數返回指令,與之相關的另一條指令為“swra,xx(sp)”,“lw ra,xx(sp)”,前者是將ra寄存器的值保存到以sp為基址偏移為xx的堆棧中,后者從以sp為基址偏移xx的堆棧中取得數據載入ra寄存器。因此只需要從其中任意一個指令都能得到返回地址在堆棧中的偏移當一個函數中有兩個以上的單向改變sp內容的指令出現以后,本工具就無法推算出正確的函數占用堆棧情況了,此時需要使用者閱讀匯編代碼,輸入正確的值。一般這類指令為

“addi sp,sp,-xx”,“addiu sp,sp,-xx”,“addiu sp,reg,mm”,只要sp跟在指令后面,那就有可能是改變了堆?;羔槨H缓蟾鶕暮瘮甸_始到調用(屏幕上)上一個函數出現的位置,將其偏移值累加,相應的,“sw ra,xx(sp)”后面出現的sp變化值也要累加到返回值偏移上去。

3)就圖3而言,在堆棧指針偏移欄中輸入40,在返回地址基于堆棧指針的偏移欄中輸入32,然后確定,就會自動跳轉到如圖5。

MIPS系統異?,F場分析工具的設計與實現

4)同樣在相應的選項中輸入對應的指針偏移量之后,確定。得到如圖6。

5)堆棧分析完成,死機的情況是由于圖5中的5個函數(最后倆個去除)引起。

6)可拷貝函數之前的地址(如:_Zapper_Signal函數的地址是80041e98)到OBERON.elf.lst文件查找對應的匯編運行代碼,如圖7。

MIPS系統異?,F場分析工具的設計與實現

7)依以上步驟查看導致錯誤的匯編代碼或者在工程文件中對應函數加入調試,查看代碼中存在那些錯誤。

3 結束語

正確快速查找出現的異常并能快速分析解決軟件健壯性和穩定性的關鍵問題,該工具在滿足以上條件的同時,實現如MIPS指令模擬器、MIPS斷點調試等功能的擴展,具有比較強的推廣性。



評論


相關推薦

技術專區

關閉