http://blog.csdn.net/cfy_phonex/article/details/20368005
因为项目需要,需要在Linux userspace 读写访问实际物理地址。
一)用户空间可以直接通过打开 /dev/mem 设备文件,然后mmap() 影射进行访问
staticintread_type()
{
void* map_base;
FILE*f;
inttype,fd;
#define READ_REG32(reg) ( *((volatile int *) (reg)) )
#define ALLOC_SIZE (1024)
fd = open("/dev/mem", O_RDWR | O_SYNC);
if(fd) {
printf("Success to open /dev/mem fd=%08x\n", fd);
}
else{
printf("Fail to open /dev/mem fd=%08x\n", fd);
}
map_base = mmap(0, ALLOC_SIZE, PROT_READ, MAP_PRIVATE, fd, 0x35004000);
type = READ_REG32(map_base + 0x20);
close(fd);
munmap(map_base, ALLOC_SIZE);
printf("reg32[%08x] = value[%08x] \n", map_base, type);
type