Linux驱动开发--设备驱动基础笔记 1
Posted hntea-hong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux驱动开发--设备驱动基础笔记 1相关的知识,希望对你有一定的参考价值。
设备驱动基础
设备驱动的使用方式:
- 动态加载
- 直接编译进内核
直接编译进内核的方法:(内核源码/Doucument/kbuild/…中有相应的介绍)
.config:顶层配置文件,可以手动修改,也可以通过make menuconfig等命令配置内核自动生成;该文件对驱动进行三个方面配置:
- 编译成驱动模块
- 编译进内核
- 从内核中除去
Kconfig:连接LINUX内核的模块目录文件;功能:
- 用于定义make menuconfig命令显示的菜单
- 导入位于其他目录的Kconfig文件,make命令通过Kconfig文件的递归引用,找到内核代码中所有Kconfig文件,之后创建菜单栏
Makefile:一般与Kconfig文件配对,该文件用来指定如何编译
举例说明:
Konfig 文件:
config LED_DRIVER //用于在.config中生成CONFIG_LED_DRIVER=y/n;
//用来将驱 动编译进内核与否
bool “led driver” // 菜单中显示的选项名
help //帮助提示
3.驱动程序分类:
- 字符型设备
- 块设备
- 网络接口
- 其他:如SCSI
4.字符设备:
- 指的存取时没有缓存的设备
- 可以像文件一样访问字符设备,字符设备驱动程序负责实现这些行为
5.块设备:
- 块设备是文件系统的宿主,如磁盘。
- 大多数Unix系统中,只能将块设备看做多个块设备进行访问
- 块设备经常是1KB数据,LINUX允许像字符设备那样读取块设备–允许一次传输任意数目的字节
6.网络接口设备
- 任何网络事务都是通过接口实现的
- 接口是一个硬件设备,也可以是loopback接口一样是软件工具
- 网路接口由内核网络子系统驱动
7.相关命令
insmod lsmod rmmod depmod
注:
depmod:生成依赖文件,告诉将来的insmod要从何处调入modules。
这个依赖文件是/lib/modules/$(version)/modules.dep
最简单的设备驱动框架
#include<linux/init.h>
#include<linux/kernel.h> /*提供printk()打印函数*/
#include<linux/module.h>
static int xxx_init()
return 0;
static void xxx_Exit(void)
module_init(xxx_init); /*insmod 入口*/
module_exit(xxx_Exit); /*rmmod 入口*/
以上是关于Linux驱动开发--设备驱动基础笔记 1的主要内容,如果未能解决你的问题,请参考以下文章
Linux驱动开发笔记:基于ubuntu的helloworld驱动源码编写makefile编写以及驱动编译加载流程测试
Linux MIPI DSI驱动调试笔记-LCD时序参数配置
20155229 2017-2018-1 《信息安全系统设计基础》实验四 外设驱动程序设计