1. USB是主从结构的 所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。 例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来读数据,只能被动地等得PC机来读。 2. USB的传输类型:a. 控制传输:可靠,时间有保证,比如:USB设备的识别过程 ...
分类:
系统相关 时间:
2016-12-28 02:12:31
阅读次数:
295
触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 :当用触摸笔按下时,产生中断。在中断处理函数处理函数中启动ADC转换x,y坐标。ADC结束,产生ADC中断,在ADC中断处理函数里上报(input_event)启动定时器,再次启动定时器(可以处理滑动、长按),松开按键。其驱动程序的写法和 ...
分类:
系统相关 时间:
2016-12-27 01:00:07
阅读次数:
186
LCD程序步骤:1. 分配一个fb_info 2. 设置 3. 硬件相关的操作4. 注册 register_framebuffer 5.入口函数 6.出口函数 #include <linux/string.h>#include <linux/mm.h>#include <linux/slab.h># ...
分类:
系统相关 时间:
2016-12-25 23:07:08
阅读次数:
348
bus_drv_dev模型:功能改写只需改dev硬件代码即可,drv不需改写。 LED例子 下面用一个点亮LED的例子来说明这个分离的的例子: led_dev.c 定义这个平台设备的资源: static struct resource led_resource[] = { [0] = { .star ...
分类:
系统相关 时间:
2016-12-25 13:35:01
阅读次数:
258
有时我们需要在/sys下面创建一些目录, 下面给出了一个示例。 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录。 这里用到的两个函数分别是: kobject_create_and_add 和 sysfs_create_group。前一个函数用 ...
分类:
系统相关 时间:
2016-12-24 17:30:03
阅读次数:
294
作者:彭东林 邮箱:pengdonglin137@163.com 在阅读kernel代码的时候,总是看到有很多驱动都在第一行定义pr_fmt,闲来没事,分析了一下, 发现,确实挺方便的。下面记录分享一下。 我们知道,在驱动中可以使用dev_dbg来输出log,在输出的log中会有一些额外的信息,如所 ...
分类:
系统相关 时间:
2016-12-22 00:12:05
阅读次数:
348
一、开启驱动开发之路 1、驱动开发的准备工作 (1)正常运行linux系统的开发板。要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的。原因在于在安装模块的时候会进行安全性校验 (2)内核源码树,其实就是一个经过了配置编译之后的内核源码。我们需要内核源码编译自己的模块 (3)n ...
分类:
系统相关 时间:
2016-12-12 19:42:32
阅读次数:
251
1、常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko (3)modinfo(module info ...
分类:
系统相关 时间:
2016-12-12 19:17:51
阅读次数:
247
为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热拔插处理、电源管理等,Linux内核提出了设备模型(也称作Driver Model)的概念。设备模型将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口。驱动的开发,就简化为对内核所规定的数据结构的填充和实现。 我们知道linux内核 ...
分类:
系统相关 时间:
2016-12-11 17:59:17
阅读次数:
254
阻塞IO机制:使用等待队列 1.定义等待队列头 wait_queue_head_t read_wait; 2.初始化等待队列头 init_waitqueue_head(wait_queue_head_t *q); 3.让进程等待int wait_event(wait_queue_head_t wq ...
分类:
系统相关 时间:
2016-12-11 15:53:58
阅读次数:
187