上一页 1 ··· 7 8 9 10 11 12 13 14 15 16 下一页
摘要: Linux是如何来处理中断嵌套的: 所谓的中断嵌套就是,当一种中断正在执行的时候,又产生了另外中断。可以是同类型的,也可以是不同类型的。 首先先来分析第一种类型:慢速中断:是指在进行中断处理的时候,中断的总开关是不关闭的。允许其他类型中断产生。 快速中断:当中断产生的时候,控制位的IF为被置1,别的 阅读全文
posted @ 2016-02-14 07:17 cestlavie 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 按键驱动的操作 通过上两节课的了解,接下来,我们通过例子来实现按键驱动的功能。 首先是按键的初始化,按键的初始化可以选择在open函数,和模块的初始化函数当中完成硬件的初始化。下面我们是选择在模块的初始化函数进行按键的初始化。按键的初始化,主要涉及对GPIO的引脚的功能进行相应的设置。在OK6410 阅读全文
posted @ 2016-02-14 07:16 cestlavie 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 回顾裸机的流程。在裸机下学期,通过按键玩中断。 裸机中断的过程: 中断会有统一的入口:当我们的程序产生中断的时候,无论是哪种中断。都会跳到中断向量表里的_irq这里。这是统一的入口。 2.用户要先注册中断处理程序。 3.根据中断源编号,调用中断处理程序。 接下来我们来看linux的中断,是不是也是这 阅读全文
posted @ 2016-02-14 07:15 cestlavie 阅读(357) 评论(0) 推荐(0) 编辑
摘要: Linux的设备有很多。所以在认识这些设备的时候得有一个方法去系统的对待他们。第一找出在linux内核代码中是使用什么结构来描述混杂设备的。第二是怎么来注册的。下图就是内核里混杂设备的结构。 Minor是次设备号,name是主设备号。还有一个struct file_operations的结构是需要我 阅读全文
posted @ 2016-02-14 07:13 cestlavie 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 硬件访问技术 我们前面点亮led就是使用动态的虚拟地址: 看了动态映射,接下来就是静态映射: 该结构有四个成员:第一个参数是我们的虚拟地址,第二个参数才是我们实际的物理地址,只不过我们现在使用页桢号来表示。假如物理地址是50008000,一页的大小为4K,用物理地址除以4K,就得到页桢号了。它现在是 阅读全文
posted @ 2016-02-13 23:49 cestlavie 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Led的设备驱动程序实例 写字符驱动的顺序是:首先是搭建内核模块框架,接着是写字符驱动,最后是写open和ioctl函数,实现led灯的控制驱动程序。 首先是led.c的代码: Makefile的实现: Make之后生成的文件: 接着是我们的应用程序:led_app.c: 编译生成led_app程序 阅读全文
posted @ 2016-02-13 23:48 cestlavie 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 字符设备控制技术 前面的学习,我们学习了驱动程序,实现程序的读写功能。现在设备还有一项更重要的功能--控制。 控制设备的函数:ioctl。 Cmd:参数是我们发送的命令,例如重启。 第三个参数:是依赖第二个,例如我们要修改波特率的值,我们就会在第三个参数传上波特率的值。当第二个不需要参数,就是空值。 阅读全文
posted @ 2016-02-13 23:47 cestlavie 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 应用程序主要是通过系统调用来访问驱动程序图。 接下来我们以read.c应用程序来分析: 我们知道read.c是个系统调用,系统调用之前,他是在我们的应用程序当中。实现是在内核当中,但是read.c是怎么找到内核的实现代码的呢?接下来就是这内容: 这是read.c的代码: 我们现在静态编译和反汇编: 阅读全文
posted @ 2016-02-13 23:46 cestlavie 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 字符驱动编程模型 上面就是内核的cdev的结构。他只有6个成员。有一些是内核自己回去用的,有一些是我们程序员要去用的。例如:count,表明设备有几个可以用。例如,我的开发板支持三个串口。所以count=3.还有设备号:查看设备文件: 我们从前面知道,我们是通过字符设备文件来访问我们的字符设备驱动的 阅读全文
posted @ 2016-02-13 23:44 cestlavie 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 编译和安装驱动 下面是通过一个例子来学会使用驱动程序: 1---驱动程序: Memdev.c #include <linux/module.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/cdev.h> #includ 阅读全文
posted @ 2016-02-13 23:42 cestlavie 阅读(398) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 16 下一页