我通过'捕获'我的PC linux的/ proc / ioports文件得到了一个奇怪的文字,
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc0
...
我不理解的是每个条目的前部,例如,查看第一个条目,是否表示dma1占用的端口为31(十六进制为0x1f)?如果是真的,我无法想象x86处理器上有多少端口,因为我知道8位MCU上只有几个8位端口。
有人可以详细说明数字的含义,以及x86处理器的io端口吗?
答案 0 :(得分:5)
这是内核驱动程序使用request_region
内核函数声明的I / O端口区域列表。因此,它不是可用的I / O端口或设备的完整列表,只是各种内核驱动程序声明的那些。 request_region
机制允许内核阻止多个驱动程序与同一设备通信。
答案 1 :(得分:1)
/ proc / ioports列出了由所述驱动程序声明和处理的端口范围的端口的Linux内核中的设备驱动程序提供的ioport的范围和名称。
例如,RTC Linux内核驱动程序声称io端口0070 - 007f。
可以假设驱动程序声明的所述端口范围对应于相应硬件提供的适当端口范围,但是您应该注意到实际上没有确保它们确实存在的机制。