目录
Linux驱动认知
Linux驱动分为用户空间、内核空间和硬件
一、用户空间:分为App和C library
(1)App:cp、ftp项目、C基础、C库、文件、进程、进程间通信、线程、网络
(2)C library:指C库,比如:open() read() write() fork() pthread() socket()等等,c库提供的API调用内核态,支配内核干活。(提供了app支配内核干活的接口)
二、内核空间
1、如何找到相关的驱动
(1)文件名
(2)设备号:主设备号和次设备号
2、主设备号和次设备号
Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备(比如手机品牌种类有华为、苹果、oppo、vivo等),而次设备号用来区分同一类型的多个设备(比如华为品牌的mate30、mate40、mate 50手机等)。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3。
3、驱动链表:管理所有设备的驱动
(1)添加:编写完驱动程序,加载到内核
(2)查找:调用驱动程序,应用层用户空间去open()
4、驱动插入链表的顺序由设备号检索
5、驱动代码的开发
1、添加驱动
(1)设备名
(2)设备号:主设备号和此设备号
(3)设备驱动函数(操作寄存器来驱动I/O口)
2、调用驱动