准备数据:
需要访问的寄存器的物理地址,访问的内存大小。
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <memory.h>
#define I2C_BASE 0x1E78A000
#define MAP_SIZE 0x1000
#if 0
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE-1)
#endif
typedef unsigned int u32;
int main()
{
int i,fd;
u32 *membase;
u32 number;
fd = open("/dev/mem",O_RDWR);
if(0 > fd)
{
printf("open /dev/mem error\n");
return -1;
}
membase = (u32 *)mmap(NULL, MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, I2C_BASE);
if(NULL == membase)
{
printf("mmap error\n");
perror("mmap");
return -1;
}
printf("membase starts at %08x\n", membase);<