mcujackie 发表于 2007-9-13 09:09

如何把User Mode和kernel mode地址转换到物理地址

如何把User&nbsp;Mode和kernel&nbsp;mode地址转换到物理地址<br /><br />我使用arm&nbsp;跑linux,但外接的一个硬件芯片要求输入一个物理地址让它做一些操作<br />在没有linux&nbsp;及mmu&nbsp;下,这个是可以的!<br />在linux&nbsp;kernel&nbsp;下,我开始晕了!是不是用_virt_to_phys()就可以呢!<br />但是,如果应用程式经常要从User&nbsp;mode跳进Kernel&nbsp;Mode,要浪费很多资源跟时间&nbsp;(1秒要做1000多次..)<br /><br />因此我想使用mmap&nbsp;在user&nbsp;mode&nbsp;映射芯片的暂存器,然後把malloc()分配出来的&nbsp;User&nbsp;Mode地址转换为Kernel&nbsp;Mode的地址,然後再把kernel&nbsp;mode的地址变为物理地址,那我就可以把物理地址写进出暂存器了。<br /><br />有高手可以帮忙吗?<br />

rockos 发表于 2007-9-14 09:57

re

<br />把应用级把应用程序空间的地址转换成物理地址?<br /><br />其实你的需求可以写一个简单的,&nbsp;基于内存的驱动,&nbsp;只要实现open,&nbsp;release,&nbsp;mmap三个方法就可以了,&nbsp;mmap()后直接操作内核内存,&nbsp;就像X&nbsp;Server那样,&nbsp;不要使用read/write方法.

mcujackie 发表于 2007-9-15 22:07

请指教 malloc and mmap

其实我是在做程式移植,那个程式都是用malloc&nbsp;的,然後我现在要用硬件加速,便要把那个malloc&nbsp;出来的地址给硬件,&nbsp;我该怎样利用mmap&nbsp;跟open&nbsp;呢?请指教!

mcujackie 发表于 2007-9-15 22:14

若果不理会动机,有机会把malloc 出来的变成真实地址吗?

若果不理会动机,有机会把malloc&nbsp;出来的变成真实地址吗?

rockos 发表于 2007-9-25 14:46

re

<br />据我所知:<br /><br />1.&nbsp;在应用程序空间里没有办法把应用程序申请到的内存换算成物理地址<br /><br />2.&nbsp;在内核空间里也没有办法把应用程序申请到的内存换算成物理地址<br /><br />原因是一样的,&nbsp;由应用程序申请的地址不一定能映射成固定的物理地址.<br /><br />3.&nbsp;在内核空间里申请内存,&nbsp;肯定可以换算到它的物理地址。而且这个地址可以很方便地传到应用空间,&nbsp;v4l2标准的图像数据从内核向应用就是这样传递的
页: [1]
查看完整版本: 如何把User Mode和kernel mode地址转换到物理地址