除錯裝置驅動程式

2021-07-14 05:41:18 字數 1517 閱讀 7954

linux核心沒有整合對偵錯程式的支援。

指令級的kdb(kernel debudgger 核心偵錯程式)

源**級偵錯程式kgdb(kernel gnu debugger) 核心gnu偵錯程式

udev 工作

1.核心中的sysfs支援,sysfs是linux裝置模型的重要組成部分。位於記憶體中,在啟動時被掛載在/sys目錄下

2.一套使用者空間守護程式和實用工具 ,如udevd 和udeinfo

3.使用者自定義的規則,位於etc/udev/rules.d

如有兩驅動器,乙個usb ***驅動器 另乙個usb cd-rw驅動器。根據熱插拔裝置的順序不同,乙個命名為dev/sr0,l另外乙個dec/sr1

在沒有udev情況下,必須這樣區分對應的裝置。但是有udev後,不管什麼順序都能區分

乙個 命名 dev/usb******

乙個命名dev/usbcdrwcd_rw

首先,從sysfs相應的檔案中提取產品資訊。假定targus ***驅動器被分配的裝置節點為 

/dev/sr0

/dev/sr1

使用udevinfo 可收集的裝置資訊

bash>udevinfo -a -p /sys/block/sro

bash>udevinfo -a -p /sys/block/sr1

looking at the device chain at

'/sys/device/pci000:00/000:00:ld.7/usb1/1-3':

bus=="usb"

id=="1-3"

sysfs=="2"

sysfs=="0302"

sysfs=="0dbf"

sysfs=="addonics"

sysfs=="0"

sfsfs=="usb to ide cable"

根據收集到的產品資訊標識裝置並且新增到udev命名規則

建立/etc/udev/rules.d/40-c***.rules

命令從shell指令碼中掛載裝置

mount/dev//usb***/mnt/***

測試語法規則是否錯誤,用

/sys/blcok/sr* 執行udevtest

核心的結構化裝置模型在使用者空間就稱為 sysfs

procfs是檢視核心的乙個通用視窗。而sysfs則對應特定的裝置模型。

kobject 封裝了一些共用物件屬性,通常嵌入在更大的資料結構中

bus_register()為/sys/bus增加乙個相應的的入口

device_register() 為sys/devices 增加相應的入口

3個結構體

bus_type

匯流排 device裝置

device_driver驅動程式

混雜裝置驅動 (rtc驅動程式)

bash>modproble rtc 

bash>ls -lr /sys/class/misc

bash>ls -1/dev/rtc    

linux裝置驅動程式除錯

一 寫linux裝置驅動程式最難的地方就是沒有強大的除錯工具,一般間接或者直接的除錯手段 1.利用printk 2.檢視oop訊息 3.利用strace 4.利用核心內建的hacking選項 5.利用ioctl方法 6.利用 proc檔案系統 7.使用kgdb 8.使用systemtap 二 1,利...

如何除錯裝置驅動程式

引 使用 platform builder,可以在驅動程式開發過程中的任意時刻除錯裝置驅動程式。驅動程式除錯是開發用於 windows ce 的驅動程式的更大過程的一部分。有關開發驅動程式的詳細資訊,請參閱如何建立裝置驅動程式。platform builder 提供了用於除錯驅動程式的工具,例如,核...

Linux裝置驅動程式 驅動除錯printk

前一段時間學了一下,printk 列印語句,現在用起來又忘了,看了一下前一段時間做的筆記,不是很詳細,所以決定再寫一下和printk相關的除錯的東西。算是複習一下吧。首先,先熟悉一下printk函式,這個函式和printf函式很類似。只不過乙個執行在使用者態,乙個執行在核心態。此外還是要熟悉一下終端...