devmem除錯核心驅動

2021-07-15 13:07:18 字數 2177 閱讀 9484

在linux開發中著實用到的除錯工具並不是很多。devmem的方式是提供給驅動開發人員,在應用層能夠偵測記憶體位址中的資料變化,以此來檢測驅動中對記憶體或者相關配置的正確性驗證。

devmem2使用方法:

devmem2 [ type [ data ] ]

address : 實體地址

type :要訪問的資料型別 : [b]yte, [h]alfword, [w]ord

data :想要寫入的資料,若為讀取操作則省略此引數,若為寫入,則必須含有此引數。

如下就貼出devmem2的源**一**竟。

01.

#include

02.#include

03.#include

04.#include

05.#include

06.#include

07.#include

08.#include

09.#include

10.#include

11.#include

12.13.

#define fatal do while(0)

15.16.

#define map_size 4096ul

17.#define map_mask (map_size - 1)

18.19.

int main(int argc, char **argv) [ type [ data ] ]\n"

28."\taddress : memory address to act upon\n"

29."\ttype : access operation type : [b]yte, [h]alfword, [w]ord\n"

30."\tdata : data to be written\n\n",

31. argv[0]);

32.exit(1);

33. }

34. target = strtoul(argv[1], 0, 0);

35.36.

if(argc > 2)

37. access_type = tolower(argv[2][0]);

38.39.

40.if((fd = open("/dev/mem", o_rdwr | o_sync)) == -1) fatal;

41.printf("/dev/mem opened.\n");

42. fflush(stdout);

43.44.

/* map one page */

//將核心空間對映到使用者空間

45. map_base = mmap(0, map_size, prot_read | prot_write, map_shared, fd, target & ~map_mask);

46.if(map_base == (void *) -1) fatal;

47.48. fflush(stdout);

49.50. virt_addr = map_base + (target & map_mask);

51.//針對不同的引數獲取不同型別記憶體資料

52.switch(access_type)

66.printf("value at address 0x%x (%p): 0x%x\n", target, virt_addr, read_result);

67. fflush(stdout);

68.//若引數大於3個,則說明為寫入操作,針對不同引數寫入不同型別的資料

69.if(argc > 3)

85.printf("written 0x%x; readback 0x%x\n", writeval, read_result);

86. fflush(stdout);

87. }

88.89.

if(munmap(map_base, map_size) == -1) fatal;

90. close(fd);

91.return

0;

92.}

核心驅動載入除錯 1

背景知識 1 驅動相關 驅動在硬體上 作業系統提供給應用程式介面以下.windows2000 xp 上的裝置驅動程式不直接操作硬體,而是呼叫 hal功能作為與硬體的介面。windows2000 xp 上有如下幾種型別的裝置驅動程式 1。硬體裝置驅動程式操作硬體,它將輸出寫入物理裝置或網路,並從物理裝...

核心驅動載入除錯 2

在上一節說明了如何編寫簡單的核心驅動程式後,本節說明,建立核心驅動程式的整合開發環境.簡單說來,一共9個步驟.1.安裝winddk以及安裝ddkwizard.相關版本 ddkwizard setup v1.2.0a,ddkbuild bat.zip,ddkbuild cmd.zip 2.拷貝下面的檔...

Windbg除錯核心驅動方法

一般說來,調速驅動程式分為兩種 1.存在pdb檔案的除錯 這裡的pdb檔案其實就是除錯符號檔案,假如我們除錯的這樣的檔案,我們可以再windbg中使用 bp 驅動名 driverentry,這個時候當載入驅動的時候,程式就會斷在入口了。2.沒有pdb檔案的除錯 在除錯別人的驅動程式時,也就是自己只有...