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;
};
相关推荐
简单中的复杂3 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro4 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅4 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华5 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒5 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森5 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud6 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.6 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
好好学习天天向上~~6 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹6 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic