#include fcntl.h
#include string.h
#include sys/vfs.h
#include unistd.h
#include sys/mman.h
#include stdlib.h
#include errno.h
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int
#define MSM_MDP_BASE 0xE0010000
#define MSM_MDP_PHYS 0xAA200000
#define MSM_MDP_SIZE 0x000F0000
#define MSM_MDP_MASK (MSM_MDP_SIZE-1)
int main(){
void *vaddr1,*vaddr2;
int errors = 0;
int fd;
fd = open("/dev/mem", O_RDWR | O_SYNC);
printf("/dev/mem opened.\n");
fflush(stdout);
vaddr1 = mmap(0, MSM_MDP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,\
fd,MSM_MDP_PHYS & ~MSM_MDP_MASK);
if(vaddr1 == (void *) -1) {
printf("mapping error!!\n");
return -1;
}
vaddr2 = vaddr1 + (MSM_MDP_PHYS & MSM_MDP_MASK);
printf("vaddr1 %p, vaddr2 %p\n", vaddr1, vaddr2);
fflush(stdout);
printf("vsync period=%08X\n",*(volatile u32 *)(vaddr2+0xE0008));
munmap(vaddr1, MSM_MDP_SIZE);
close(fd);
return errors;
}
沒有留言:
張貼留言