免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 868 | 回复: 0
打印 上一主题 下一主题

IO地址的来源问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-04 22:19 |只看该作者 |倒序浏览

转自:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=driver&
Number=570846&page=0&view=collapsed&sb=5&o=31&fpart=1#Post637212
设备有IO地址,想了解一下,这些IO地址是怎么分配的,
是弄始写死的吗?
还是和主板上的插槽有关?
如CGA/EGA/VGA的端口是(0x3d0~0x3df),这是谁定的呀?
PCI插槽上的地址等,是怎么来的,想了解一些。
   
Re: 问个IO地址的来源问题! [re: newniu]   
Reply to this postReply
这个问题讲起来内容很多,所以高手都懒的敲键盘。我不是高手,随便说两句。
回答这个问题要从最开始ibm的pc机开始讲,由于那个时候的人的短视,或者说是处于节省经济成本,最初的pc机上的io设备的端口都是定死的。硬盘,鼠标,软驱等等,他们的端口都是定死的。这样就很好理解了,cpu执行指令,指令是又程序员编写的,程序员知道鼠标的端口是多少,所以把这些端口使用硬代码的方式写入程序。cpu执行这样的指令,在总线上发出要访问鼠标端口的指令,鼠标的接口硬件发现cpu要找的是自己,然后鼠标就接受其后的命令。那其他的软驱的接口硬件等设备发现cpu发出的端口号和自己的端口不同,所以就忽略。
这样的做法延续了几年,随着pc不断的发展,人们发现这样方式越来越不可行。比如说,一个电脑上要插两块网卡,如果网卡的io端口都是一样,那么对整个电平时序系统会造成混乱。所以,那个时候有些板卡上面会有跳帽,bios设置选项中也会有设置,用来动态设置io端口。但是这种方式,还是很不方便。
intel和ms这个时候推出了pnp的概念。pnp讲到底,其实就是动态分配io端口,memory映射。比如,插一块网卡,这时网卡不知道自己的io端口是多少,所以,网卡不会接受cpu的命令。当cpu对网卡中的configuration space中的io base设置后,网卡的接口硬件便知道,我现在的io端口是多少了,只要总线上有我这个io端口的命令,我就要响应。
所以pnp是一个概念,注意不要和pci isa等搞混了。现在这些io端口的分配工作都是由bios来做。当然有些os会不用bios初始化好的东西,自己再来重新分配一下。比如windows就是这样。  


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/24474/showart_226440.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP