嵌入式linux 使用mmap函数实现物理地址到虚拟地址的映射。

 

以下程序段来自我的一个实际项目。将物理地址转换成虚拟地址,之后就可以C语言指针在程序里面操作了。


#include
#include
#include
#include

unsigned int  get_mmap_addr_auto( unsigned int addr ,unsigned int len ){
	int fd = 0 ;
	unsigned int r ;
    fd  = open("/dev/mem", O_RDWR|O_SYNC);// also not cached
    if (fd == -1)
    {
			printf("fail to open mem!\n");
            return (-1);
	}
	printf("OK to open mem!\n");
    r = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd , addr);
    if (r == 0) printf("NULL pointer!\n");else  printf("mmap return address = 0x%08x \n",r);
	return r ;
}

 

为了避免拷贝代码带来的错误。我这里再贴一下图:

嵌入式linux 使用mmap函数实现物理地址到虚拟地址的映射。_第1张图片

 

 

 

 

你可能感兴趣的:(PetaLinux,ZEDBOARD,ZYNQ7)