设备驱动
文章平均质量分 84
fzjcycp
这个作者很懒,什么都没留下…
展开
-
Linux设备模型firmware(固件)
硬件越来越复杂,硬件的许多功能使用了程序实现,与直接硬件实现相比,固件拥有处理复杂事物的灵活性和便于升级、维护等优点。固件(firmware)就是这样的一段在设备硬件自身中执行的程序,通过固件标准驱动程序才能实现特定机器的操作,如:光驱、刻录机等都有内部的固件。固件一般存放在设备上的flash存储器中,但出于成本和灵活性考虑,许多设备都将固件的映像(image)以文件的形式存放在硬盘中,设备驱转载 2016-09-10 19:46:35 · 5132 阅读 · 0 评论 -
Linux LCD驱动(三)--图形显示
3. BMP和JPEG图形显示程序3.1 在LCD上显示BMP或JPEG图片的主流程图首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下:mknod fb0 c 29 0在LCD上显示图象的主流程图如图3.1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下转载 2016-10-07 10:10:56 · 776 阅读 · 0 评论 -
linux LCD驱动(二)--FrameBuffer
2. Linux 驱动2.1 FrameBufferLinux是工作在保护模式下,所以用户态进程是无法像DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Lin仿显卡的功能,将显ux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer转载 2016-10-07 10:09:16 · 288 阅读 · 0 评论 -
linux LCD驱动(一)--硬件
一 实验内容简要描述1.实验目的学会驱动程序的编写方法,配置S3C2410的LCD驱动,以及在LCD屏上显示包括bmp和jpeg两种格式的图片2.实验内容 (1)分析S3c2410实验箱LCD以及LCD控制器的硬件原理,据此找出相应的硬件设置参数,参考xcale实验箱关于lcd的设置,完成s3c2410实验箱LCD的设置 (2)在LCD转载 2016-10-07 10:08:01 · 324 阅读 · 0 评论 -
linux设备总线驱动模型 之 platform总线驱动
1、 Platform总线 Platform总线是linux2.6内核加入的一种虚拟总线。platform机制的本身使用并不复杂,由两部分组成:platform_device和platform_driver Platform 驱动与传统的设备驱动模型相比,优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接转载 2016-09-08 22:16:03 · 220 阅读 · 0 评论 -
设备驱动基础0:设备模型之kobject,kset及其关系
Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。设备模型的基础结构体主要是kobject,kset这两个结构体:struct kobject { char * k_name; char name[KOBJ_NAME_LEN];转载 2016-09-08 21:02:35 · 311 阅读 · 0 评论 -
linux设备驱动模型之 bus(总线)原理与实例分析
1、 设备模型 随着技术的不断进步,系统的拓扑结构也越来越复杂,对智能电源管理、热插拔的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,Linux 2.6内核提供了全新的内核设备模型。2、 设备模型元素 总线 驱动 设备3、 总线 总线是处理器和设备之间的通道,在设备模型中转载 2016-09-08 21:44:30 · 2048 阅读 · 0 评论 -
linux设备驱动模型之 device(设备)原理与实例分析
1、 设备描述 Linux 系统中的每个设备由一个 struct device 描述:struct device {...... ...... ...... ...... ...... ......struct kobject kobj;char bus_id[BUS_ID_SIZE]; /*在总线上唯一标识该设备的字符串 */struct bus_t转载 2016-09-08 21:54:55 · 453 阅读 · 0 评论 -
linux设备驱动模型 之driver(驱动)原理与实例分析
1、 驱动描述 驱动程序由struct device_driver 描述 :struct device_driver {const char *name; /*驱动程序的名字( 体现在 sysfs 中 )*/struct bus_type *bus; /*驱动程序所在的总线*/struct module*owner;const char*mod_na转载 2016-09-08 22:12:50 · 271 阅读 · 0 评论 -
设备模型之kobject,kset及其关系
Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。设备模型的基础结构体主要是kobject,kset这两个结构体:struct kobject { char * k_name; char name[KOBJ_NAME_LEN];转载 2016-09-08 20:58:19 · 504 阅读 · 0 评论 -
linux设备驱动模型之 kset原理与实例分析
1、 Kset kset是具有相同类型的kobject的集合,在sysfs中体现成一个目录,在内核中用kset数据结构表示,定义为:struct kset {struct list_head list; //连接该kset中所有kobject的链表头spinlock_t list_lock;struct kobject kobj; //内嵌的kobjec转载 2016-09-08 19:53:58 · 1448 阅读 · 0 评论 -
linux中PCI总线驱动
欢迎转载!一.理论知识1. PCI总线的特点:(1)速度快,时钟频率提高到33M,而且还为进一步把时钟频率提高到66MHZ、总线带宽提高到64位留下了余地。(2)对于地址的分配和设置,系统软件课自动设置,每块外设通过某种途径告诉系统该外设有几个存储区间和I/O地址区间,每个区间的大小以及本地地址。系统软件知道了总共有多少外设以及各种的存储空间后就会统一为外设分配物原创 2016-09-07 15:35:50 · 2854 阅读 · 0 评论 -
linux内核init系列函数
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const转载 2016-08-26 10:17:33 · 794 阅读 · 0 评论 -
linux驱动中platform设备驱动模型
platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。Linux2.6转载 2016-09-14 11:16:59 · 361 阅读 · 1 评论 -
MISC混杂设备 struct miscdevice /misc_register()/misc_deregister()
在Linux系统中,存在一类字符设备,他们共享一个主设备号(10),但此设备号不同,我们称这类设备为混杂设备(miscdeivce),查看/proc/device中可以看到一个名为misc的主设备号为10.所有的混杂设备形成一个链表,对设备访问时内核根据次设备号找到对应的miscdevice设备。相对于普通字符设备驱动,它不需要自己去生成设备文件。Linux内核使用struct miscd转载 2016-09-13 16:28:47 · 180 阅读 · 0 评论 -
linux中直接内存访问(DMA)
1. 什么是DMA直接内存访问是一种硬件机制,它允许外围设备和主内存之间直接传输它们的I/O数据,而不需要系统处理器的参与。使用这种机制可以大大提高与设备通信的吞吐量。 2. DMA数据传输有两种方式引发数据传输:第一种情况:软件对数据的请求1. 当进程调用read,驱动程序函数分配一个DMA缓冲区,并让硬件将数据传输到这个缓冲区中。进程处于睡眠状态。2. 硬件将数据写原创 2016-09-11 20:54:30 · 2236 阅读 · 0 评论 -
Linux-2.6.20的LCD驱动分析
一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步一步跟着走就行了):1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加str转载 2016-10-07 11:08:18 · 316 阅读 · 0 评论