#include <linux/module.h> #include <linux/kernel.h> #include <asm/io.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <asm/uaccess.h> //流水灯代码 #define GPM4CON 0x110002e0 #define GPM4DAT 0x110002e4 static unsigned long* ledcon = NULL; static unsigned long* leddat = NULL; //自定义write文件操作(不自定义的话,内核有默认的一套文件操作函数) static ssize_t test_write (struct file * filp, const char __user * buff, size_t count, loff_t * offset) { int value = 0; int ret = 0; ret = copy_from_user(&value, buff, 4);
//底层驱动只定义基本操作动作,不定义功能 if(value == 1){ *leddat |= 0x0f; *leddat &= 0xfe; |
用一个实例来理解驱动程序编写流程 (自用)
最新推荐文章于 2024-07-31 22:02:07 发布
本文通过一个具体的实例,深入浅出地介绍了驱动程序的编写流程,涵盖了从需求分析到代码实现的全过程,帮助读者理解驱动程序开发的核心概念和技术要点。
摘要由CSDN通过智能技术生成