Linux驱动开发--设备驱动基础笔记 1

设备驱动基础

设备驱动的使用方式:

  1. 动态加载
  2. 直接编译进内核

直接编译进内核的方法:(内核源码/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 入口*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值