【问题标题】:Adress external Hardware directly without driver?无需驱动程序直接寻址外部硬件?
【发布时间】:2019-09-13 11:32:29
【问题描述】:
是否可以在不使用驱动程序的情况下访问外部硬件,即在程序和外部设备之间没有驱动程序抽象层?
您可以通过直接在您的程序代码中实现您自己的类似驱动程序的控制/处理来使用设备吗?
我试图了解一个实现 Modbus 协议和一些非常具体的 Modbus 配置的程序。现在我不知道它是如何与 Modbus 设备通信的。
在我看来,这与司机所做的非常相似。
但它甚至可以在不安装驱动程序的情况下直接与设备通信吗?
【问题讨论】:
标签:
operating-system
driver
hardware
modbus
【解决方案1】:
是的,有几个微内核操作系统总是以这种方式配置——驱动程序完全在内核之外实现。
您可能需要的第一件事是访问设备的寄存器;通常使用 mmap() 执行,您可能需要挖掘一下以找到可缓存性的正确设置等...
第二个问题是中断。除非您正在运行 QNX 之类的东西,否则您将无法让中断直接向您的程序发出信号。您可能必须关闭它们并定期轮询设备。
如果您使用的是 linux 并且需要 io 端口(inb、outb 等),请使用 man ioperm 获取更多信息。