正点原子【第四期】手把手教你学 Linux之驱动开发篇-跟学笔记-P2字符设备驱动开发基础
1、Linux驱动开发的分类
字符设备、模块设备、网络设备
2、
3、为什么写驱动?
传感器:姿态测定,测重力加速度、磁力矩、角速度等数据
驱动:获取外设或传感器采集的原始数据,也可以控制外设
应用程序(app):获取驱动获取的数据
4、linux驱动编译要做什么?
编写两个文件,一个文件编写linux驱动,另一个文件是编写测试应用程序,驱动与应用完全分开
5、Linux的内存管理
用户空间(用户态)(地址0-3G)应用程序
内核空间(内核态)(地址3-4G)驱动程序
6、为什么linux内存管理要分为两个空间?
安全
7、linux中如果应用程序想进入内核空间怎么办?
主要的方法就是系统调用,系统调用有两种实施路径。
第一种使用open、close等系统调用函数直接进行系统调用,第二种使用C库中的函数(最终也是通过调用系统调用函数)
8、应用程序想打开一个灯的流程:
linux一切皆文件,比如驱动程序表现为/dev/下的一个文件。
应用程序想打开一个灯:调用open函数准备系统调用,通过write函数向/dev/led文件写程序(1打开0关闭这种),最后使用close函数关闭调用。
9、对于字符设备驱动的编写:
编写驱动,也是open、write、close函数连用。
字符设备的文件是/dev/file_operations。
原则:驱动开发有框架,此外考虑应用开发便利性。

浙公网安备 33010602011771号