日期:2014-05-16  浏览次数:20518 次

Linux内存映射 物理地址映射到虚拟地址
现在我遇到一个问题是,我采集了一堆数据存放在以物理地址0x83100000开始的一段内存区中,这个是驱动做的,现在在应用程序我要将这地址映射到一个数组中,进行调用。不知道该如何去做,我直接调 用virtaddress = (char *)(__bus_to_virt(physAddress));(是调用phys_to_virt这个宏定义),但是映射出来的地址printf("old mem[%d] is 0x%x ",i,*(virtaddress +i));提示段错误,不知道为什么啊。请教大虾了啊。按照道理说,我将物理地址直接映射到线性地址后,我应该可以直接使用的啊。但是现在不行啊!

------解决方案--------------------
有没有可能这个地址就是映射后的地址,试读一下看看
------解决方案--------------------
驱动是可以访问物理地址的。
应用程序不可以吧,需要使用设备的read接口拷贝出来吧。yourdevice_read