理解常用知识点
①:Linux驱动开发是内核级别的开发,驱动程序的任何问题都可能引起整个系统的崩溃
②:驱动程序通常都要进行中断处理
③:驱动程有更多的并发环境需要考虑
④:驱动程序是被动接受上层调用的代码,是为上层提供服务的一套代码,所以我们会在驱动中看到很多注册和注销的函数
⑤:一类驱动都有一个特定的实现模板,在这里姑且称为驱动的框架
⑥:Linux的内核源码编译后将会生成一个总的镜像,将该镜像加载到内存中并运行之
⑦:学习一类驱动,就是学习它的核心数据结构和一组API
⑧:.ko文件即 kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核的外边,需要的时候插入内核,不需要的时候卸载内核
⑨:ELF文件 是一种目标文件格式,用于定义不同类型目标文件以什么样的格式,都放了些什么东西,主要用于Linux平台,Windows下是PE/COFF格式。 可执行文件、可重定位文件(.o)、共享目标文件(.so)、核心转储文件都是以elf文件格式存储的。
ELF文件组成部分:文件头、段表(section)、程序头
⑩:模块加载 insmod 加载指定目录下的一个.ko文件到内核
modprobe:自动加载模块到内核,相对于insmod来讲更智能,前提条件是模块要执行安装操作,使用该命令前最好运行一次
depmod 命令来更新模块的依赖信息。
modinfo:查看模块的信息,在安装了模块并运行depmod命令后,可以不指定路径和后缀,也可以指定查看某一特定.ko文件的模块信息
dmesg :查看打印信息
rmmod :模块卸载 cleanup module 是卸载模块是调用的模块清除函数