Linux驱动
suDreamer
这个作者很懒,什么都没留下…
展开
-
3. GPIO驱动——纯代码驱动方式
#include "linux/gpio.h"#include "linux/module.h"#define DRV_DEBUG(format, ...) printk(KERN_INFO "[%s]: <" format ">\r\n", __FUNCTION__, ##__VA_ARGS__)// 定义gpio相关信息static struct gpio hello_gpio[] = { { .gpio = 1*32+('d'-'a')*8+0, // GPIO1_D0原创 2021-03-31 20:32:33 · 609 阅读 · 0 评论 -
1. 内核模块的创建
#include <linux/module.h>#include <linux/printk.h>// 定义 **__init** 函数static int __init hello_init(void){ printk(KERN_EMERG "hello, init\n"); return 0;}// 定义 **__exit** 函数static void __exit hello_exit(void){ printk(KERN_EME原创 2021-03-25 14:56:35 · 183 阅读 · 0 评论 -
2. 字符串设备的创建
#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/device.h>// 主从设备号(高12位为主设备号,底20位为从设备号)~~~in include/linux/types.hstatic dev_t s_dev;// 设备类static struct class *s_class;// 自动创建最大设备数stat原创 2021-03-25 14:51:15 · 137 阅读 · 0 评论 -
创建一个内核模块最基本的步骤
创建一个内核模块最基本的步骤定义 __init 函数static int __init hello_init(void){ printk(KERN_EMERG "hello, init\n"); return 0;}定义 __exit 函数static void __exit hello_exit(void){ printk(KERN_EMERG "hello, exit\n");}绑定init函数module_init(hello_init);原创 2021-03-25 09:52:57 · 209 阅读 · 0 评论