移動互連網裝置(Mobile Internet Device)開發基於定製設計的平台或者嵌入式應用程式的中心層面是增強和定製底層OS的功能集,對於封閉系統更是如此。此外,您可能希望串連到專用硬體平台擴充並為此編寫自己的驅動程式。一些多媒體編解碼最佳化也可以很好地應用於裝置驅動程式水平。
針對移動互連網裝置的Intel C++ JTAG Debugger for Linux* OS提供的功能集可以協助進行OS配適和驅動程式開發,並能為缺陷修複、驗證和品質保證提供協助。在本白皮書中,我們主要討論調試Linux OS增強、Linux核心組件以及運行時載入的核心模組的方法。
概述
包含於支援移動互連網裝置的Intel C++ Software Development Tool Suite for Linux* OS中包含的支援移動互連網裝置的Intel C++ JTAG Debugger for Linux* OS是一個全圖形化使用者介面的系統調試器。使用它需要目標裝置有一個 Intel eXtended Debug Port(XDP)和一個 ITP-XDP3Intel IN-Target-Probe。
Intel C++ JTAG Debugger的目標使用者是初始裝置製造商和初始設計製造商(OxM),他們需要具備獨立開發裝置驅動程式和採用低水平OS核心層平台的能力。
這類軟體開發人員需要深入瞭解嵌入式OS啟動並執行硬體。同時,開發人員不必放棄便於使用的圖形化使用者介面以及他們習慣的進階語言支援調試功能。
完整的Intel Atom構架支援提供處理器技術的完全視圖。可以輕鬆訪問大部分特定於
Si的功能,
包括構架寄存器,Intel SSE3 和圖形配套晶片寄存器。Bitfield Editors提供深入全面的文檔型便捷訪問,可以在其中查看和修改寄存器。
Bitfield Editors不僅適用於標準寄存器,也適用於描述符表條目。
l 不僅可以很方便的進行查看和修改描述符表以進行調試,而且可以很方便地訪問Page Translation Table和即時顯示活動記憶體映射。
l 執行追蹤支援增強了對執行程式流的理解。這非常有助於防止記憶體流失,資料結構校準和執行流問題。顯示系統調試執行追蹤提高了調試效率。
l Linux OS Awareness功能能夠在任何時間全面掌握系統的行為。顯示所有相關的核心資訊,活動核心線程和載入的核心模組,並在OS環境下對它們進行調試。
該調試器擴充的硬體訪問和OS感知功能還意味著,它能夠通過JTAG遠端偵錯動態載入的核心模組(即裝置驅動程式),只需在目標上啟動工具套件提供的核心模組即可。這個專用的核心模組可以匯出所有模組載入事件和記憶體位置,因此JTAG調試器及其OS感知外掛程式可以利用這些資訊,輕鬆便捷地進行裝置驅動程式調試。更多細節請閱讀版本說明和調試器文檔。
基本原理
JTAG不支援目標軟體,這給通過它進行裝置驅動程式和系統服務調試增添了困難。由於裝置驅動程式通常實現為運行時載入的動態核心模組,所以需要對調試器實施一個匯出核心載入和卸載事件的機制。核心水平符號匯出及事件通知的目的是使調試器監視OS核心符號,這些符號包含核心模組的記憶體載入地址資訊,以及有關核心模組狀態地址、載入和初始化方法的資訊。
達到這種目的的方法有很多,傳統的方法需要調整要調試的核心模組。這是一個激進的方法,需要通過定義或刪除核心模組內的調試排列以釋放代碼塊。這種方法使錯誤或運行時問題的分析變得很複雜,有可能只有在終端使用者收到裝置驅動程式後才能顯示出來。
另一種方法需要一個OS核心的核心補丁,用來觸發Linux*OS匯出所有必需資訊。這種操作實際只需要記憶體幾KB的系統開銷。當沒有串連調試器來查詢匯出符號時,這些補丁對運行時沒有任何影響。但是值得注意的是,這種方法會產生調試鉤子,這可能讓競爭者可以很容易地分析程式碼程式庫。但這至少避免了一種情況,即不必在每次調試的時候都要構建一次裝置驅動程式代碼。
最好的解決方案既不需要核心模組調整也不需要核心補丁,而是核心模組本身來實施核心模組載入資訊匯出功能。這樣,使用者可以選取已有的任何目標平台而不必重新編譯核心或者要調試裝置驅動程式的偵錯項目。
本白皮書提供如何使用支援移動互連網裝置的IntelC++ JTAG Debugger for Linux* OS 執行調試的簡明教程和使用情境。
構建核心模組以匯出載入資訊
運行時載入的核心模組調試功能是 Intel C++ JTAG Debugger中Linux* OS感知外掛程式的一部分,使用者需要在目標裝置上安裝並運行核心模組idbntf.ko後才能使用。檔案夾
/opt/intel/xdb/1.0.xxx/kernel-modules/idbntf
包含產生Linux*核心模組的編碼,可以啟用核心模組調試功能。使用
/opt/intel/xdb/1.0.xxx/kernelmodules/idbntf/Makefile
在此檔案夾中運行make即可建立idbntf.ko核心模組。
要產生,只需將這些檔案轉移到使用者目標系統,然後調用make。這將產生核心對象 idbntf.ko。
要啟用模組調試,此對象必須在通過命令insmod idbntf.ko.啟動調試器之前載入。然後,它將匯出。初始化方法和cleanip方法將資訊從目標載入到調試器。完成調試對話後,可以使用rmmod idbntf卸載模組。
啟動調試對話
1. 首先,在shell環境下,確保XDP Debugger啟動指令碼位於
/opt/intel/xdb/1.0.xxx/xdb.sh
設定如下
#!/bin/bash
# Intel(R) JTAG Debugger for MIDs
# Copyright (C) 2000-2008 Intel
Corporation. All rights reserved.
INSTALLDIR=/opt/intel/xdb/1.0.008
export
LD_LIBRARY_PATH="$INSTALLDIR/lib:$INS
TALLDIR/gui:$INSTALLDIR/plugin/ia/lin
os:$INSTALLDIR/plugin/ia/trace:$INSTA
LLDIR/plugin/ia/flash":$LD_LIBRARY_PA
TH
export
PATH="$INSTALLDIR/gui:$INSTALLDIR/lib
":$PATH
export IDB_GUI_DEBUGGER="../lib/XDB"
dbggui -tgttype ’JTAGIA’ -IUDGmode -
plg
’libguiialin.so,libiatrace.so,libplgflashw.
so’ -core 1 -target
device=’XDP3’
scanchain=’TargetPlatform’ hotdebug
"$@"
如果出現以下情況:它不包含上述設定;In-Target Probe eXtended Debug Port設定沒有指定XDP3;指定目標不是預期的處理器或者Linux OS感知的共用對象外掛程式之一;Flash Writing 丟失,那麼請在xdb.sh指令碼上修改設定
2. 檢查XDP3 JTAG探測器是否已經與目標板上標有JTAG的eXtended Debug Port穩固串連。同時檢查探測器與USB電纜和實驗電腦上USB連接埠的串連。
3. 更改為調試器目錄
chdir /opt/intel/xdb/1.0.xxx
4.啟動XDB Debugger
./xdb.sh
5. 如果串連失敗請檢查Linux Console Window
調試Linux核心
請點擊此處下載,查看全文