关于地址映射的问题
S3C2410_VA_UART 是静态映射后的虚拟地址,可以直接使用吗?S3C2410_PA_UART 是寄存器的物理地址,使用它要ioremap动态映射成虚拟地址才能使用。
那么我在开发的时候用哪个呢?两种方式都可以吗?哪种情况下使用哪一种呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
S3C2410_VA_UART 是静态映射后的虚拟地址,可以直接使用吗?S3C2410_PA_UART 是寄存器的物理地址,使用它要ioremap动态映射成虚拟地址才能使用。
那么我在开发的时候用哪个呢?两种方式都可以吗?哪种情况下使用哪一种呢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
一旦映射过后,操作虚拟地址就等于操作io端口了
那请问版主,我可以直接用 S3C2410_VA_UART 定义的静态映射的地址来操作吗?
这样就不用将S3C2410_PA_UART 做动态映射了。
一般在驱动开发中用哪种方法呢?
不明白你说的静态映射是什么意思
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)
你这个静态映射应该是系统的静态编址,和动态映射是两码事,但操作都是操作的同一个东西