由于工作需要用到GPIO设置成中断模式,但是不知道连线是否已经连接到指定的GPIO引脚,
而且配置是否成功,因此通过/dev/mem来查看GPIO的配置是否成功是必须的。
记录一下:
#include <stdio.h>
#include <stdlib.h>#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/mman.h>
#define DEVMEM "/dev/mem"
#define PHY_ADDR 0x20AC000
#define PAGE_SIZE 0x1000
#define PAGE_MASK (~(PAGE_SIZE-1))
int main(int argc, char* argv[])
{
int fd;
char *mbase;
char read_buf[10];
unsigned int varAddr;
varAddr = strtoul(argv[1], 0, 16);
unsigned int ptr = varAddr;
fd = open(DEVMEM, O_RDONLY);
if(fd == -1) {
perror("open");
exit(-1);
}
mbase = mmap(0,PAGE_SIZE,PROT_READ,MAP_SHARED,fd, PHY_ADDR);
if(mbase == MAP_FAILED) {
printf("map failed %s\n",strerror(errno));
}
printf("varAddr = 0x%X \n", varAddr);
printf("mapbase = 0x%X \n", (unsigned int)mbase);
printf("value = 0x%X \n",*(unsigned int*)(mbase+ptr));
close(fd);
munmap(mbase,PAGE_SIZE);
return 0;
}