gpt4 book ai didi

c - I/O 内存区域重新映射

转载 作者:行者123 更新时间:2023-11-30 17:35:10 24 4
gpt4 key购买 nike

I/O 内存区域的主要原因是向该内存读取/写入任何内容。如果给定了寄存器地址,我们可以使用readx/writex(x代表b/l/w)。

那么为什么我们必须使用 io_remap 返回的地址,它与数据表中给出的特定寄存器的地址相同?

最佳答案

ioremap 是架构特定的函数/宏。在某些体系结构上,它不会执行任何操作,只是返回指定为参数的地址。不过,它可能比其他架构做得更多。以arm或x86为例 - 例如,ioremap会在让您使用内存区域之前进行大量检查。

然而,比这些检查更重要的是,ioremap 可以设置虚拟地址(从 vmalloc 区域)到请求的物理地址的映射,并确保缓存对于您要使用的地址已禁用。因此,在大多数情况下,ioremap 返回的指针将与数据表中的数字地址不同。

您希望禁用缓存,因为 I/O 寄存器是由某些外部(从 CPU 角度来看)设备控制的。这意味着处理器无法知道其内容何时发生更改,从而使缓存内容无效。

关于c - I/O 内存区域重新映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062132/

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