提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:仅仅用于学习记录
这里是对寄存器的一些认识!!!随手记
一、寄存器是什么?
- 硬件理解:读写速度极快,快于Cache,是用来保存数据;
- 软件理解:就是一个变量, 亦是用于保存数据和判断操作;(对应不同寄存器的不同功能)
- 寄存器种类:
- 程序状态字寄存器PSW,指令寄存器IR,数据寄存器DR,程序计数器PC,地址寄存器AR,累加寄存器AC (CPU中)
- GEM5 中 存在:Ctrl状态控制寄存器 stat状态寄存器 读写寄存器
二、读写寄存器 - devmem
- 内核调试实用工具 — devmem 大概很多做底层驱动的人会经常使用到
- Gem5中进行调试框架是否搭建ok?便可以进行使用
1.使用方法 – 命令格式
- ADDRESS:物理地址
- WIDTH:位宽
- VALUE: 要写入的值
示例:读取32位寄存器0x40200000的值
devmem 0x40200000 32
示例:向32位寄存器0x40200000写入0x12345678
devmem 0x40200000 32 0下2345678
这样就可以进行简单的利用devmem进行轻松访问寄存器
2.内核配置devmem
- devmem 命令依赖于/dev/mem设备节点,需要在Linux内核中打开/dev/mem的配置
3.Linux应用层操作寄存器
- 除了直接使用devmem,我们也可以在Linux应用层自己实现一个devmem。
- devmem的实现原理,就是打开/dev/mem,然后通过mmap映射物理地址,从而实现读写寄存器。因此,我们只要实现这些操作,就可以自己实现类似devmem的功能。
总结
简单介绍了一下寄存器,然后以及在gem5中使用gem5debug标签使用devmem工具进行杀虫子bug!devmem是一个比较常用的工具,主要使用对象是驱动开发人员。devmem不仅仅是读写寄存器,只有有权限访问的物理地址即可