2013-10-27 53 views
0

当CPU处于保护模式时,它预计所有地址都是虚拟的。内核驻留在物理内存中,并将物理地址用于内部目的。在开发驱动程序驱动程序框架例程时,必须访问具有特定物理地址(关于该设备的内存映射地址)的某些内存位置。那么什么机制允许在保护模式下使用物理地址?保护模式和物理地址

+0

我问的不是一点点。我的意思是硬件方面的这个问题,而不考虑某些驱动程序框架的细节。 CPU不能在保护模式下使用物理地址,所以它将命令发送到DMA控制器来进行数据传输?如果DMA使用物理地址,它就会释放它的存在(事实上,CPU可以执行一些计算,而DMA管理RAM和端口访问)。除Linux内核源码外,是否还有关于使用DMA的文档? – igntec

回答

0

驱动程序框架或API会告诉你这些。我一直使用windriver(http://www.jungo.com/)来编写PCI驱动程序。当你使用这个API分配内存时,它会给你两个地址,一个是对应用有效的虚拟地址,另一个是你给设备的物理地址。其他框架/ apis很可能也会这样做。