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;
};
相关推荐
z_mazin2 分钟前
逆向Sora 的 Web 接口包装成了标准的 OpenAI API 格式-系统架构
linux·运维·前端·爬虫·系统架构
XH-hui15 分钟前
【打靶日记】群内靶机 Open
linux·网络安全
没有口袋啦16 分钟前
《基于iptables的nginx的https的搭建》
linux·服务器·网络
凉、介20 分钟前
Linux 下的 time_before/time_after 接口
linux·运维·服务器·学习
python百炼成钢21 分钟前
42.Linux INPUT 子系统驱动
linux·驱动开发
last demo36 分钟前
VSFTPD 服务器
linux·运维·服务器
wdfk_prog36 分钟前
[Linux]学习笔记系列 -- [block]fops
linux·笔记·学习
阿阿越38 分钟前
Linux系统编程 -- 进程(二)
linux·运维·服务器
waves浪游1 小时前
进程控制(上)
linux·运维·服务器·开发语言·c++
SweerItTer1 小时前
RK3566 泰山派 IMX415驱动移植+设备树修改+iq文件复制
linux·csdn·泰山派·imx415·rk356x·驱动移植