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;
};
相关推荐
Ares-Wang7 小时前
Linux》》systemd 、service、systemctl daemon-reload、systemctl restart docker
linux·运维·docker
阿拉斯攀登9 小时前
从入门到实战:CMake 与 Android JNI/NDK 开发全解析
android·linux·c++·yolo·cmake
风曦Kisaki12 小时前
# Linux 磁盘查看命令详解:df 与 du
linux·运维·网络
路溪非溪12 小时前
Linux中gpio子系统的现代接口
linux·arm开发·驱动开发
senijusene12 小时前
IMX6ULL 平台 I2C 总线:从硬件原理到裸机驱动
c语言·arm开发·驱动开发
文静小土豆13 小时前
Centos7负载异常过高排查思路(Load Average)
linux
Deitymoon13 小时前
linux——原子操作
linux
亚空间仓鼠13 小时前
OpenEuler系统常用服务(四)
linux·运维·服务器·网络
昪彧翀忞14 小时前
dhcp小实验
linux·服务器·网络
bukeyiwanshui14 小时前
20260407系统间复制文档
linux