Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Binary Interface) 设备驱动是操作系统的一部分,它能够通过一些特定的编程接口便于硬件设备的使用,这样软件就可以控制并且运行那些设备了.因为每个驱动都对应不同的操作系统,所以你就需要不同的 Linux.Windows 或 Unix 设备驱动,以便能够在不同的计算机上使用你的设备.这就是为什…
通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动.通用接口层和控制器驱动三大部分.其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能:1.    申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等:2.    配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作: 3.    向通用接口层提供接口,使得上层的协议驱动可以通过通用接口层访问控制器驱动: 4.    配合通用接口层,完成数据消息队列的排…
platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.Linux 2.6的设备驱动模型中,把I2C.RTC.LCD等都归纳为platform_device.总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成. platform_match函数首先判断是否有id_table,如果有则使用id_table来进行匹配,否则,判断plat…
我们知道,SPI数据传输可以有两种方式:同步方式和异步方式.所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返回.而异步方式则正好相反,数据传输的发起者无需等待传输的结束,数据传输期间还可以做其它事情,用代码来解释就是,调用传输的函数后,函数会立刻返回而不用等待数据传输完成,我们只需设置一个回调函数,传输完成后,该回调函数会被调用以通知发起者数据传送已经完成.同步方式简单易用,很适合处理那些少量数据的单次传…
1.申请设备号 #include <linux/fs.h> int register_chrdev_region(dev_t first, unsigned int count, char *name); 静态分配字符设备号,从fist开始的count个,name为设备名称(name会出现在/proc/devices和sysfs中),成功返回0,失败返回一个负的错误码 int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, un…
USB 的全称是 Universal Serial Bus,顾名思义:通用串行总线. 提到总线,联想一下,在你心目中总线总是用来干嘛的?还记得 I2C 总线? I2C 总线上挂有二条信号线,一条是 SCL. SDA,这二货是干嘛滴?传输数据!对,就是用来传输数据的.换句话说,就是用来通信的. 既然是用来通信的,那自然就要用通信协议来规范通信. 在 USB 的世界里有一种协议叫 USB 协议, 这协议太复杂了,一时半载的难以消化,这里我们并不深入 USB 协议. 10.1 USB 总线简介 USB…
本文章基于https://whycan.com/t_3087.htmlhttps://whycan.com/t_6021.html整理 F1c100s芯片支持USB的OTG模式,也就是可以通过更改UsbId拉低或拉高方式定义当前的开发板可以作为host还是device. usbid 拉高时,开发板作为外设方式. usbid 拉低时,开发板作为主机方式. 当然除了使用硬件方式,还可以通过Linux系统直接更改当前USB的模式. 1. 原理图 在F1c100s中PE2引脚是作为usbid功能来使用,…
PMBus协议规范介绍 PMBus是一套对电源进行配置.控制和监控的通讯协议标准.其最新版本为1.3,该规范还在不断演进中,比如新标准中新增的zone PMBus.AVSBus等特性.在其官网上有详细的规范文档,本节不尝试翻译规范文档,重点记录作者在了解PMBus过程中的疑问和解答. PMBus与I2C.SMBus的区别? PMBus在SMBus(System Management Bus)基础上增加了一套电源配置.控制和监控规范.SMBus最初是为电池智能管理而开发的一套标准,其基于I2C协议…
设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196 本文主要参考:http://www.wowotech.net/device_model/platform_device.html platform平台设备驱动是基于设备总线驱动模型的,它只不过是将 device 进一步封装成为 platform_device,将 device_driver 进一步封装成为 platform_device_driver,前面已经分析过设…
通过上一篇文章的介绍,我们知道,SPI通用接口层用于把具体SPI设备的协议驱动和SPI控制器驱动联接在一起,通用接口层除了为协议驱动和控制器驱动提供一系列的标准接口API,同时还为这些接口API定义了相应的数据结构,这些数据结构一部分是SPI设备.SPI协议驱动和SPI控制器的数据抽象,一部分是为了协助数据传输而定义的数据结构.另外,通用接口层还负责SPI系统与Linux设备模型相关的初始化工作.本章的我们就通过这些数据结构和API的讨论来对整个通用接口层进行深入的了解. /**********…