devmem

来源:互联网 发布:java poi excel 编辑:程序博客网 时间:2024/06/06 00:57

在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。

 其实这个工具的原理也比较简单,就是应用程序通过mmap函数实现对/dev/mem驱动中mmap方法的使用,映射了设备的内存到用户空间,实现对这些物理地址的读写操作。使用方法:

  1. 用法: devmem2 { address } [ type [ data ] ]
  2. address : 物理地址
  3. 如果是要修改该地址的数据,需要填入下面的参数;如果只是读取,省略即可
  4. type :要访问的数据类型 : [b]yte, [h]alfword, [w]ord
  5. data :想要写入的数据
通过使用,发现IO内存和物理内核都可以读写。
-----------------------------------------------------------------------------------------
  在后来的模块调试中,有一次需要查看内核虚拟地址中的数据,我又想起了“/dev/kmem”,直接就在网上找了一个通过这个节点读取(仅支持读取)内核虚拟地址中的数据。经过测试,只适用于内核逻辑地址。
加入Makefile后打包,分享如下:
 devkmem.zip   

源码下载地址:使用/dev/kmem读取内核变量的值
使用方法:
  1. 用法: devkmem { address }
  2. address : 虚拟地址(内核逻辑地址)
-----------------------------------------------------------------------------------------------
/dev/mem和/dev/kmem其实是在同一个驱动中代码中产生的:drivers/char/mem.c

原创粉丝点击