监控 ISA 卡的 I/O 写入

监控 ISA 卡的 I/O 写入

我在许多项目中使用模拟/数字 I/O 卡(数字万用表-16-AT来自 Diamond Systems),这是一种 PC/104(ISA 等效)卡。

问题是,地址 BASE + 3 处有 8 个数字输出,在启动时为 0V,但在启动过程中约 10 秒后为 5V(逻辑 1)。我怀疑另一个内核驱动程序或程序等正在该地址写入。有没有办法“监视”对特定地址的写入以追踪问题?

注意:基地址是0x300,Linux的总启动时间约为45秒,因此与我自己的程序无关。

从数据表:

Base + 3 写入数字输出端口

        +-------+-------+-------+-------+-------+-------+-------+-------+
Bit No. |     7 |     6 |     5 |     4 |     3 |     2 |     1 |     0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+
Name    | DOUT7 | DOUT6 | DOUT5 | DOUT4 | DOUT3 | DOUT2 | DOUT1 | DOUT0 |
        +-------+-------+-------+-------+-------+-------+-------+-------+

这些引脚直接对应于 I/O 连接器 J3 上的同名引脚。

上电或复位时,输出寄存器被清零。

答案1

您可以告诉内核不要探测某些地址。来自男人启动参数

 reserve=iobase,extent[,iobase,extent]...

Reserve 启动时间参数指定不应探测的 I/O 端口区域。设备驱动程序不会探测保留区域,除非另一个引导参数明确指定它这样做。

 reserve=0x300,32  blah=0x300

阻止除“blah”驱动程序之外的所有设备驱动程序探测 0x300-0x31f。

当然,它仍然可能是引导加载程序(例如grub)在进行探测。

相关内容