中网自助建站,移动端芯片综合性能排行榜,php网站开发介绍,重庆渝中区企业网站建设哪家好一. 简介
本文简单了解一下#xff0c;在字符设备驱动开发开始前对其一些基本认识。简单了解一下#xff0c;应用程序与驱动的交互原理#xff0c;以及字符设备驱动开发流程。 二. 字符设备驱动开发流程
1. 在 Linux 中一切皆为文件#xff0c;驱动加载成功以后会在“…一. 简介
本文简单了解一下在字符设备驱动开发开始前对其一些基本认识。简单了解一下应用程序与驱动的交互原理以及字符设备驱动开发流程。 二. 字符设备驱动开发流程
1. 在 Linux 中一切皆为文件驱动加载成功以后会在“/dev”目录下生成一个相应的文件应用程序通过对这个名为“/dev/xxx”(xxx 是具体的驱动文件名字)的文件进行相应的操作即可实 现对硬件的操作。 例如/dev/led。应用程序调用open函数打开设备比如 led。通过write函数向/dev/led写数据假如 1表示打开写 0表示关闭。如果要关闭设备那么就是 close()函数。 2. 编写驱动的时候也需要编写驱动对应的open、closewrite函数。例如字符设备驱动file_operations 结构体这个结构体就描述了字符设备驱动操作的一个集合。 3. 驱动是分驱动框架的要按照驱动框架来编写。
驱动最终是被应用调用的在写驱动的时候要考虑应用开发的便利性。
驱动是分驱动框架的要按照驱动框架来编写对于字符设备驱动来说重点编写应用程序对应的open、close、read、write() 等函数。 三. 应用程序和驱动的交互原理 1. 驱动做了什么
驱动就是获取外设、或者传感器数据也会控制外设。将一些数据会提交给应用程序。
Linux驱动编译既要编写一个驱动还要我们编写一个简单的测试应用程序APP。
单片机下驱动和应用都是放到一个文件里面也就是杂糅到一起。Linux下驱动和应用是完全分开的。 2. 用户空间(用户态)和内核空间(内核态)
Linux操作系统内核 和驱动程序 运行在内核空间应用程序运行在用户空间。 3. 应用程序和驱动的交互
应用程序想要访问内核资源怎么办
有三种方法系统调用、异常(中断)和陷入。
应用程序不会直接调用系统调用而是通过API函数来间接的调用系统调用比如POSIX、API和C库等。unix类操作系统中最常用的编程接口就是POSIX。
每个系统调用都有一个系统调用号。系统调用处于内核空间应用程序无法直接访问因此需要“陷入“到内核方法就是软中断。陷入内核以后还要指定系统调用号。 应用程序的系统调用如下结构图所示 可以看出左边一列调用关系应用程序直接进行的系统调用例如open() 函数。
右边一列调用关系应用程序首先调用 C库里面的函数C库中的函数最终调用系统调用函数。