linux驱动开发步骤

驱动开发步骤

1、实现模块的加载和卸载入口

复制代码
module_init(chr_dev_init)
module_exit(chr_dev_exit)

2、在模块加载入口函数中:

a,申请主设备号----让内核能够区分和管理不同的字符设备

复制代码
register_chrdev(dev_major, "chr_dev", &my_fops)

b,创建设备文件节点----为用户提供一个可以操作文件的接口

复制代码
struct class *class_create(THIS_MODULE, "chr_cls");
struct device *device_create(devcls, NULL, MKDEV(dev_major, 0), NULL, "name_device")

c,硬件的初始化

1.地址的映射
复制代码
将硬件寄存器地址映射到虚拟文件系统,通过ioremap
2.申请中断
3.实现硬件寄存器的初始化----配置GPIO功能

实现file_operations

复制代码
const struct file_operation my_fops = {
.open = chr_drv_open,
.close = chr_drv_close,
.read = chr_drv_read;
};
相关推荐
JiaWen技术圈6 分钟前
nftables 添加规则时支持的匹配条件与语句全解
linux·服务器
V我五十买鸡腿7 分钟前
网安基础 Windows 和 Linux 那些常用命令
linux·运维·windows
ShineWinsu12 分钟前
对于Linux:进程间通信IPC(匿名管道)的解析
linux·c++·面试·进程·通信·管道·ipc
handler0121 分钟前
进程状态流转的本质:Linux 内核队列与底层数据结构解密
linux·运维·c语言·数据结构·c++·笔记·学习
freshman_y25 分钟前
Linux开发中DTS和/proc/device-tree讲解
linux·嵌入式
wang09071 小时前
Linux性能优化之文件系统基础介绍
java·linux·性能优化
F_D_Z1 小时前
【解决办法】Claude报错Unable to connect to Anthropic services无法连接Anthropic
linux·服务器·claude·anthropic
蜡笔婧萱1 小时前
Linux--RHCE关于at和crond的第一次应用
linux·运维·服务器
hjjdebug1 小时前
制作ubuntu usb安装盘 (用dd 命令)
linux·u盘·安装盘
小程同学>o<1 小时前
Linux 应用层开发入门(二十五)| 网络编程
linux·网络·嵌入式软件·嵌入式应用层·应用层开发·linux应用层开发