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 阅读(369) 评论(0)  编辑 收藏 引用 所属分类: 基础知识


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:

导航

统计

公告

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

常用链接

留言簿(24)

随笔分类(101)

随笔档案(99)

文章分类(48)

文章档案(50)

wince牛人

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜