Linux小白入门知识总结
设备树的作用:Linux内核通过读取设备树来了解它到底能掌握哪些设备,这些设备有什么样的参数。
Linux驱动需要在Ubuntu系统下编译
驱动程序的编译需要用到内核的支持
Makefile文件的作用:Makefile文件关系到整个工程的编译规则,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile文件就像一个Shell脚本一样,其中也可以执行操作系统的命令。Makefile文件带来的好处就是——"自动化编译",一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。最后生成的可执行文件XXX, ./XXX即可运行。
驱动编译后 执行insmod ./XXX.ko把驱动注册到内核中,当驱动被注册到内核中的时候系统会对驱动做一些初始化操作。
在Linux kernel中,物理地址是不能直接使用的,必须通过转换才可以。转换分为两种,静态和动态,静态的地址转换需要在kernel初始化的时候做映射。动态映射是使用ioremap函数。
驱动完成两大功能:
1、为Linux内核提供调用接口。
2、控制硬件。因为寄存器是控制硬件的操作,所以驱动程序控制硬件,也就是要通过读写硬件寄存器达到控制硬件的目的。
open函数是对文件设备的打开操作,这个函数会返回一个句柄fd,通过这个句柄fd对设备文件读写操作。
先注册驱动再执行应用程序。