首页 > 解决方案 > 无需驱动程序直接寻址外部硬件?

问题描述

是否可以在不使用驱动程序的情况下访问外部硬件,即在程序和外部设备之间没有驱动程序抽象层?

您可以通过直接在程序代码中实现自己的类似驱动程序的控制/处理来使用设备吗?

我试图了解一个实现 Modbus 协议和一些非常具体的 Modbus 配置的程序。现在我不知道它是如何与 Modbus 设备通信的。在我看来,这与司机所做的非常相似。

但它甚至可以在没有安装驱动程序的情况下直接与设备通信吗?

标签: operating-systemdriverhardwaremodbus

解决方案


是的,有几个微内核操作系统总是以这种方式配置——驱动程序完全在内核之外实现。您可能需要的第一件事是访问设备的寄存器;通常使用 mmap() 执行,您可能需要挖掘一下以找到可缓存性的正确设置等...第二个问题是中断。除非您正在运行 QNX 之类的东西,否则您将无法让中断直接向您的程序发出信号。您可能必须关闭它们并定期轮询设备。

如果您使用的是 linux 并且需要 io 端口(inb、outb 等),请使用 man ioperm 获取更多信息。


推荐阅读