Linux总线设备驱动

注册设备

注册设备使用的结构体platform_device,该结构体在头文件 “include/linux/platform_device.h” 中,结构体成员如下:
在这里插入图片描述

  1. 在平台文件中(Linux的arm平台代码在arch/arm中)定义结构体并把结构体加入到一个platform_device类型的指针数组中,系统会自动注册这个指针数组中的所有结构体,不用去调用注册设备的函数。
  2. 在Kconfig文件中添加编译设备的宏定义。
  3. 配置menuconfig中的宏定义,生成新的.config文件并生成新的zImage。
  4. 注册完之后在虚拟平台总线下可以查到注册的设备:
    – ls /sys/devices/platform/

注册驱动

  1. 驱动注册结构体platform_driver成员如下:
struct platform_driver hello_driver = {
	.probe//驱动调用的初始化函数指针
	.remove//移除驱动函数指针
	.shutdown//驱动关闭函数指针
	.suspend//驱动休眠函数指针
	.resume//驱动休眠后恢复启动函数指针
	.driver = {
		.name//与注册设备名称一致
		.owner//驱动所属模块
	}
}
  1. 驱动注册头文件
    #include <linux/platform_device.h>
  2. 驱动注册函数
    platform_driver_register (platform_driver);
  3. 驱动卸载函数
    platform_driver_unregister (platform_driver);

生成设备节点

  1. 头文件
#include <linux/miscdevice.h> //注册杂项设备头文件
#include <linux/fs.h> //注册设备节点的文件结构体
  1. 结构体
struct miscdevice { //杂项设备结构体
      .minor //设备号,MISC_DYNAMIC_MINOR(自动分配)
      .name //设备节点名
      .fops //设备节点文件操作结构体,数据类型file_operations
}
struct file_operations { //文件操作结构体
	.owner
	.open //文件打开函数指针
	.release //关闭文件函数指针
	.unlocked_ioctl //应用向驱动传值函数指针
}
  1. 设备节点函数
    misc_register (struct miscdevice); //设备节点生成函数
    misc_deregister (struct miscdevice); //设备节点删除函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值