关于内核中物理地址的引用问题
最近改一个SD卡驱动,连接的是ssp总线。
看原版代码时,发现一个问题:
ssp总线的控制寄存器操作的时候直接是用的物理地址
列:
#define ssp_writew(addr,value) ((*(volatile unsigned int *)(addr)) = (value))
ssp_writew(SSP_CR1,0);
SSP_CR1是SSP控制器中的一个寄存器的物理地址,未经ioremap映射的
各位,不是说物理地址必须要隐射后才能操作的赛?怎么回事?此总线配置能正确的工作。
再次请教各位大虾了哈
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
为这段IO内存建立页表的时候,使得物理地址和逻辑地址重合。操作物理地址和操作逻辑地址就没有什么区别。
回复 8# accessory
呵呵,还是谢谢你了,这个问题先放一下了
在 X86下,MMU的分页也是可以关闭的,在实模式下可以直接访问物理地址。
ARM不清楚是否有类似的地方。
回复 5# accessory
处理器是ARM926ejs,这款CPU是带了MMU的,所以这样直接引用物理地址应该是不得行的吧,本人才疏学浅,望大家指教。
有可能是你自己配置了ssp_writew()吧
什么体系结构? X86?
请尽量把环境描述清楚.谢谢.
ssp_writew()是不是封装过?
回复 2# snail_314
呵呵,这还是能够确定的,我用的是linux不是uClinux
你确定你用的是Linux而不是uClinux?