Windows 驱动程序<-&燃气轮机;操作系统/应用程序如何工作?一个例子
假设我想制作一个应用程序、一些硬件和一个与之通信的驱动程序。假设设备连接到主板或通过USB。该设备将是一个带有8LED的板。我想要的界面是Windows 驱动程序<-&燃气轮机;操作系统/应用程序如何工作?一个例子,windows,linux,ipc,device-driver,Windows,Linux,Ipc,Device Driver,假设我想制作一个应用程序、一些硬件和一个与之通信的驱动程序。假设设备连接到主板或通过USB。该设备将是一个带有8LED的板。我想要的界面是 bool lock() //true if success void unlock() //each bit is matched up to an LED and set means the led is on. //Return value is <0 on error. 0 on success. >0 on noncritical er
bool lock() //true if success
void unlock()
//each bit is matched up to an LED and set means the led is on.
//Return value is <0 on error. 0 on success. >0 on noncritical error
int set(char v)
bool lock()//如果成功则为true
无效解锁()
//每个位与一个LED匹配,设置表示LED亮起。
//非关键错误的返回值为0
整数集(字符v)
假设非关键错误意味着您发送了中的最后一个命令,因为您要求使用Windows和linux,我将回答您的两个问题 Linux: 在linux世界中,几乎所有东西都是一个文件。通过将输出从一个二进制源重定向到接收器(文件或设备文件),或将输出从一个二进制文件传输到另一个二进制文件,所有内容都可以从A到B。 最简单的示例是字符设备,最简单的字符设备示例是串行驱动程序 以下命令:
echo ciao > /dev/ttyS0
是如何将用户空间连接到内核空间的完美示例
注:/dev/ttyS0是串行端口的标准术语,相当于Windows中的COM1
我已向字符设备/dev/ttyS0发送了至少4个字节。
代码执行从内核空间开始,因此调用函数open()(在驱动程序中定义)来初始化串行端口,该端口直到现在都处于关闭状态
在linux中进行此初始化,不仅准备串行端口,而且打开一条TTY线。TTY代表电传打字机,它透明地管理将“ciao”字符串移动到硬件设备
以下是步骤:
-VittorioHi@acidzombie24,在Linux中,您可以编写一个简单的设备驱动程序来访问这些指示灯。如何访问指示灯取决于设备所在的总线(GPIO、USB、PCI)。请看一下@dien,我浏览了其中的许多章节。他们讨论了用于注册设备的linux API及其工作原理。我确信我可以找到如何与硬件通信,但我不知道应用程序如何与驱动程序通信。嗨@acidzombie24,你的应用程序可以通过多种方式与内核通信:procfs和sysfs(请查看此链接示例);对“设备文件”进行读、写和ioctl操作(有关更多详细信息,请查阅LDD 3rd第3章和第6章)