linux 读取物理寄存器

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, void** argv) {
void* base;
int fd, reg;

fd = open("/dev/mem", O_RDWR | O_SYNC);
if (fd < 0) {
printf("ERR: device open failed.\n");
return -1;
}

base = mmap(NULL, 0x1000, PROT_READ, MAP_SHARED, fd, 0x20E0000);
if (base == 0) {
printf("ERR: mmap failed.\n");
close(fd);
return -1;
}

if (argc > 1) {
reg = strtol(argv[1], NULL, 16);
printf(">>> %08X is %08X\n", 0x20E0000 + reg, *((unsigned int*)(base + reg)));
}
munmap(base, 0x1000);
close(fd);
return 0;
}

时间: 2024-09-20 10:34:28

linux 读取物理寄存器的相关文章

嵌入式-怎么读取stm32寄存器的值,通过串口打印出来

问题描述 怎么读取stm32寄存器的值,通过串口打印出来 可以是各个SR,DR,通过这样可以判断寄存器里面的数据吧,不然调试出错都找不到原因 解决方案 http://zhidao.baidu.com/link?url=_irhgaQ06PpswU-9y2CzedwRzNaAdKKcfvAdMQ8zjylBqPHthWbpcOKtUPF6JNE3N5U9bHHD1CXJJGGySW01c_ 解决方案二: CPU寄存器的读取方式,其实就是读取某个地址中存储的数据,只不过这个地址是芯片厂商规定好用于特

linux 读取input输入设备demo

/******************************************************************* * linux 读取input输入设备demo * 说明: * 本文主要是解读以前同事写的input设备的一个demo程序. * * 2016-3-24 深圳 南山平山村 曾剑锋 ******************************************************************/ #include <stdio.h> #in

Linux读取原Windows磁盘分区

一.安装双系统时,必须确保先安装Windows ,然后安装Linux,否则Windows将不可用,由它们的文件系统决定的: 二.安装Linux系统成功后,可能需要读取原Windows系统的磁盘内容,则需要在Linux系统下安装NTFS-3G工具,无需手动挂载磁盘,实验系统(Centos7). 三.安装NTFS-3G:直接使用yum 即可,安装后,则可以在文档目录下看到原磁盘内容,之所以Linux无法查看到原磁盘,主要是不识别NTFS格式,安装工具后,你将发现其他盘作为它的U盘,可以安全移出,在系

Linux查看物理CPU个数、核数、逻辑CPU个数

(一)概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU  /proc/cpuinfo 用来存储cpu硬件信息的 信息内容分别列出了processor 0 –processor n 的规格.这里需要注意,n是逻辑cpu数 一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来 逻辑CPU数量=物理cpu数量 x cpu cores 这个规格

红帽企业Linux本地物理磁盘和磁盘卷组群管理

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   红帽企业 Linux 5提供了一个图形化的 Logical Volume Manager (LVM) 配置工具 - system-config-lvm.system-config-lvm 允许用户为本地的物理磁盘和磁盘分区建立卷组群.它使得被创建的逻辑卷非常灵活,可扩展,并可以让系统象使用普通的物理磁盘一样使用这个逻辑卷.system-config-lvm 使用

Oracle DG Linux平台物理Standby搭建实例

Oracle Data Guard Linux 平台 Physical Standby 搭建实例 Data Guard 环境: 操作系统: redhat 4.7 Primary数据库: IP地址:10.85.10.1. 数据库SID:orcl DB_UNIQUE_NAME:orcl_pd Standby数据库: IP地址:10.85.10.2 数据库SID:orcl. DB_UNIQUE_NAME:orcl_st 一.rimary 端的配置 1.  主库设置为force logging 模式 S

关于Linux内核读取磁盘序列号的研究

一向的观点就是"别在内核里面处理字符串"!事实上,确实应该如此! Linux内核的块设备驱动有能力读取磁盘的序列号,这个数据存储在磁盘的控制芯片ROM里面.内核应该以怎样的形式将这个序列号呈现给调用者呢?我们ls一下这个目录: /dev/disk/by-id ll /dev/disk/by-id/ ... lrwxrwxrwx 1 root root 9 10月 17 10:11 scsi-SATA_ST3500413AS_Z2A2AGQA -> ../../sdb 可以看到,一

开发一个Linux调试器(三):寄存器和内存

上一篇博文中我们给调试器添加了一个简单的地址断点.这次,我们将添加读写寄存器和内存的功能,这将使我们能够使用我们的程序计数器.观察状态和改变程序的行为. 系列文章索引 随着后面文章的发布,这些链接会逐渐生效. 准备环境 断点 寄存器和内存 Elves 和 dwarves 源码和信号 源码级逐步执行 源码级断点 调用栈展开 读取变量 下一步 注册我们的寄存器 在我们真正读取任何寄存器之前,我们需要告诉调试器一些关于我们的目标平台的信息,这里是 x8664 平台.除了多组通用和专用目的寄存器,x86

Linux内核启动流程分析(二)【转】

转自:http://blog.chinaunix.net/uid-25909619-id-3380544.html S3C2410 Linux 2.6.35.7启动分析(第二阶段) 接着上面的分析,第一阶段的代码跳转后,会进入第二阶段的代码. 第二阶段的代码是从\arch\arm\kernel\head.S开始的. 内核启动第二阶段主要完成的工作有,cpu ID检查,machine ID(也就是开发板ID)检查,创建初始化页表,设置C代码运行环境,跳转到内核第一个真正的C函数startkerne