Linux调试备忘录1-- Linux kernel启动后,如何在用户命令行查看和修改寄存器值
2014-04-17 15:53
621 查看
Linux kernel启动后,如何在用户命令行查看和修改寄存器值?
我们知道Linux kernel启动后,由于memory map的管理,我们使用仿真器连接A8后,是无法直接访问到物理地址的。
而在这时候,Linux也会做物理地址到虚拟地址的转化,所以操作起来不是很方便,下面两条命令,让我们可以在user space中(命令行里面),可以自由的读写寄存器值,比较好用:
devmem2
读寄存器:devmem2 + 物理地址
写寄存器:devmem2 + 物理地址 + w +写入值
示例如下:
PS: 对于写入值时,“w”这个参数的定义,参考如下,多半还是在用w,下面这段全当备份好了。
switch(access_type)
{
case 'b':
*((unsigned char *) virt_addr) = writeval;
read_result = *((unsigned char *) virt_addr);
break;
case 'h':
*((unsigned short *) virt_addr) = writeval;
read_result = *((unsigned short *) virt_addr);
break;
case 'w':
*((unsigned long *) virt_addr) = writeval;
read_result = *((unsigned long *) virt_addr);
break;
}
我们知道Linux kernel启动后,由于memory map的管理,我们使用仿真器连接A8后,是无法直接访问到物理地址的。
而在这时候,Linux也会做物理地址到虚拟地址的转化,所以操作起来不是很方便,下面两条命令,让我们可以在user space中(命令行里面),可以自由的读写寄存器值,比较好用:
devmem2
读寄存器:devmem2 + 物理地址
写寄存器:devmem2 + 物理地址 + w +写入值
示例如下:
PS: 对于写入值时,“w”这个参数的定义,参考如下,多半还是在用w,下面这段全当备份好了。
switch(access_type)
{
case 'b':
*((unsigned char *) virt_addr) = writeval;
read_result = *((unsigned char *) virt_addr);
break;
case 'h':
*((unsigned short *) virt_addr) = writeval;
read_result = *((unsigned short *) virt_addr);
break;
case 'w':
*((unsigned long *) virt_addr) = writeval;
read_result = *((unsigned long *) virt_addr);
break;
}
相关文章推荐
- 如何在命令行模式下启动查看PDF 文件(Linux)
- 如何在命令行模式下启动查看PDF 文件(Linux)
- Linux如何查看进程、杀死进程、启动进程等常用命令
- LINUX命令行如何查看memcache运行状态
- Linux如何修改root用户的密码
- Linux下如何查看系统启动时间和运行时间
- 转:Linux下如何查看系统启动时间和运行时间
- Linux下如何查看系统启动时间和运行时间
- Linux下如何查看系统启动时间和运行时间
- 让普通用户具备sudo执行权限-修改linux默认启动方式
- 把linux图形启动界面修改成命令行界面
- linux 查看用户上次修改密码的日期
- Linux下如何在不解压jar包查看或修改配置文件
- Linux中如何查看修改系统的时间和时区
- GDB pretty printer: linux下用gdb调试c++时如何更好的查看STL容器值
- 6个Linux chkconfig命令实例 - 增加,删除,查看和修改services的自动启动选项
- Linux系统下如何查看及修改文件读写权限
- Linux如何查看进程、杀死进程、启动进程等常用命令
- linux下如何使用命令行查看apache日志
- 如何查看linux下曾经有哪些用户登录