摘要: 最近因为工作需要涉及到了I2C总线。虽然我过去用过I2c,但看了 Linux kernel 后才发现,一个 layer 能被做到这样完善。1. Linux的I2C驱动架构Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中每个I2C总... 阅读全文
posted @ 2015-12-14 16:10 苍月代表我 阅读(1562) 评论(0) 推荐(0) 编辑
摘要: I2C总线定义 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以... 阅读全文
posted @ 2015-12-14 16:10 苍月代表我 阅读(1940) 评论(0) 推荐(0) 编辑
摘要: 最近在看Linux 2.6.21内核的I2C驱动,也在网上查了一下资料,有错也有对,有些心得,记录下来吧。里面认识或许多有不当之处,还恳请指正。1. I2C 协议1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的... 阅读全文
posted @ 2015-12-14 16:09 苍月代表我 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 1. 工作原理 I2S有5根线,每根线的作用和使用请驱动开发人员参考 《设备驱动程序开发详解》,《嵌入式系统接口设计与LINUX驱动程序开发》,CQ8401 datesheet,相关章节。而且要完成该驱动需要具备DMA,i2s,i2c等相关知识。1.1 原理理解 CQ8401 i2s 于 codec... 阅读全文
posted @ 2015-12-14 16:07 苍月代表我 阅读(721) 评论(0) 推荐(0) 编辑
摘要: I2S总线概述 音响数据的采集、处理和传输是多媒体技术的重要组成部分。众多的数字音频系统已经进入消费市场,例如数字音频录音带、数字声音处理器。对于设备和生产厂家来说,标准化的信息传输结构可以提高系统的适应性。I2S(Inter—IC Sound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定... 阅读全文
posted @ 2015-12-14 16:06 苍月代表我 阅读(3457) 评论(0) 推荐(0) 编辑
摘要: 要写I2S驱动,对于硬件也要了解。I2S是一种常用的数字音频接口。总线值处理音频数据,像编码和控制这样的其他信号被转移分开。I2S接口传输或者接受声音数据来自于外部立体声音频编码器。用于传输和接受数据,包括两个32x16FIFO数据结构。总线特征:2通道I2S总线用于DMA装置的音频接口运作。串行,... 阅读全文
posted @ 2015-12-14 16:03 苍月代表我 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 前面, 我们已经讨论了内核所作的在队列中优化请求顺序的工作; 这个工作包括排列请求和, 或许, 甚至延迟队列来允许一个预期的请求到达. 这些技术在处理一个真正的旋转的磁盘驱动器时有助于系统的性能. 但是, 许多面向块的设备, 例如闪存阵列, 用于数字相机的存储卡的读取器、u盘等, 并且 RAM 盘真... 阅读全文
posted @ 2015-12-14 15:48 苍月代表我 阅读(1905) 评论(0) 推荐(0) 编辑
摘要: 块设备驱动注册与注销块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为:int register_blkdev(unsigned int major, const char *name);major 参数是块设备要使用的主设备号,na... 阅读全文
posted @ 2015-12-14 15:47 苍月代表我 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 上回最后面介绍了相关数据结构,下面再详细介绍块设备对象结构 block_device内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区。如果该结构代表一个分区,则其成员bd_part指向设备的分区结构。如果该结构代表设备,则其成员bd_disk指向设备的通用硬盘结构ge... 阅读全文
posted @ 2015-12-14 15:46 苍月代表我 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。Linux platform drive... 阅读全文
posted @ 2015-12-14 15:44 苍月代表我 阅读(3550) 评论(0) 推荐(0) 编辑
摘要: 基本概念块设备(blockdevice)---是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。字符设备(Character device)---是一个顺序的数据流设备,对这种设备的读写是按字符... 阅读全文
posted @ 2015-12-14 15:44 苍月代表我 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 目录1.引言.....................................................................................................................12.Linux 内核模块................. 阅读全文
posted @ 2015-12-14 15:43 苍月代表我 阅读(903) 评论(0) 推荐(0) 编辑