关于地址映射的问题

发布于 2022-09-23 12:56:20 字数 135 浏览 10 评论 0

S3C2410_VA_UART 是静态映射后的虚拟地址,可以直接使用吗?S3C2410_PA_UART 是寄存器的物理地址,使用它要ioremap动态映射成虚拟地址才能使用。

那么我在开发的时候用哪个呢?两种方式都可以吗?哪种情况下使用哪一种呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

以为你会在 2022-09-30 12:56:20

一旦映射过后,操作虚拟地址就等于操作io端口了

少女净妖师 2022-09-30 12:56:20

那请问版主,我可以直接用 S3C2410_VA_UART 定义的静态映射的地址来操作吗?
这样就不用将S3C2410_PA_UART 做动态映射了。
一般在驱动开发中用哪种方法呢?

提笔落墨 2022-09-30 12:56:20

不明白你说的静态映射是什么意思

合久必婚 2022-09-30 12:56:20

Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射。

在linux2.6中,对于s3c2410有:
S3C2410_ADDR 定义:#define S3C2410_ADDR(x)  ((void __iomem *)0xF0000000 + (x))
这里就是一种线性偏移关系,即s3c2410创建的I/O静态映射表会被映射到0xF0000000之后。
#define  S3C2410_VA_UART   S3C2410_ADDR(0x00800000)

夏了南城 2022-09-30 12:56:20

你这个静态映射应该是系统的静态编址,和动态映射是两码事,但操作都是操作的同一个东西

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文