在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的混杂设备。Linux中使用struct miscdevice来描述一个混杂设备。struct miscdevice {
int minor; /* 次设备号*/constchar *name; /* 设备名*/conststruct file_operations *fops; /*文件操作*/struct list_head list;
struct device *...
转载自: http://my.csdn.net/weiqing1981127一.网络设备驱动基础1. 以太网基础理论以太网是局域网的一种,它使用载波监听多路访问及冲突检测技术(CSMA/CD),并以10M/S的速率运行在多种类型的电缆上,常用的网卡芯片有DM9000、DM9161、CS8900芯片。以太网的拓扑结构有总线型和星型,以太网的工作模式有半双工和全双工。目前双绞线是以太网最普通的传输介质,它多用于从主机到集线器或交换机的连接,光纤主要用于交换机间的级...
作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件一起的一张 CD 上, 并且操作系统负责传送固件到设备自身. 硬件越来越复杂,硬件的许多功能使用了程序实现,与直接硬件实现相比,固件拥有处理复杂事物的灵活性和便于升级、维护等优点。固件(firmware)就是...
所谓中断是指CPU在执行过程中,出现某些突发时间急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。 中断分为(根据中断源来分):
内部中断(软件中断指令,溢出,除法错误等)【例如操作系统从用户态切换到内核态需借助CPU内部的软件中断】。
外部中断(中断源来自CPU外部,由外设提出请求)。 中断分为(根据是否可屏蔽): 可屏蔽...
原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html/*************************************************************************************************************************************//* bus.c *//* * linux/drivers/mmc/core/bus.c * * Copyright (C) 2003 Russell King, All Rights Reserved. * Copyright (C) 2007 Pierre Ossman * * This program is free software; you can redistribute it a...
linux设备驱动归纳总结(六):2.分享中断号 转自:http://blog.chinaunix.net/uid-25014876-id-90837.htmlxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍的内容是,调用接口request_irq(),使中断号与中断处理函数对应。但是,有时候会有这样的情况,如果开发板上按键的中断已经被另外的驱动程序注册中断了,而我现在又想再注册一次这个中断,这就出现了一个中断号不止对应一...
这里所说的复杂设备驱动涉及到PCI、USB、网络设备、块设备等(严格意义而言,这些设备在概念上并不并列,例如与块设备并列的是字符设备,而PCI、USB设备等都可能属于字符设备),这些设备的驱动中又涉及到一些与特定设备类型相关的较为复杂的数据结构和程序结构。本文将不对这些设备驱动的细节进行过多的介绍,仅仅进行轻描淡写的叙述。 PCI 是The Peripheral Component Interconnect -Bus的缩写,CPU使用PCI桥chipset与PCI设备...
Linux内核分析(五)昨天我们对linux内核的子系统进行简单的认识,今天我们正式进入驱动的开发,我们今后的学习为了避免大家没有硬件的缺陷,我们都会以虚拟的设备为例进行学习,所以大家不必害怕没有硬件的问题。今天我们会分析到以下内容:1. 字符设备驱动基础2. 简单字符设备驱动实现3. 驱动测试 l 字符设备基础1. 字符设备描述结构在linux2.6内核中,使用cdev结构体描述一个字符设备,其定义如下: 1str...
在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。一个现实的Linux 设备和驱动通常都需要挂接在一种总...
.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !important; white-space: pre !important; overflow: auto !important }
.output_wrapper a:hover { text-decoration: underline; color: rgb(0, 96, 100) }
.output_wrapper figcaption { margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em }
.output_wrapper pre code .linenum { paddi...
TI-AM3359 I2C适配器实例分析I2C Spec简述特性:兼容飞利浦I2C 2.1版本规格支持标准模式(100K bits/s)和快速模式(400K bits/s)多路接收、发送模式支持7bit、10bit设备地址模式32字节FIFO缓冲区可编程时钟发生器双DMA通道,一条中断线三个I2C模块实例I2C0\I2C1\I2C2时钟信号能够达到最高48MHz,来自PRCM不支持SCCB协议高速模式(3.4MBPS)管脚管脚类型描述I2Cx_SCLI/ODI2C 串行时钟I2Cx_SDAI/ODI2C 串行数据I2C重置通过系统重置...
作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件一起的一张 CD 上, 并且操作系统负责传送固件到设备自身.
硬件越来越复杂,硬件的许多功能使用了程序实现,与直接硬件实现相比,固件拥有处理复杂事物的灵活性和便于升级、维护等优点。固件(firmware)就是...
<机械硬盘>a:磁盘结构-----传统的机械硬盘一般为3.5英寸硬盘,并由多个圆形蝶片组成,每个蝶片拥有独立的机械臂和磁头,每个堞片的圆形平面被划分了不同的同心圆,每一个同心圆称为一个磁道,位于最外面的道的周长最长称为外道,最里面的道称为内道,通常硬盘厂商会将圆形蝶片最靠里面的一些内道(速度较慢,影响性能)封装起来不用;道又被划分成不同的块单元称为扇区,每个道的周长不同,现代硬盘不同长度的道划分出来的扇区数也是...
linux设备驱动归纳总结(八):2.总线、设备和驱动的关系xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍了总线、设备和驱动函数的注冊,这节着重介绍它们三者的关系,和上一节一样,我模拟一条usb总线,一个usb鼠标设备和一个usb鼠标驱动函数,当然,仅仅是名字是usb。里面并没有实质的操作。仅仅是通过这样来介绍一下三者之间的关系。。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
① 按键所用开关为物理机械弹性开关,当机械触点断开、闭合时,由于机械弹性作用,开关不会马上稳定的接通或者断开。因而在闭合及断开的瞬间总是伴随有一连串的抖动 ② 按键去抖的方法主要有两种(1)硬件电路去抖(2)软件延时去抖 * for循环等待 * 定时器延时 ③ Linux内核使用struct timer_list来描述一个定时器struct timer_list {struct list_head entry;unsigned long expires;void (*function)(unsigned long);unsign...