我有一个有点不寻常的情况,我正在为以太网设备开发一个模拟模块。理想情况下,模拟层在寄存器集方面与真实硬件相同。我遇到的问题是硬件中的 DMA 寄存器加载了数据的 DMA 映射(物理)地址。我需要使用这些物理地址将数据从源设备上的 Tx 缓冲区复制到目标设备上的 Rx 缓冲区。要在模块代码中做到这一点,我需要指向虚拟内存的指针。我查看了 phys_to_virt() 并没有理解手册页中的这条评论:
This function does not handle bus mappings for DMA transfers.
这是否意味着无法使用 phys_to_virt() 将通过 dma_map_single 检索到的物理地址转换回虚拟地址?还有其他方法可以完成这种转换吗?