韦东山-第一期
文章平均质量分 68
Pris_oner
这个作者很懒,什么都没留下…
展开
-
第12课第6节 字符设备驱动程序之异步通知
一.知识点0.目标:异步通知:当按键是驱动主动提醒测试程序,用信号signal实现1.前面学了 查询 中断 POLL 三种字符设备驱动 查询 消耗太多CPU资源 中断 如果一直不按按键的话测试程序的read会一直等 POLL 限时检测,超过时间不按键自动退出 上面三种都是应用程序主动去read2.singal.c文件的使用(信号signal原创 2016-06-23 18:56:39 · 423 阅读 · 0 评论 -
第12课第5节 字符设备驱动程序之poll机制
一.目标测试程序限时检测是否按下按键,若超过时间则退出程序.所以利用poll原创 2016-06-23 18:32:08 · 335 阅读 · 0 评论 -
第12课第4.3节 字符设备驱动程序之中断方式的按键驱动_编写代码
一.知识点request_irq()这个函数会将引脚配置为中断引脚第一个参数:是中断号,IRQ_EINT0是宏第二个参数:是中断处理函数第三个参数:中断触发方式IRQT_BOTHEDGE是宏第四个参数:随便起个名字第五个参数:卸载中断时用到的参数二.驱动代码#include #include #include #include #include #in原创 2016-06-23 18:17:44 · 544 阅读 · 0 评论 -
第12课第4.2节 字符设备驱动程序之中断方式的按键驱动_Linux中断处理结构
1.ARM中断实现和驱动中断实现的对比 板子实现中断:①分辨是哪一个中断 ②调用处理函数 ④清中断2.注册中断程序 request_irq(irq中断号,hander处理函数,flags触发方式,name名字,dev_id) 分配一个irqaction结构 把这个结构放入irq_desc[irq]的action链表 设原创 2016-06-23 18:15:32 · 358 阅读 · 0 评论 -
第12课第4.1节 字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构
1.按键中断流程 ①按键按下 ②CPU发生中断,跳转到异常向量入口执行 ③b(跳转) 某个函数 这个函数执行如下内容 1.保存中断的现场2.执行中断处理函数3.恢复现场2.ARM架构CPU异常向量基址是0x00000000,也可以是0xffff0000(虚拟地址),linux内核使用后者3.void _init trap_init(vo原创 2016-06-23 18:13:27 · 411 阅读 · 0 评论 -
第12课第3节 字符设备驱动程序之查询方式的按键驱动程序
一.按键驱动程序代码#include #include #include #include #include #include #include #include #include #include static struct class *seconddrv_class;static struct class_device *seconddrv_class_dev;原创 2016-06-14 19:02:30 · 274 阅读 · 0 评论 -
第12课第2.3节 字符设备驱动程序之LED驱动程序_操作LED
一.驱动代码#include #include #include #include #include #include #include #include #include #include /*建立major组设备号对应的设备节点*/static struct class *firstdrv_class;//一个类static struct class_device原创 2016-06-14 18:31:53 · 339 阅读 · 0 评论 -
第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进
0.基础知识内核使用三种数据结构表示打开的文件:1.进程级的文件描述符表 每一个文件描述符会与一个打开文件相对应,同时,不同的文件描述符也会指向同一个文件。相同的文件可以被不 同的进程打开也可以在同一个进程中被多次打开。系统为每一个进程维护了一个文件描述符表,该表的值都是从0 开始的,所以在不同的进程中你会看到相同的文件描述符,这种情况下相同文件描述符有可能指向原创 2016-06-06 14:48:24 · 530 阅读 · 0 评论 -
第12课第1节 字符设备驱动程序之概念介绍
原创 2016-06-06 13:43:35 · 518 阅读 · 0 评论 -
第12课第2.1节 字符设备驱动程序之LED驱动程序_编写编译
一.开始写驱动的思路1.入口函数(驱动从哪里开始执行)普通C代码的入口函数是mani(),而驱动的入口函数格式是static int 名字_init(void)例子:static int first_drv_init(void)2.修饰入口函数(我怎么才知道哪个是入口函数)module_init(名字_init);//本质是定义一个结构体,这个结构体里面有一个指向入口函数(名字原创 2016-06-06 14:38:00 · 497 阅读 · 0 评论