我正在使用“ioremap”来映射 Ti AM3359 数据表中 GPIO 端口的地址。代码运行良好。
问题:
1>问题是,为什么我们需要将虚拟地址映射到物理地址?是不是因为物理地址是我们要访问的硬件的真实地址?
2> 如果上面是真的那么,为什么数据表不直接给出物理地址。
3> “ioremap”返回的物理地址是否会在不同RAM数量的板上有所不同?
我正在使用“ioremap”来映射 Ti AM3359 数据表中 GPIO 端口的地址。代码运行良好。
问题:
1>问题是,为什么我们需要将虚拟地址映射到物理地址?是不是因为物理地址是我们要访问的硬件的真实地址?
2> 如果上面是真的那么,为什么数据表不直接给出物理地址。
3> “ioremap”返回的物理地址是否会在不同RAM数量的板上有所不同?
至于您的第一个问题,您之所以使用ioremap
是因为内核的地址空间与物理地址空间不对应。您需要将物理页面映射到虚拟地址空间才能完全寻址它们。这就是这样ioremap
做的。
至于您的第二个和第三个问题,我不知道您的数据表提供或不提供什么。:)
通常,我希望硬件数据表提供物理地址,除非物理地址必须通过特定于总线的机制找到或配置。如果不是,您实际上指定的是什么?
您可能需要阅读此内容以获取更多信息。