首页 > 编程知识 正文

Linux设备驱动模型(linux设备驱动开发)

时间:2023-05-06 08:08:57 阅读:100092 作者:364

1.软件操作硬件设备模型

在嵌入式开发过程中,我们经常做的就是通过驱动程序配置硬件配置,然后根据功能需求使用硬件设备实现功能逻辑。下图显示了它们之间的关系。

如上图所示:驱动程序:主要用于硬件设备的操作和配置,使硬件设备可以为正。

经常工作。比如写照明程序时,前提是从原理图中知道LED与CPU/MCU的硬件连接(使用的是哪个GPIO端口),驱动程序的功能是对GPIO端口进行初始化和配置,使GPIO端口可以工作,这比推出输出模式下的当前配置要好。GPIO可以正常工作后,需要进行最基本的操作,即灯亮灯灭。这是司机。

应用程序:当司机可以在最基本的时间开灯关灯时,是实现跑马灯还是显示各种灯光,就要由应用程序来决定了。

硬件设备可以通过驱动程序接受CPU/MCU的操作,也可以为CPU/MCU提供有效的数据。

二、Linux系统软件运行的硬件模型

对于Linux操作系统来说,由于其强大的系统和完善的支持功能,可以支持各种设备在Linux操作系统下运行。因此,设备的类型很多,如字符设备、块设备、网络接口设备、USB设备、PCI设备、平台设备、混合设备等。不同类型的设备也意味着不同的驱动程序型号。也就是说,每种类型的设备都有其相应的驱动模式。

但总的来说,由于都是运行在Linux操作系统下的设备,所以在有相应的驱动架构时,应该驱动设备。下图:

如上图所示,对于Linux操作系统来说,用户空间中的应用程序和内核空间中的驱动程序是密不可分的,但它们是相互独立的。他们通过文件相互交流。驱动程序是根据Linux内核的驱动架构编写的程序,为用户空间的应用程序提供相应的接口通道。设备操作程序是在Linux内核驱动架构下直接与设备进行通信的程序代码,如配置初始化CPU的私有外设、初始化硬件设备、对硬件设备进行基本操作等。简而言之,目的是使硬件设备正常工作。

那么在Linux系统中编写内核驱动的驱动模型是什么呢?

如上图所示:

初始化内核驱动:根据Linux内核的驱动模型,建立需要操作的设备驱动,并进行相应的操作。下图:

设备操作的实现:根据硬件设备的型号和功能特点,驱动硬件设备正常工作,可以进行基本操作,如读取设备数据或向设备写入数据。

注销设备驱动:在Linux系统中,会出现设备热插拔或者用户不想使用相应设备的应用场景,因此可以在内核空间中注销相应的设备驱动,不能使用相应的设备驱动。

三、Linux字符设备驱动模型

对于Linux内核驱动,任何设备驱动模型都将由Linux内核中的一个结构来描述。

对于字符设备的确定,在Linux内核中使用struct cdev结构来描述。其结构原型如下:

对于Linux内核给出的描述设备的结构,并不是所有的结构成员都被程序员使用,有的结构成员被内核使用,有的结构成员被程序员使用。例如,在上面的struct cdev结构中,程序员使用的成员是无符号int count、dev _ t dev和const struct file _ operations * ops;

【无符号整数计数;】:表示设备数量/数量。在同一个系统中,可能有几个相同的设备,所以不需要为每个设备提供一个驱动程序,而是统一提供相同的驱动程序,只需要识别驱动程序中运行的是哪个设备。计数结构成员的功能是记录该驱动程序中存在多少设备。

【dev _ t dev】:表示该设备的设备号。在Linux操作系统中,设备号用于区分不同的设备。

【const struct file _ operations * ops;】:设备驱动操作的功能集/方法集。这个方法集为上层应用程序提供了相应的接口通道。实现用户空间的操作函数与内核空间的操作一一对应的映射关系。

第四,Linux操作系统中硬件的运行模式

有句话说“对于Linux来说,一切都是文件”,所以对于用户空间的应用来说,在对硬件设备进行操作的时候,也是通过文件进行操作的。操作对应的设备文件节点相当于操作其设备文件节点对应的硬件设备。

硬件相关的设备文件节点存储在/dev目录中。下图:

如上图所示,/dev目录中的文件节点都是对应的硬件设备。

文件。例如,ttyS0设备文件是PC桌面的默认试用9针串口设备节点。因此,对应设备文件节点的读写操作就是对应硬件的读写操作。

本文为连载内容。如果你想全部看完,可以关注韩云电子社区的微信微信官方账号ickeybbs。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。