我的问题是,CPU IO端口是如何工作的?
据我所知,有一条总线连接到CPU和所有设备,所有设备都分配了地址。
当CPU决定读或写时,它在该总线上设置地址,只有具有相应地址的设备响应正确?那些地址必须是静态的,在制造设备时分配是吗?
并且,linux / proc / ioports仅提供有关某些驱动程序正在使用的设备的信息,无论如何列出所有分配的地址?
例如,当我键入它时,它没有显示并行端口地址。非常感谢,如果有人决定回答:D
还有哪个地方用于PCI?据我所知,CPU的总线首先连接到PCI,然后从PCI连接到每个设备,对不对?感谢
答案 0 :(得分:1)
并行端口非常“旧”,即使在连接到ISA总线的古老IBM PC中也存在,并且除了通过探测硬件之外无法枚举ISA设备。因此,除非驱动程序实际检查硬件是否存在,否则无法找到。
为区分I / O端口和内存,处理器有一条额外的信号线。将地址0x378放在地址总线上并设置信号线意味着处理器想要访问并行端口;将0x378放在地址总线上而不设置信号线意味着处理器想要读取内存。顺便说一句,并非所有处理器都有这种区别;例如旧的Commodore 64计算机中使用的6502处理器没有,这意味着在这个硬件上,一些地址实际上是为i / o保留的,硬件不支持这些地址的内存。