milkyway的窝

最初想法的诞生地

 

操作外设I/O和存储器知识点滴

关于I/O和存储器操作,和CPU体系结构,和所用的操作系统都有关系。

比如X86的平台下,I/O和存储器分开编址,有专用的I/O读写指令。其他平台如ARM中实际上是把I/O都映射到存储器的地址里了,这种情况下操作I/O也就是操作存储器了。

对于操作系统
通用的桌面OS,win95应用程序可以直接操作物理地址,2000/NT后出于安全性考虑应用程序对物理地址不能直接访问了。
嵌入式OS里uc/os,uclinux这些不具备虚拟地址概念的,可以直接用指针访问物理地址。而wince和其他引入了虚拟地址管理的OS,只能访问到虚拟地址了。如果想访问某个物理地址,必须先作一个物理地址到虚拟地址的映射,再访问。对于设备I/O最好是用专门的宏来操作,比如READ_PORT_xxx,READ_RGISTER_xxx之类的。如果用指针操作,最好声明成volatile类型,避免被编译器优化。

posted on 2007-04-13 17:18 milkyway 阅读(647) 评论(0)  编辑 收藏 引用 所属分类: 基础知识


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

公告

随笔皆原创,文章乃转载. 欢迎留言!

常用链接

留言簿(37)

随笔分类(104)

随笔档案(101)

文章分类(51)

文章档案(53)

wince牛人

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜