免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: njngypp
打印 上一主题 下一主题

【求助】关于inb和inw的疑问 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-04-16 15:42 |显示全部楼层

回复 #1 njngypp 的帖子

>>那么,为什么(1)中三个字节的硬件地址是在三个连续端口中读出来的(inb中的"+0"、"+>>>1"、"+2"),而(2)中帧状态码和长度却是同一个端口呢?
>>而且如果对同一端口的连续读取会得到不同的数据,在(1)中,读取地址校验完后的打印过程>>(inb(ioaddr+i))还能确定是校验时读取的硬件地址数据么?
ISA网卡通过连续的3个8-bit IO端口来得到硬件的识别码。并将内部的RAM影射到一个16bit的IO端口,并且有一个counter计数器跟踪每次的读操作,每次读,counter增加,内部寻址是base+counter 的方式。
这些都是硬件决定的,读代码不能脱离Spec

论坛徽章:
0
2 [报告]
发表于 2008-04-17 08:52 |显示全部楼层

回复 #3 zx_wing 的帖子

这不是叫强,而是无奈啊。
IO空间就64K,如果来个一一映射,估计高级一点的设备都不能用。
这也是为什么PCI大量采用MMIO的原因。
而且即使是PCI,高级一点的设备也是base+counter来实现的。例如128M的PCI RAM卡,可能也只能分配到2M/4M的MMIO空间。

论坛徽章:
0
3 [报告]
发表于 2008-04-17 12:42 |显示全部楼层

回复 #5 zx_wing 的帖子

软件只需要维护base而已,counter是透明的,你可以看看PCI的Burst传输。

其实这就是“窗”啊

论坛徽章:
0
4 [报告]
发表于 2008-04-17 14:48 |显示全部楼层

回复 #7 zx_wing 的帖子

ISA不叫“窗”,我说PCI那种就叫“窗”,汗!

ISA完全可以将这个offset寄存器映射出来,这样就可以随机访问了塞,反正是memory,不会存在顺序问题。

不过这样说似乎有点不负责任,毕竟想不到那个时候的出发点。

今天看了用三极管电路实现的Memory,说了一句:那时候的三极管比电阻贵很多,所以设计的时候就是尽量减少三极管的数量。因此会多花费很多的电阻。拿到现在来说,也许就会优先考虑集成度了罢

论坛徽章:
0
5 [报告]
发表于 2008-04-17 14:50 |显示全部楼层

回复 #5 zx_wing 的帖子

对了,你那个信誉积分怎么来的?我为什么没有呢?

论坛徽章:
0
6 [报告]
发表于 2008-04-17 14:51 |显示全部楼层

回复 #8 albcamus 的帖子

这个就不用加精华了吧。。。

论坛徽章:
0
7 [报告]
发表于 2008-04-25 17:06 |显示全部楼层

回复 #16 folklore 的帖子

你能说一说,汇编和这个帖子的内容有什么关系么?

我想了半天,实在是想不出来。

如果说不出来,请不要过分夸大汇编的作用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP