一、应用程序和驱动的交互原理
驱动就是获取外设、或者传感器数据,控制外设,数据会提交给应用程序。Linux驱动编译既要编写一个驱动,还要编写一个简单的测试应用程序。
1、用户空间和内核空间
Linux操作系统内核和驱动程序运行在内核空间;
应用程序运行在用户空间
2、应用程序
1)应用程序访问内核资源,通过:系统调用、异常(中断)和陷入,三种方式;
2)每个系统调用都有一个系统调用号;
3)系统调用处于内核空间,应用程序无法直接访问,因此需要“陷入”到内核,方法就是软中断。陷入内核以后还要指定系统调用号;
二、字符设备驱动开发流程
1、Linux里面一切皆文件,驱动设备表现就是一个/dev下的文件。应用程序调用open函数打开设备。应用程序通过write函数向/dev/xxx写数据。如果要关闭设备那么就是close函数。
2、编写驱动的时候,也需要编写驱动对应的open、close、write函数。字符设备驱动file_operations结构体。