operating-system - 无需驱动程序直接寻址外部硬件?
问题描述
是否可以在不使用驱动程序的情况下访问外部硬件,即在程序和外部设备之间没有驱动程序抽象层?
您可以通过直接在程序代码中实现自己的类似驱动程序的控制/处理来使用设备吗?
我试图了解一个实现 Modbus 协议和一些非常具体的 Modbus 配置的程序。现在我不知道它是如何与 Modbus 设备通信的。在我看来,这与司机所做的非常相似。
但它甚至可以在没有安装驱动程序的情况下直接与设备通信吗?
解决方案
是的,有几个微内核操作系统总是以这种方式配置——驱动程序完全在内核之外实现。您可能需要的第一件事是访问设备的寄存器;通常使用 mmap() 执行,您可能需要挖掘一下以找到可缓存性的正确设置等...第二个问题是中断。除非您正在运行 QNX 之类的东西,否则您将无法让中断直接向您的程序发出信号。您可能必须关闭它们并定期轮询设备。
如果您使用的是 linux 并且需要 io 端口(inb、outb 等),请使用 man ioperm 获取更多信息。
推荐阅读
- javascript - react-image-crop 图像旋转问题仅在 iPhone 的纵向模式下
- c++ - 检查路径是否引用目录,即使它不存在
- python - 索引numpy数组时numba @njit出错
- symfony - Symfony 4 - 为什么安全选民在返回 false 时会将我重定向到登录页面?
- node.js - Async / Await with NodeJS + Mongoose 不等待
- email - 从 SAS 中的电子邮件中获取数据
- python - 有人可以帮我简化我的 Python 函数吗?
- python - 尝试在 Path 对象 Python 上使用 /
- javascript - 用div jquery onload中的另一个div替换div文本
- java - 如何使用反射转储或写入修改后的 java.lang.Class 到文件?