背景
有时候定位
Linux驱动
的BUG时,如果能看到外设的寄存器那就很便于调试,但是临时写
ioctl命令字
不太现实,如果有一个像
netcat
那样的
通用目的
网络调试工具,是极好的。
devmem2
国外已经有人做了这个工具,名叫
devmem2
,体积很小,零依赖,代码也很简单,所以只有源码,没有编译好的deb、rpm等二进制包。
用法:
Usage: devmem2 { address } [ type [ data ] ]
address : memory address to act upon
type : access operation type : [b]yte, [h]alfword, [w]ord
data : data to be written
注意:
该工具一次只能读/写1个寄存器
用法举例
查看某个寄存器的值
dh@dh:~$ sudo devmem2 0xb0400000
/dev/mem opened.
Memory mapped at address 0xb7f3b000.
Value at address 0xB0400000 (0xb7f3b000): 0xFFFFFFFF
改写某个寄存器的值
dh@dh:~$ sudo devmem2 0xb0400000 w 0x12345678
/dev/mem opened.
Memory mapped at address 0xb7ee5000.
Value at address 0xB0400000 (0xb7ee5000): 0xFFFFFFFF
Written 0x12345678; readback 0xFFFFFFFF
-
选项
w
表示写入
int
数据,同理
h
表示
short
,
b
表示
char
ps.上面命令虽然写入失败,但命令格式正确,失败是外设自身原因,不要在意这些细节😓
版权声明:本文为happen23原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。