linux总结应用之五 驱动设备

(一):操作系统内核访问的主要设备:

(1):字符型设备:键盘,打印机

(2):数据块设备:软盘,硬盘,光盘

 (二):linux设备驱动程序的主要功能:

(1):对设备进行初始化。

 (2):使设备投入运行和退出服务

(3):从设备接收数据并将它们送向内核

(4):将数据从内核送到设备

(5):检测处理设备出现的错误。

(三):字符设备驱动程序:

 (1)驱动程序的 init()函数的主要功能是在内核登记设备驱动程序。包括给这一

驱动程序使用的主设备号,同时给内核提供指向驱动程序的file_operation结构的

指针,内核将这一指针放在字符设备驱动程序表的相应表目中,通过下列的内核函数完成登记。

register_chrdev(major,name,file_op)

其中major是这一驱动程序使用的主设备号,name是字符串,它给出驱动程序的名称。

而file_op则是指向file_operation结构的指针。

(四):驱动程序的工作内存:

 (1):专用缓冲区:

给设备驱动程序分配内存的最简单办法是在它的源程序中按所需的字节数加以说明

在源程序中说明数组:

static  char  buff[800];

在任何函数外面使用关键字static表示缓冲区只能由一文件中的代码所

使用, (既用于这一设备驱动程序内部)。

上面这样使用专用缓冲区有几个缺点:

(1):用这种方法分配的内存只能在驱动程序内部使用

(2):如果推测的容量比实际需要的容量少,无法增加工作内存的容量。

(3):即使你不使用它,如硬设备没有连上,这块内存还是分配给你使用。

时间: 2024-11-10 16:43:26

linux总结应用之五 驱动设备的相关文章

linux总结应用之六 驱动设备块设备中的中断

(一):块设备的中断: 中断函数:  request_irq() 函数将块设备驱动程序的中断服务子程序和特定的中断请求行联系起来. 驱动程序的中断服务子程序的中断过程如下: (1):用户进程发出莫种类型的输入或输出请求(read()系统调用),或许先 通过高速缓冲存储,最终要求进行实际设备的输入/输出. (2):调用设备驱动程序的read()函数,或者requset()函数,将完成输入/输出 操作的指令送给硬设备,现在设备驱动程序的等待操作的发生. (3):一些时间以后,硬设备准备好完成指定的操

从需求的角度去理解Linux系列:总线、设备和驱动

笔者成为博客专家后整理以前原创的嵌入式Linux系列博文,现推出以让更多的读者受益. <从需求的角度去理解linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇,期待此系列文章日后会是学习嵌入式Linux的标杆! 这是作者精心撰写的经验总结,希望嵌入式Linux的学习者仔细领会,多读几遍也无妨. 一.软件.面向对象.软件框架 软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而

Linux下的硬件驱动——USB设备(转载)

usb_bulk_msg函数 当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbs 提交给usb子系统. 转载于此http://os.chinaunix.net/a2003/0630/1056/000001056933.shtml Linux下的硬件驱动——USB设备(上)(驱动配置部分) USB设备越来越多,而Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和

linux查看硬件信息及驱动设备相关整理

查看声卡设备:cat /proc/asound/cards 查看USB设备:cat /proc/bus/usb/devices 常用命令整理如下:用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)查看CPU信息:cat /proc/cpuinfo查看板卡信息:cat /proc/pci查看PCI信息:lspci (相比cat /proc/pci更直观)查看内存信息:cat /proc/meminfo查看USB设备:cat /proc/bus/u

从需求的角度去理解Linux之一:总线、设备和驱动

这是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇,相信此系列文章日后会是学习嵌入式Linux的标杆! 这是作者精心撰写的经验总结,希望嵌入式Linux的学习者仔细领会,多读几遍也无妨. 转载请务必保留我们的公众号:嵌入式企鹅圈 一.软件.面向对象.软件框架 软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而软件框架指的是用面向对象的思维去解决某种特定领域的问题而专门设计的一套行之有效的解决方案. 一般地

驱动程序分层分离概念_总线驱动设备模型_P

分层概念: 驱动程序向上注册的原理: 比如:输入子程序一个input.c作为一层,下层为Dev.c和Dir.c,分别编写Dev.c和Dir.c向上Input.c注册:如图所示 分离概念: 分离概念主要是讲,设备驱动程序分成两个部分,也将引进另一个新概念bus_dri_dev模型 总线-驱动-设备模式,是讲吧一个驱动分成两个部分,分别挂载到一条总线上的链表中,总线上有.match函数还对两个链表相同名字相匹配,匹配成功跳到driver驱动程序的probe函数来实现驱动的操作. 一下例子主要编写总线

linux自带有usb驱动,为什么还需要libusb呢

linux里的软件分为用户层和内核层两种.比如内核里编译了温度传感器的驱动,还得有lm-sensors在用户层负责解释处理内核递交出的数据.usb驱动是硬件驱动方面的东西,libusb是给应用软件开发和usb驱动协同操作(在底层读取usb内容)的功能时提供的库. 驱动开发向来是内核开发中工作量最多的一块,随着USB设备的普及,大量的USB设备的驱动开发也成为驱动开发者手头上做的最多的事情.本文主要介绍Linux平台下基于libusb的驱动开发,希望能够给从事Linux驱动开发的朋友带来些帮助,更

【详解】如何编写Linux下Nand Flash驱动

From: http://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html 版本:v2.2 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开始介绍Linux下面和Nand Flash相关的软件架构MTD的相关知识,最后介绍了

【转】Linux下Android ADB驱动安装详解

原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比较多,本人使用的Ubuntu系统好多厂商的Android手机都无法正确的识别,经过一番折腾,和查阅SDK,现把Linux下ADB驱动配置的方法和当中会遇到的相关问题的解决方法整理出来贡献给大家. Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的