linux驱动之中断处理过程C程序部分
摘要:当发生中断之后,linux系统在汇编阶段经过一系列跳转,最终跳转到asm_do_IRQ()函数,开始C程序阶段的处理。在汇编阶段,程序已经计算出发生中断的中断号irq,这个关键参数最终传递给asm_do_IRQ()。linux驱动中断处理C程序部分,主要涉及linux中断系统数据结构的初始化和C程序
阅读全文
posted @
2017-06-04 19:59
amanlikethis
阅读(5233)
推荐(0) 编辑
linux驱动之中断处理过程汇编部分
摘要:linux系统下驱动中,中断异常的处理过程,与裸机开发中断处理过程非常类似。通过简单的回顾裸机开发中断处理部分,来参考学习linux系统下中断处理流程。 一、ARM裸机开发中断处理过程 以S3C2440的裸机开发启动文件中,有关irq中断部分代码为例进行说明: 当irq中断发生时,一些列的处理流程如
阅读全文
posted @
2017-05-30 23:24
amanlikethis
阅读(1333)
推荐(0) 编辑
linux驱动编写之poll机制
摘要:一、概念 1、poll情景描述 以按键驱动为例进行说明,用阻塞的方式打开按键驱动文件/dev/buttons,应用程序使用read()函数来读取按键的键值。这样做的效果是:如果有按键按下了,调用该read()函数的进程,就成功读取到数据,应用程序得到继续执行;倘若没有按键按下,则要一直处于休眠状态,
阅读全文
posted @
2017-05-28 12:45
amanlikethis
阅读(17017)
推荐(1) 编辑
linux编程头文件所在路径的问题
摘要:一、问题引入 1、头文件与库 当我们在PC主机linux环境下(如ubuntu),编写linux应用程序,然后利用gcc来编译。在源代码的开始位置会写入头文件,那是因为我们使用了系统提供的库函数,例如printf、open、read、write等等。我们会写入类似的内容: 我们的应用程序代码编译过程
阅读全文
posted @
2017-05-27 19:45
amanlikethis
阅读(11411)
推荐(0) 编辑
linux驱动编写之阻塞与非阻塞
摘要:一、概念 应用程序使用API接口,如open、read等来最终操作驱动,有两种结果--成功和失败。成功,很好处理,直接返回想要的结果;但是,失败,是继续等待,还是返回失败类型呢? 如果继续等待,将进程休眠,那么这类驱动设计就是阻塞式的;如果不等待,返回失败的类型(原因),那么这类驱动的设计就是非阻塞
阅读全文
posted @
2017-05-27 16:15
amanlikethis
阅读(1050)
推荐(0) 编辑
linux驱动编写之进程独占驱动
摘要:一、描述 嵌入式开发系统中,有各种硬件资源,而有些硬件资源使用时候是需要进程独占的。也就是说,同一时刻只有一个进程允许使用这个硬件资源,其他的进程只能放弃执行或者挂起等待。在设计其对应驱动的时候,就需要做独占处理。 example: led灯驱动,4盏LED灯,在open的时候调用驱动,对其引脚进行
阅读全文
posted @
2017-05-26 15:58
amanlikethis
阅读(1695)
推荐(0) 编辑
linux驱动编写之中断处理
摘要:一、中断 1、概念 学过单片机的应该非常清楚中断的概念,也就是CPU在正常执行程序过程中,出现了突发事件(中断事件),于是CPU暂停当前程序的执行,转去处理突发事件。处理完毕后,CPU又返回被中断的程序位置继续执行。 2、处理流程 单片机的中断处理程序相对简单,包含中断源的配置和中断服务程序的编写。
阅读全文
posted @
2017-05-20 18:57
amanlikethis
阅读(1019)
推荐(0) 编辑
在Linux下写一个简单的驱动程序
摘要:本文首先描述了一个可以实际测试运行的驱动实例,然后由此去讨论Linux下驱动模板的要素,以及Linux上应用程序到驱动的执行过程。相信这样由浅入深、由具体实例到抽象理论的描述更容易初学者入手Linux驱动的大门。一、一个简单的驱动程序实例驱动文件hello.c#include #include ...
阅读全文
posted @
2015-10-27 15:57
amanlikethis
阅读(34890)
推荐(6) 编辑