Linux设备驱动
文章平均质量分 94
Loopers
操作系统爱好者
展开
-
Linux设备驱动之字符设备(三)
在Linux设备驱动之字符设备(一)中学习了设备号的构成,设备号的申请与释放。在Linux设备驱动之字符设备(二)中学习了如何创建一个字符设备,初始化,已经注册到系统中和最后释放该字符设备。本节将结合前两节学到的知道,编写一个简单的字符设备驱动。最后总结一下字符设备驱动的模型。字符设备驱动程序源码#include <linux/module.h>#include <linux/kernel.h>原创 2016-07-13 17:28:49 · 727 阅读 · 0 评论 -
Linux音频驱动-Card创建
概述在上节Linux音频驱动-ALSA概述中介绍了整个ALSA的构成,接口以及函数入口的分析。本节将从声卡的创建开始,也就是card的创建。card是整个声卡的最底层结构,用于管理该声卡下的所有设备包括control, pcm,timer等。在linux系统中使用struct snd_card结构代表一个card。数据结构声卡的主要数据结构struct snd_card原创 2016-11-24 13:28:36 · 3689 阅读 · 1 评论 -
Linux音频驱动-ALSA概述
概述ALSA(Advanced Linux Sound Architecture)是linux上主流的音频结构,在没有出现ALSA架构之前,一直使用的是OSS(Open Sound System)音频架构。关于OSS的退出以及ALSA的出现,可以看 Linux音频驱动-OSS和ALSA声音系统简介及其比较。原创 2016-11-22 19:28:32 · 24812 阅读 · 1 评论 -
Linux电源驱动-Linux Cpuidle Framework
前言现如今,Linux处理器电源管理重点聚焦在处理器处于运行状态时对其进行电源管理,主要的技术是Cpufreq: 根据cpu的负载,实时的改变cpu的频率或这电压,同时管理处理器的性能水平和电源功耗等。相反当处理器处于空闲状态,也就是idle状态时的功耗也需要进行管理。也就是本文需要讨论的重点: Cpuidle。目前市场中几乎所有的移动处理器都支持多处理器空闲状态的概念,而且每个原创 2016-12-12 17:15:17 · 3451 阅读 · 0 评论 -
Linux音频驱动-OSS和ALSA声音系统简介及其比较
概述昨天想在Ubuntu上用一下HTK工具包来绘制语音信号的频谱图和提取MFCC的结果,但由于前段时间把Ubuntu升级到13.04,系统的声卡驱动是ALSA(Advanced Linux Sound Architecture,高级Linux声音体系),而不是HTK中所使用的OSS(Open Sound System,开放声音系统)。网上查阅了大半天,按照 http://forum.ubunt转载 2016-11-21 10:17:45 · 8655 阅读 · 0 评论 -
Linux音频驱动-AOSC之Platform
概述在ASOC在Platform部分,主要是平台相关的DMA操作和音频管理。大概流程先将音频数据从内存通过DMA方式传输到CPU侧的dai接口,然后通过CPU的dai接口(通过I2S总线)将数据从达到Codec中,数据会在Codec侧会解码的操作,最终输出到耳机/音箱中。依然已下图作为参考:在platfrom侧的主要功能有: 音频数据管理,音频数据传输通过dma; 数据如何通过c原创 2016-12-02 19:31:44 · 5083 阅读 · 0 评论 -
Linux音频驱动-AOSC之Codec
概述ASOC的出现是为了让Codec独立于CPU,减少和CPU之间的耦合,这样同一个Codec驱动无需修改就可以适用任何一款平台。还是以下图做参考例子:在Machine中已经知道,snd_soc_dai_link结构就指明了该Machine所使用的Platform和Codec。在Codec这边通过codec_dai和Platform侧的cpu_dai相互通信,既然相互通信,原创 2016-12-01 17:01:08 · 3911 阅读 · 0 评论 -
Linux音频驱动-ASOC之Machine
概述在ASOC小节中描述了整个ASOC的架构,其中Machine是ASOC架构中的关键部件,没有Machine部件,单独的Codec和Platform是无法工作的。因此本节则先从Machine部分开始,那应该如何开始呢? 答案当然是从代码入手,先进入ASOC在kernel中的位置: kernel/sound/soc下root@test:~/test/kernel/sound/soc$ l原创 2016-12-01 10:49:17 · 6439 阅读 · 1 评论 -
Linux音频驱动-ASOC(ALSA System on Chip)
概述此处还需引入之前说过的话: 新事物的出现必然是为了解决旧事物中的不足。这句话在现实生活中和程序世界中道理一样。ASOC的出现就是为了解决ALSA无法解决的问题。ALSA到底存在什么问题? 以及ASOC会以怎样的方式去解决ALSA存在的问题?详细参考内核文档: kernel\documentation\sound\alsa\soc\Overview.txtALSA原创 2016-11-30 15:10:11 · 2661 阅读 · 0 评论 -
Linux音频驱动-IIS总线标准
介绍许多数字音频系统正被引入消费者音频市场,包括CD,磁带,数字声音处理器和数字电视声音。在这些系统中的数字音频信号需要由许许多多(Very-large-scale integration)的IC组成,处理。在音频系统中常见的IC芯片有:.A/D and D/A 转化器(数模转化器).数字信号处理器。.数字录像,已经出错纠正。.数字滤波器。.数字输入/输出的接口。由于设备和原创 2016-11-17 17:44:06 · 2417 阅读 · 0 评论 -
Linux音频驱动-WAV文件格式分析
概述WAV文件格式是Microsoft的RIFF规范的一个子集,用于存储多媒体文件。WAV(RIFF)文件由若干个Chunk组成,分别为: RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk。具体格式如下:RIFF Chunk根据RIFF的格式,可以抽象出RIFF chunk的结构体:struct RIFF_CHU原创 2016-11-16 19:06:19 · 2059 阅读 · 0 评论 -
Linux音频驱动-声音采集过程
现实中的声音是一段连续的信号, 现在大部分的声音是以离散的数字信号保存下来,例如CD、MP3音频格式。 在保存这些信息时,考虑到对声音质量和存储的效率, 需要对声音的几个重要的基本属性进行研究。对于人类而言,声音是通过物体震动而产生的声波,通过介质传播而能够被人耳感知到的波动现象。能够被人耳朵感知到的波动频率在20到20KHz之间, 高于这个范围称为“超声波”,低于此范围称为“次声波”。一转载 2016-11-16 15:43:52 · 2864 阅读 · 2 评论 -
Linux设备驱动之字符设备(二)
通过上一节Linux设备驱动字符设备(一)了解了Linux设备驱动的分类,设备号的构成,设备号的申请以及设备号的释放。在Linux内核中使用struct cdev结构来代码字符设备。<include/linux/cdev.h>--------------------------------------------------struct cdev { struct kobject kob原创 2016-06-22 17:02:20 · 631 阅读 · 0 评论 -
Linux设备驱动之字符设备(一)
Linux中设备驱动的分类从上图可以看到Linux系统将各异的设备分为三大类:字符设备,块设备和网络设备。内核针对每一类设备都提供了对应驱动模型架构,包括基本的内核设施和文件系统接口。字符设备:在传送过程中以字符为单位,一个字节一个字节的读写,不能随机的读写数据,因为这类设备读写速度比较缓慢(因而其内核设施中不提供缓存机制),常见的字符设备有键盘,鼠标已打印机设备等。块设备: 是指可以从任意位置读取原创 2016-06-22 15:27:59 · 1486 阅读 · 0 评论 -
Linux音频驱动-PCM设备
概述1. 什么是pcm?pcm(Pulse-code modulation)脉冲编码调制,是将模拟信号转化为数字信号的一种方法。声音的转化的过程为,先对连续的模拟信号按照固定频率周期性采样,将采样到的数据按照一定的精度进行量化,量化后的信号和采样后的信号差值叫做量化误差,将量化后的数据进行最后的编码存储,最终模拟信号变化为数字信号。2. pcm的两个重要属性 a.原创 2016-11-25 20:11:16 · 10686 阅读 · 0 评论