gpt4 book ai didi

c - 写入硬件 Controller 寄存器和 DMA 如何在 ARM arch 机器上工作?

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:08 25 4
gpt4 key购买 nike

调用这个函数时:

static inline void writel(unsigned int v, volatile void __iomem *addr)
{
*(volatile unsigned int __force *)addr = cpu_to_le32(v);
}
  1. 地址是绝对地址还是通过MMU?
  2. DMA - 写入地址是否由 MMU 转换?
  3. 为什么没有提到系统中的寄存器地址here

最佳答案

以下是我的回答,希望对你有帮助:

  1. 是的,地址由 MMU 转换。传递给 writel 的地址应该是通过 ioremap 调用获得的虚拟地址 (VA)。 ioremap 将采用物理地址 (PA)。
  2. 不,MMU 不转换地址。传递给 DMA 的地址应该是物理地址。典型的 DMA 是存在于 MMU 之外的专用外设。
  3. 例如,您必须搜索“bcm2835 arm 外设”,而不是“ARM Linux 上的内核内存布局”。作为提示,如果您想在 linux 内核中找到寄存器位置,请在 linux-kernel-tree/arch/arm 中搜索 ioremap

关于c - 写入硬件 Controller 寄存器和 DMA 如何在 ARM arch 机器上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13245628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com