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;
};
相关推荐
zyx没烦恼2 分钟前
Linux 多线程
linux·运维·服务器·开发语言·c++
Tanner_SL4 分钟前
Linux笔记之Ubuntu系统设置自动登录tty1界面
linux·笔记·ubuntu
落笔太慌张~13 分钟前
Linux系统(Ubuntu和树莓派)的远程操作练习
linux·运维·ubuntu
CZIDC26 分钟前
Linux系统安全-开发中注意哪些操作系统安全
linux·安全·系统安全
czhc114007566329 分钟前
LINUX 5 vim cat zip unzip
linux·编辑器·vim
明灯L1 小时前
《深度剖析 Linux 权限管理:从基础到进阶,解锁系统安全密钥》
linux·运维·全网最全权限管理·小白0基础
是覆盖对于变化2 小时前
ubuntu22.04 进入不了系统设置
linux·ubuntu
应以大橘为重2 小时前
interrupt子系统中的数据结构
linux·数据结构·驱动开发
kfepiza2 小时前
硬盘分区格式方案之 MBR(Master Boot Record)主引导记录详解 笔记250407
linux·windows·笔记
mzak2 小时前
已经安装了pip,出现pip command not found【解决方法】
linux·pip·python3