正点原子【第四期】手把手教你学 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。

原则:驱动开发有框架,此外考虑应用开发便利性。

 

posted @ 2021-12-03 21:31  ToTheMars  阅读(292)  评论(0)    收藏  举报