posted @ 2015-03-09 23:23 Bumble_Bee 阅读(3044) 评论(0) 推荐(0) 编辑
摘要:
一、应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数,找到使用的file_operations,即应用程序与tty架构的统一接口。步骤不再赘述。sta... 阅读全文
摘要:
串口驱动是由tty_driver架构实现的。一个应用程序中的函数要操作硬件,首先会经过tty,级级调用之后才会到达驱动之中。本文先介绍应用程序中打开设备的open函数的整个历程。 首先在串口初始化中会先注册一个串口驱动,函数原型为 int uart_register_driver(struc... 阅读全文
posted @ 2015-03-09 15:15 Bumble_Bee 阅读(616) 评论(0) 推荐(0) 编辑
摘要:
平台总线是linux2.6内核加入的一种虚拟总线,使用流程: 1、定义设备 2、注册设备 3、定义驱动 4、注册驱动总线上的设备和驱动相互匹配由总线来完成。一、定义设备 平台设备描述结构:struct platform_devicestruct platform_device { c... 阅读全文
posted @ 2015-02-17 19:02 Bumble_Bee 阅读(343) 评论(0) 推荐(0) 编辑
摘要:
一、总线模型(转自国嵌论坛) 1.随着技术的进步,对热插拔的要求以及可移植性的要求越来越高,从Linux2.4开始虽然有了模型但是正式提出是在Linux2.6。 2.关键词是总线,驱动,设备 3.总线能够感知设备的插拔: (1)插入新设备的时候知道有设备插入,那么就去总线上已有的驱动里面... 阅读全文
posted @ 2015-02-17 00:21 Bumble_Bee 阅读(228) 评论(0) 推荐(0) 编辑
摘要:
一、 当应用程序要对某个资源进行访问的时候,如果这个资源没有或者说被占用,这个应用程序就要进入阻塞状态,在linux系统中它会进入一个内核等待队列,等到被唤醒之后才能运行。这就是阻塞机制,它对一个驱动程序来说是很重要和必要的。二、如何使用等待队列 1、定义等待队列 wait_queue_... 阅读全文
posted @ 2015-02-16 23:55 Bumble_Bee 阅读(252) 评论(0) 推荐(0) 编辑
摘要:
Linux使用struct timer_list来描述一个定时器。 重要成员: expires:定时时长 *function:超时执行函数名使用流程: 1、定义定时器变量/*定义定时器变量结构体*/struct timer_list key_timer; 2、初始化定时器 a... 阅读全文
posted @ 2015-02-16 23:38 Bumble_Bee 阅读(174) 评论(0) 推荐(0) 编辑
摘要:
一、中断嵌套 当系统正在执行某中断处理函数时,又产生了一个新的中断,这就叫做中断嵌套。当中断为慢速中断时,新的中断会取代当前中断,即当前中断没有执行完就结束了;当中断为快速中断时,新的终端就不会产生。这两种情况都是我们不愿意看到的情况,所以就有了今天的题目——中断分层。二、中断分层 中断分层是将... 阅读全文
posted @ 2015-02-16 23:25 Bumble_Bee 阅读(314) 评论(0) 推荐(0) 编辑
摘要:
Linux进行中断处理的4个步骤: 1、当中断产生,跳到统一入口IRQ_SVC 2、获取中断号 3、根据中断号找到irq_desc结构 4、从irq_desc结构中取出事先注册好的中断处理函数Linux中断处理程序设计: 1、注册中断 2、实现中断处理函数 3、注销处理一、注册中断 ... 阅读全文
posted @ 2015-02-16 22:58 Bumble_Bee 阅读(292) 评论(0) 推荐(0) 编辑