音频设备驱动程序移植

合集下载

基于ARM的网络对讲系统的设计

基于ARM的网络对讲系统的设计

图 4 系统软件架构
3. 1 嵌入式操作系统移植 设计采用 Windows CE 6. 0 作为 ARM 模块的嵌
入式操作系统. Windows CE 操作系统的开发环境为 Platform Builder 6. 0 ( PB6 ) ,PB6 可以构建 Windows CE 嵌入式操作系统,并进行剪裁,得到需要的内核 镜像. 操作系统移植的主要步骤如下.


第 38 卷
3) 利用 SD 卡下载安装内核镜像文件到 ARM 模块的 Nand Flash. 内核烧写完成后,ARM 模块从 Nand Flash 启动即可运行 Windows CE 6. 0 操作系统. 3. 2 网络语音对讲应用程序设计
系统在 Visual Studio 2005 ( VS2005 ) 环境下开 发网络语音用户软件,设计将运用 VS2005 中的 Microsoft Visual C + + 进行程序设计. 应用程序中将调 用 Window CE 操作系统音频输入输出接口和网络 接口实现网络实时语音对讲. 其软件设计流程如图 5 所示.
系统的软件部分主要包括 ARM11 模块启动引 导程序( Boot Loader) 、DM9000 网卡与 AC97 音频驱 动程序[7]、Windows CE 6. 0 嵌入式操作系统的剪裁 和移植以及网络对讲用户应用程序. 图 4 为软件设 计架构图. 系统软件部分主要为 Windows CE 6. 0 系 统剪裁与网络语音用户应用程序的设计. 终端在 Windows CE 6. 0 操作系统平台上编写网络语音对 讲应用程序,其包括音频信号的采集与播放以及网 络数据传输与接收程序设计. 用户应用程序通过 Windows CE 操作系统来管理系统硬件资源,调用音 频驱动和网卡驱动来控制 WM9714 和 DM9000 的数 据读写,实现语音的网络通信.

基于802.11n的Ad-hoc通信终端

基于802.11n的Ad-hoc通信终端

基于802.11n的Ad-hoc通信终端段有楠;丁志中;牛坤【摘要】无线Ad-hoc网络不需要基础设施作为支撑,各终端之间可以自动组网,因此在军事、抢险和救灾等场景中有着广泛的应用前景.然而,目前市场上并没有满足宽带通信需求的Ad-hoc网络通信终端产品.本文采用三星公司的ARM9芯片S3C2440作为主控制器,Ralink公司的RT3070 IEEE 802.11n无线网卡作为空中接口模块,研发了一款移动Ad-hoc网络通信终端,可以实现文本、语音、视频的传输等功能.【期刊名称】《计算机系统应用》【年(卷),期】2015(024)010【总页数】5页(P106-110)【关键词】Ad-hoc网络;802.11n;ARM;AMBE-2000【作者】段有楠;丁志中;牛坤【作者单位】合肥工业大学计算机与信息学院通信工程系,合肥230009;合肥工业大学计算机与信息学院通信工程系,合肥230009;合肥工业大学计算机与信息学院通信工程系,合肥230009【正文语种】中文Ad-hoc网络又称无线临时网络, 它依赖节点间的动态连接而形成. 在没有固定的基础设施作支撑的场景中, 具有自组织、分布性、动态性等特点的移动Ad-hoc网络, 能够实现快速部署和数据传输, 因而比传统无线接入方式更好地解决了复杂环境下的数据传输问题.现有支持Ad-hoc组网的无线空中接口技术主要有IEEE 802.15.1(Bluetooth)、IEEE 802.15.4(ZigBee)、IEEE 802.11系列(WiFi). 在Ad hoc应用背景下, 这些技术有着各自的优缺点: 蓝牙可提供1Mbps的传输速率, 但其传输距离十分有限, 一般在10米左右, 即使是新的4.0标准也只能在低功耗模式下达到100米; ZigBee 在无线传感网络中应用广泛, 但其理论最高传输速率仅在250Kbps, 难以完成多媒体信息的传输; WiFi技术可提供极高的传输速率, 一般的单天线产品即可达到150Mbps, 然而现有的WiFi产品主要是针对有基础设施场景而设计. 因此, 市场上并未出现能够在复杂环境下实现Ad-hoc网络的终端产品. 国际顶级的军用设备制造商如Rockwell Collins、英国L-3正在推出相应产品, 但其采用的技术处于保密状态. 而在学术界的相关研究中, 文献[1]提及的语音终端仍未突破ZigBee技术的速率瓶颈; 文献[2]设计的终端则不能传输影像信息. 可见, 此类终端的研发也处于不完备状态.本课题选择802.11n作为物理层空中接口技术, 针对无中心节点设备的通信场景, 结合嵌入式Linux操作系统, 在ARM平台上设计并实现了一款具有文字、音视频等多媒体信息收发功能的手持无线通信终端. 该终端通过触屏进行人机交互, 使用相对独立的无线传输、语音编解码和摄像头等模块完成相应功能.Ad–hoc网络是一种分散式的无线网络系统. 一个典型的Ad–hoc网络结构模型如图1所示, 其中实线表示两个节点可进行单跳通信, 虚线则表示需借助其他节点进行多跳通信(multihop). 网络中不存在固定的路由和接入设备. 在单跳通信中, 节点间可直接建立连接并传输数据. 而在多跳通信中, 由于每个节点的覆盖范围有限, 故需要一个或多个中间节点, 完成数据包的转发, 从而使相对较远的两个节点完成通信.图2所示为本终端设备的协议栈模型. 其物理层及数据链路层遵照802.11n标准来实现, 而在网络层使用IPv4协议. TCP/IP协议则完成数据的封包, 当应用层的软件发送文字和语音信息时, 传输层使用UDP方式封装数据帧并进行传输, 而当软件拍摄视频进行发送时, 传输层则以TCP方式进行支持.2.1 硬件系统设计本系统选择ARM9平台作为主控单元, 使用三星S3C2440芯片作为中央处理器. 该处理器专为手持设备设计, 功耗低且主频达到400MHz, 完全满足了使用需求. 并且作者对外围存储器NAND FLASH和闪存SDRAM进行扩展, 以满足软件系统的运行. 图3所示为系统的总体方框图.当系统工作时, 由主控单元调度周边各功能模块以实现相应的功能. 表1列出了主要部分器件的详细信息. 在硬件制板和布线过程中, 地址线要使用蛇形走线法, 以补偿相关信号线中延时较小的部分; 数据线则采用差分布线方式以减小干扰; 芯片的数字地和语音部分的模拟地要区分开, 单点共地. 另外, 所有芯片的晶振都加上外包地线和线上过孔, 以减小晶振对其他线路的干扰.2.2 软件系统介绍操作系统方面, 采用在嵌入式系统中广泛应用的Linux 2.6.29内核, 及Trolltech公司研发的Qtopia操作系统. 在Linux开发平台上进行内核裁减时, 配置好触屏、摄像头、USB接口及网卡等相关驱动的选项, 从而保证系统的正常工作.针对系统硬件, 作者编写了一套应用程序, 命名为MiANet. 程序采用嵌入式C++编程技术, 在Qt框架下完成开发. Qt是综合性跨平台的C++应用开发框架, 其良好的移植性为嵌入式开发提供了便利. 对于各个硬件模块, 分别编写代码调试, 最终通过GUI界面将所有部分进行融合. MiANet具有文字发送、语音通话、影像传输等功能, 用户可通过触摸屏或按键进行操作, 还可以对软件进行相关设置.无线模块不但要能够较好支持Ad-hoc功能, 还要方便与CPU通信. 作者调研发现, 802.11n的芯片厂商主要有Atheros、Ralink、Broadcom等, 大部分产品的性能无法支持自组网和多跳通信, 能够完成Ad–hoc组网的只有少数几款芯片. 在这些产品中, 综合考虑性能、易用性及接口等方面, 本文最终选用Ralink公司的RT3070芯片. 该芯片使用USB接口, 支持infrastructure和Ad-hoc两种工作模式, 且厂家提供了Linux系统下的驱动. 因此, 将RT3070模块作为本设备的无线解决方案.3.1 驱动移植技术RT3070的驱动是完全开源的, 使用者要根据系统内核版本的不同进行移植. 本系统使用的是Linux 2.6.29内核, 移植RT3070驱动步骤如下.(1) 定制Linux内核. 进入Networking support –> Wireless, 勾选Wireless extensions sysfs files; 进入Networking options, 去除The IPv6 protocol, 仅支持IPv4协议; 将Ralink driver support项设为动态加载, 并把Ralink相关项设为空, 以免驱动冲突.(2) 从官网下载RT3070驱动源码, 在Linux开发环境中进行解压.(3) 修改Makefile文件. 将CHIPSET一项的值设为3070; 内核路径LINUX_SRC和交叉编译环境CROSS_COMPILE要根据开发环境作相应修改.(4) 配置网络加密选项. 修改config.mk文件, 将HAS_WPA_SUPPLICANT的值改为y; HAS_NATIVE_WPA_SUPPLICANT_SUPPORT的值改为y.(5) 完成以上设置后, 执行make指令进行编译, 生成驱动文件rt3070sta.ko, 将该文件和驱动中的RT2870STA.dat一并下载至终端设备.至此驱动移植完成. 输入insmod rt3070sta.ko, 即成功在设备上动态加载该驱动.3.2 Ad–hoc组网过程RT3070进行Ad–hoc组网通信的过程如下:(1) 以一台终端为初始节点, 设定其工作状态为Ad-hoc模式, 并产生一个Ad-hoc 小区. 不同小区之间以16进制的地址和ESSID(扩展服务集标识符)为特征进行区别.(2) 其他终端设备搜索附近的小区, 一旦搜索到该小区, 即进入接入流程.(3) 开始接入小区, 设定终端的工作状态为Ad-hoc模式, 并将ESSID值同该小区设为一致, 之后广播新节点加入的信息.(4) 其他终端收到广播, 确认新节点加入. 当所有节点均成功加入小区, 组网过程就完成了.默认的RT3070工作模式为infrastructure, 因此需要对其进行相应设置. 根据上文步骤, 使用ifconfig和iwconfig指令进行Ad-hoc组网. 其中, ifconfig用来配置终端系统的网络接口, 而iwconfig完成无线网络的配置. 以组建OPENADHOC小区为例, 将这些shell语句编写成一个脚本文件, 主要代码及注释如下:##########生成Ad-hoc小区ifconfig ra0 inet 192.168.10.1 netmask 255.255.255.0 up #配置IP地址和掩码, 启动模块iwconfig ra0 mode ad-hoc #设置工作模式为Ad–hociwconfig ra0 essid OPENADHOC #设置ESSID为OPENADHOC##########加入Ad-hoc小区ifconfig ra0 192.168.10.2 netmask 255.255.255.0 up #设置IP地址与第一个节点在同一网段iwlist ra0 scan #列出搜索到的无线小区iwconfig ra0 mode ad-hoc #设置工作模式为Ad-hociwconfig ra0 essid OPENADHOC #加入OPENADHOC由于单个节点网络性能的限制, 有时信号强度较低, 无法保证高质量的数据传输. 本文设计了一个语音压缩模块, 以保证用户在信号较弱时仍能进行流畅的通话.本模块选用DVSI公司的AMBE-2000语音压缩芯片, 它采用FEC(前向纠错)编码技术对语音信号进行处理. 语音信号的频率范围在300–3400Hz, 由香农采样定理知, 经过8KHz抽样和8位的PCM编码后, 数据速率在64Kbps, 再对数字信号进行卷积编码, 处理后的信号速率约为2–9.6 Kbps, 压缩效果显著.4.1 硬件电路设计AMBE–2000核心部分由独立的编码器和解码器组成, 数据帧分为有帧(Framed)和无帧(Unframed)格式, 两种方式下, 数据帧的长度均为24个字, 区别在于有帧的前12个字包含了帧头、状态、控制等信息, 后12个字为语音数据, 而无帧格式不包含控制信息, 24个字全为数据. 帧格式的选择可通过设置CHANN_SEL[0-1]两个引脚电平来完成, 本文设置为主动有帧工作方式, 此模式下可编程令其改变工作状态. 相似地, 芯片初始编码速率由RATE_SEL[4–0]五个引脚来设置, 通过编程也可进行改变. 本方案设为适中的4Kbps码速率, 电平值为10001.与AMBE-2000协同使用的是数模转换芯片AD73311和放大器LM386.AD73311是一款高性价比的A/D转换芯片, 最大采样率可达到64KHz. LM386是应用广泛的音频集成功率放大器, 其增益范围在20~200倍可调. AMBE-2000与主控平台通过串口进行通信. 图4所示为模块的工作流程图.4.2 软件工作流程根据AMBE–2000芯片手册规定的工作流程, 每隔20ms要读取一帧数据, 读取操作的过程如下:(1) 等待EPR引脚变为低电平, 读取第一帧数据;(2) 延迟等待略小于20ms的时间;(3) 在CHAN_TX_STRB引脚上发送帧同步信号, 并从CHAN_TX_DATA读取数据;(4) 若读取到的数据不是0x13EC, 丢弃之, 回到步骤(3)重新执行;(5) 若读到的数据是0x13EC, 则根据设置好的码率继续读出剩余23个字, 而无需再检测CHAN_TX_STRB信号.写入操作同读取的过程基本一致, 二者区别在于写使能引脚CHAN_RX_STRB的脉冲信号是由CPU的GPIO口编程产生的.具体来说, 驱动程序根据芯片手册的时序逻辑图, 使用s3c2410_gpio_setpin函数对GPIO引脚的电平进行相应的置高和置低, 从而产生读写时序及使能信号. 语音帧长度为24个字, 而每次帧同步信号置低时, 需传输1个字的数据, 由于发送和接收动作均以1字节为单位, 因此每个字分作2次传输. 对于单字节的传输方法为, 自高至低使用位运算操作, 依次取出每个比特位的值, 是1的话就将数据线置高, 是0就将数据线置低. 数据线的高和低也使用s3c2410_gpio_setpin函数进行操作. 硬件方面, 本课题选用OV9650 CMOS摄像头模块, 该摄像头分辨率为130万像素, 提供640*480和1280*1024两种分辨率, 色彩24位, 满足了使用需求.S3C2440具有专门的CMOS接口, 方便同模块进行连接. 在2.6.29内核中, 也包含了该模块的驱动.摄像头模块自显示的软件流程图如图5所示. 在进行视频发送时, 发端读取一帧图像, 使用send函数将图片发送至收端, 由于一帧图像大小约为200至300Kb, 而套接字单次发送与接收长度只有几千字节, 因此将一帧图像以每Kb为单位拆分并按顺序发送, 在接收端相应的将图像还原出来, 再转换为BMP格式绘制在屏幕相关区域.6 实验结果作者在3台终端设备上成功搭建了Ad–hoc网络, 并进行任意2个节点间的通信测试.使用1KHz的标准正弦波模拟语音信号, 加在输入端. 接收端的输出接示波器. 波形如图6所示, 上方为输入端, 下方为输出端. 延时约为200us.使用一台终端拍摄其周边情况, 发送至另一终端. 图7左侧为发送端采集摄像头数据并在本机上显示的画面, 右侧为接收端屏幕上的画面. 后者可以在屏幕上实时显示, 延时约为500us. 显示的图像清晰度较高, 但刷新速率偏低, 约为800ms每帧. 图5 摄像模块软件流程图图6 正弦波发送实验波形图7 图像传输实验画面7 总结与展望使用WLAN技术实现的Ad–hoc网络, 不需要基础设施, 以点对点和多跳方式完成通信, 因此可在复杂环境中实现快速部署和数据传输. 本文设计并实现的Ad–hoc 通信终端, 以802.11n作为空中接口技术, 具有稳定便携、功能易用、传输高速的特点. 实验结果表明, 该终端能够比较可靠地传输文字、语音、图像等多媒体内容, 在军事行动、抢险救灾等场景中有着广阔的应用前景.1 黄瑞,丁志中,牛坤.基于802.15.4无线Ad hoc语音终端的设计与实现.合肥工业大学学报(自然科学版),2014,37(10): 1216–1221.2 王晓华,贾继洋.基于ARM-Linux的Ad-hoc组网.计算机系统应用,2014,23(7):84–88.3 Bekmezci I, Sahingoz OK, Temel S. Flying Ad-hoc networks (FANETs): A survey. Ad Hoc Networks, 2013(11): 1254– 1270.4 彭永祥.无线Ad hoc网络路由技术若干关键问题研究[博士学位论文].成都:电子科技大学,2013.5 刘旭东.基于Android的ad hoc网络结点间安全通信的研究与实现[硕士学位论文].北京:北京工业大学,2013.6 IEEE Standard for Information technology-Telecomm unications and information exchange between systems-Local and metropolitan area networks - Specific requirements. Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 5:Enhancements for Higher Throughput.7 王云亮,王光林.基于Socket的Linux与Windows下WiFi模块间通信的实现.微型机与应用,2014,33(2):57–59.8 张伟,刘斌,董群锋.基于S3C2410上U-Boot的移植与实现. 计算机系统应用,2014,23(9):204–207.9 宋敬彬.Linux网络编程(第2版).北京:清华大学出版社, 2014.802.11n Ad-hoc Communication TerminalDUAN You-Nan, DING Zhi-Zhong, NIU Kun(Department of Communications Engineering, Colledge of Computer Science and Informatics, Hefei University of Technology, Hefei 230009, China)Abstract:Wireless Ad-hoc networks do not need any infrustrature, and the terminals can establish network by themselves. Therefore, they have broad prospective applications in military, disaster rescue and other scenes. However, in the market so far there are no such kinds of products that can meet the demand of broadband communications. This paper presents a new wireless Ad-hoc terminal prototype developed by the autors’ research team. It uses Samsung S3C2440 ARM9 processor as main controller and Ralink RT3070 IEEE 802.11n wireless module as air interface. The device has the functionality of text, voice and video transmissions, as well as other functions.Key words:Ad-hoc network; 802.11n; ARM; AMBE-2000①收稿时间:2015-01-29:收到修改稿时间:2015-04-07作者在3台终端设备上成功搭建了Ad–hoc网络, 并进行任意2个节点间的通信测试.使用1KHz的标准正弦波模拟语音信号, 加在输入端. 接收端的输出接示波器. 波形如图6所示, 上方为输入端, 下方为输出端. 延时约为200us.使用一台终端拍摄其周边情况, 发送至另一终端. 图7左侧为发送端采集摄像头数据并在本机上显示的画面, 右侧为接收端屏幕上的画面. 后者可以在屏幕上实时显示, 延时约为500us. 显示的图像清晰度较高, 但刷新速率偏低, 约为800ms每帧. 使用WLAN技术实现的Ad–hoc网络, 不需要基础设施, 以点对点和多跳方式完成通信, 因此可在复杂环境中实现快速部署和数据传输. 本文设计并实现的Ad–hoc 通信终端, 以802.11n作为空中接口技术, 具有稳定便携、功能易用、传输高速的特点. 实验结果表明, 该终端能够比较可靠地传输文字、语音、图像等多媒体内容, 在军事行动、抢险救灾等场景中有着广阔的应用前景.1 黄瑞,丁志中,牛坤.基于802.15.4无线Ad hoc语音终端的设计与实现.合肥工业大学学报(自然科学版),2014,37(10): 1216–1221.2 王晓华,贾继洋.基于ARM-Linux的Ad-hoc组网.计算机系统应用,2014,23(7):84–88.3 Bekmezci I, Sahingoz OK, Temel S. Flying Ad-hoc networks (FANETs): A survey. Ad Hoc Networks, 2013(11): 1254– 1270.4 彭永祥.无线Ad hoc网络路由技术若干关键问题研究[博士学位论文].成都:电子科技大学,2013.5 刘旭东.基于Android的ad hoc网络结点间安全通信的研究与实现[硕士学位论文].北京:北京工业大学,2013.6 IEEE Standard for Information technology-Telecomm unications and information exchange between systems-Local and metropolitan areanetworks - Specific requirements. Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 5: Enhancements for Higher Throughput.7 王云亮,王光林.基于Socket的Linux与Windows下WiFi模块间通信的实现.微型机与应用,2014,33(2):57–59.8 张伟,刘斌,董群锋.基于S3C2410上U-Boot的移植与实现. 计算机系统应用,2014,23(9):204–207.9 宋敬彬.Linux网络编程(第2版).北京:清华大学出版社, 2014.。

基于ARM9的嵌入式教学平台开发

基于ARM9的嵌入式教学平台开发
F AS L H
S DRA M
G R 模块 I PS
¥C40 324 处理器
结 构需 求 的 B oL a e 是不 同 的。 o todr 3 iu )L n x内核移 植 () 1 内核 代码 分 析口 一 顶层 目录 下 的文 件基 本 ] 可 分 为与体 系结构 相 关 和 与体 系 不相 关 两个 部 分 ,
r n n f mb d e p r t gs se a d t eta s ln aino ee a tLiu rv r o me to e e d d o e ai y tm n h r n pa tto f lv n n xd ie .Fo h u p s f n r rt ep r o eo
彼 此独立 , 每个 文件 目录下都 有 相 应 的 Ma e l k fe文 i 件, 该文 件解决 了编译 哪些 文件 、 怎样编译 这些 文件
和 怎样连 接这些 文件 的问题 。
器件使 用 3 3 电源 , C 接 口、 声 波测 距模 块 、 .V L D 超
() 2 内核 的配 置一 下载 源 代 码后 根 据 系统 所 需 对 内核进行 合理 的裁剪 , 除多余 的选项 , 到一个 去 得 相 当精 简 的 内核 。编 译 之 前 首 先 修 改 根 目录下 的 Ma ei 文 件 , 别 选择 AR 和 am— n xg c kfe l 分 M r l u —c 为 i
第3 2卷 第 5期 21 0 0年 1 0月
电气 电子 教 学 学 报
Vo _ 2 No 5 I3 . OC . 0 0 t2 1
J OuRNAL OF EEE
基于 A RM9的嵌 入 式 教 学 平 台开 发
卜 权 , 成 华 , 心 一 王 王

开发DSP硬件驱动程序的一种方法

开发DSP硬件驱动程序的一种方法

开发DSP硬件驱动程序的一种方法目前,TI公司的应用很广泛,随着DSP的功能越来越强大,片上外设种类及应用日趋复杂。

传统的DSP程序开发包含两方面程序:即配置、控制、中断等管理DSP片内外设、接口的硬件相关程序和基于应用的算法程序。

这样的系统结构,应用程序与硬件相关程序紧密的结合一起,限制了程序的可移植性和通用性,软件开发总要从零开头,存在诸多重复工作。

一旦硬件平台有变幻,往往与硬件程序捆绑一起的应用程序也需改动,代码的维护性和可移植性均不高。

通过建立硬件驱动程序的开发模式,可使上述现象得到充实。

因此,本文介绍一种开发TI公司DSP片内及片外硬件外设驱动程序的办法,并以C5000 DSP的McBSP/DMA及TMS320C5509的驱动程序开发为详细对象,介绍这种办法的应用。

基于DSP/BIOS的IOM硬件驱动在CCS应用环境中集成的实时操作系统DSP/BI-OS[1]中,硬件驱动程序终于以函数库的形式被封装起来,应用程序可不关怀底层硬件外设的详细操作,通过调用DSP/BIOS相关的标准API与不同外设接口。

接口按统一标准定义,即在DSP/BIOS中创建并配置硬件设备驱动模块为IOM(I/O Mini-driver)模式。

IOM[2]是DSP/BIOS的设备驱动模块的一种接口方式,配置硬件设备驱动模块为IOM模式可在DSP/BIOS的图形化界面(GUI)中便利完成。

IOM 模式将设备驱动程序分为两个层次:上一层是"类"驱动程序(class driv-er),这部分程序负责对存储缓冲区管理、由DSP/BIOS各类标准的API函数与应用程序接口,与设备硬件无关。

下一层是"迷你"驱动程序 (mini-driver),这部分程序集成了实际硬件相关的代码。

IOM 接口将"迷你"驱动程序与"类"驱动程序联系一起,包括定义I/O数据包 (IOM_Packet)以提交"迷你"驱动程序读写,定义功能函数包(IOM Fxns)完成相关初始化,打开或关闭通道,提交I/O数据传输与控制等任务,确保"迷你"驱动程序与"类"驱动程序运行协调全都。

alsa 库移植与声音编程

alsa 库移植与声音编程

在移植alsa-lib和alsa-utils之前首先要移植alsa-device,保证系统支持alsa 驱动,移好alsa-device后再dev/snd后出现相应的设备:∙controlC0 --> 用于声卡的控制,例如通道选择,混音,麦克风的控制等∙midiC0D0 --> 用于播放midi音频∙pcmC0D0c --〉用于录音的pcm设备∙pcmC0D0p --〉用于播放的pcm设备∙seq --〉音序器∙timer --〉定时器1. tar -xvf alsa-lib_1.0.23.orig.tar.bz2(1)配置alsa-lib./configure --host=arm-fsl-linux-gnueabi--prefix=/opt/ALSA/alsa_libCC=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/a rm-fsl-linux-gnueabi-gccerror:configure error required courses helper header not found安装libncursesw5-dev。

apt-get install libncursesw5-devconfigure: error: panelw library not found./configure加入--with-curses=ncurses/bin/bash: xmlto: command not found安装xmlto/bin/rm: cannot remove `libtoolt': No such file or directory强制make!(2)makemake install生成的库alsa_lib$ lsbin include lib share在这个文件lib下的库*.so.*是要发布到板子上去的,可以直接copy到开发板的根目录lib下(这里只是copy,不要剪贴,后面还要用到,注意的是有些软连接不能copy,只能自己到板子上创建。

2024年qnx培训教程

2024年qnx培训教程

QNX培训教程1.引言QNX是一款高性能、可扩展的实时操作系统,广泛应用于汽车、医疗、工业控制等领域。

本教程旨在帮助读者了解QNX的基本概念、开发环境和编程技术,从而为QNX应用程序开发奠定基础。

2.QNX基础知识2.1实时操作系统可预测性:QNX提供了确定性调度策略,确保任务按照预定的时间执行。

高可靠性:QNX采用微内核架构,将内核与用户态应用程序隔离开来,降低了系统崩溃的风险。

高性能:QNX内核经过优化,能够在多核处理器上高效运行。

可扩展性:QNX支持多种硬件平台和操作系统,便于跨平台开发。

2.2微内核架构模块化:便于维护和更新,提高系统稳定性。

可扩展性:可根据需求添加或删除模块,实现定制化开发。

高效性:微内核只包含基本功能,减少了系统资源占用。

2.3QNX网络协议栈高效性:采用零拷贝技术,减少数据传输过程中的CPU开销。

可靠性:支持多种网络协议,保证数据传输的可靠性。

安全性:提供安全套接字层(SSL)等加密技术,确保数据传输的安全性。

3.QNX开发环境3.1工具链QNX开发环境包括一套完整的工具链,支持C、C++、汇编等编程语言。

主要工具如下:QNXMomenticsIDE:集成开发环境,提供代码编辑、调试、性能分析等功能。

QNXQCC:C/C++编译器,支持多种优化选项。

QNXQNXLINK:调试器,支持远程调试和性能分析。

QNXQMAKE:项目管理工具,用于Makefile文件。

3.2SDKQNXNeutrino库:提供实时操作系统核心功能。

QNXPhoton微型GUI库:提供图形用户界面支持。

QNXRTP库:支持实时进程通信。

QNXMultimedia库:提供音频、视频等多媒体功能。

4.QNX编程技术4.1进程与线程进程创建与销毁:fork()、exec()、exit()。

线程创建与销毁:pthread_create()、pthread_exit()。

线程同步:互斥锁(mutex)、条件变量(conditionvariable)、读写锁(read-writelock)。

SGTL5000声卡驱动移植

SGTL5000声卡驱动移植

文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.第1章 SGTL5000声卡驱动移植本章导读产品开发完毕后,因为某些原因,用到的一些芯片停产,这是一件很让人头疼的事情,可是却又不得不面对这样的尴尬情形。

如果有兼容的芯片还好处理,如果没有兼容芯片,那就不得不进行改版设计,实现与原来相同的功能。

在EasyARM-i.MX283A 开发过程中就遇到了UDA1380芯片停产的情况,新方案准备采用SGTL5000来进行替换,本章就讲述SGTL5000声卡驱动在i.MX283平台上的移植过程。

1.1 背景交代由于AP-283Demo 板上的UDA1380音频芯片即将停产,因此要用SGTL5000音频芯片代替。

因此需要在EasyARM-i.MX283A 开发板的Linux 内核上实现该芯片的驱动。

EasyARM-i.MX283A 开发板的Linux 内核针对i.MX283处理器已经有了SGTL5000驱动代码,所以这里的工作主是使驱动正常工作起来。

SGTL5000在内核的音频解码/编码驱动源码文件在<sound/soc/codes/sgtl5000.c>文件。

SGTL5000在内核的关于处理器平台的源码文件在<soud/soc/mxs/>目录。

1.2 电路原理图需要制作一块SGTL5000的验证板,其核心电路图如图1.1所示。

图1.1 SGTL5000验证板核心电路图SGTL5000是并没有使用晶振提供的时钟,而是用了处理器提供MCLK 信号作为系统时钟。

SGTL5000验证板的接口电路图如图1.2所示。

SGTL5000是通过I 2S 接口与EasyARM-i.MX283A 开发板实现音频通信。

SGTL5000验证板的接口是通过杜邦线与EasyARM-i.MX283A 开发板连接。

文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.图1.2 SGTL5000验证板接口电路图SGTL5000验证板接口与 EasyARM-i.MX283A 开发板的连接方法如表1.1所示。

基于ARM11的视频采集与编码系统的设计

基于ARM11的视频采集与编码系统的设计

基于ARM11的视频采集与编码系统的设计摘要:基于嵌入式技术的无线视频监控以其灵活性、高集成性、便捷性等诸多优点必将取代传统的有线视频监控。

针对目前视频监控的实际需求,结合嵌入式技术、图像处理技术,设计并实现了一种可靠性高、成本低的嵌入式视频采集及编码系统。

它是视频监控的前端,是无线视频监控系统的一个子系统。

系统选用S3C6410微处理器作为核心板的控制器,采用USB接口的摄像头进行采集,利用S3C6410的硬件编解码模块进行H.264编码。

根据系统的功能要求,开发了zc301摄像头和MFC的设备驱动程序,并采用内存映射方式和双缓冲思想编写了基于V4L的视频采集程序。

探讨了H.264的编码特性和码流结构,利用MFC驱动中的API函数,开发了基于H.264算法的视频编码程序。

测试表明,设计的系统视频采集效率高、图像连续性好、运行稳定。

关键词:嵌入式系统;ARM11;S3C6410;视频采集;视频编码;H.264ABSTRACT:In the future, Wireless video monitoring system based on embedded technology, with many advantages such as flexibility, integration, convenience and so on, will replace existing wired video monitoring system inevitably. Aiming at actual demand of present video monitoring, this paper designs and realizes a reliable and cheap embedded video capturing and compression system, with the combination of embedded technology and image processing technology. This system is the front end of video monitoring and a subsystem of wireless video monitoring system. This system chooses S3C6410 as the kernel board's controller uses the camera with USB interface to capture pictures and encodes the video data using the codec of S3C6410. According to functional requirements of the system, device drivers of MFC and zc301 camera are developed, and video capturing application based on V4L using Memory Mapping and the idea of the double buffer are also developed. After a brief study on the feature and stream structure of H.264, video encoding application based on H.264 with the MFC driver’s API is completed. The test shows that this system has a high efficiency to capture video data, has good continuity for pictures and can run stably.KEY WORD:Embedded system; ARM11; S3C6410; Video capturing; Video encoding; H.264引言视频具有表达客观事物直观、生动、形象,信息丰富等优点,它在各行各业的应用日益受到人们的关注。

SoPC平台下ALSA标准声卡驱动设计与实现

SoPC平台下ALSA标准声卡驱动设计与实现

中图分类号:TP316 文献标识码:A 文章编号:1009-2552(2009)01-0073-03SoPC平台下ALSA标准声卡驱动设计与实现林 钦,刘佩林,应忍冬(上海交通大学电子工程系,上海200240)摘 要:介绍了SoPC平台下嵌入式Linux系统的ALSA音频子系统,针对Xilinx开发板的AC97控制器IP核,给出在嵌入式SoPC平台下音频驱动的设计方法及实现。

该设计方法充分利用Linux 内核对音频子系统提供的支持,克服嵌入式AC97控制器IP核IO缓冲区小的缺点,实现对该IP 核的驱动程序。

该驱动程序满足实时性要求,且在各SoPC平台具有可移植性。

关键词:SoPC;Linux;ALSA;驱动Design and implementation of ALSA sound driver on SoPC systemLIN Qin,LI U Pe-i lin,YING Ren-dong(Department of Electronic Engineering,Shanghai Jiaotong University,Shanghai200240,China) Abstract:A design method of ALSA sound driver based on AC97controller IP core in Xilinx SoPC Linux system is described,with introductions to architecture and sound driver ALSA which is a subsystem of Linux.B y taking full advantage of Linux sound subsystem,this design method largely decreases program complexity,and overcomes the shortcoming of e mbedded AC97controller whose I P core lacks IO me mory.The driver designed by this method meets the rea-l time specification and can be transplanted to other SoPC system.Key w ords:SoPC;Linux;ALSA;driver0 引言可编程片上系统SoPC(Syste m on a Program ming Chip)是一种新兴的嵌入式微处理器系统,其综合了通用处理器的灵活性和ASIC的高速性,是SoC (System on a Chip)片上系统和FPGA的结合。

嵌入式语音信号处理实验系统的设计与实现

嵌入式语音信号处理实验系统的设计与实现

嵌入式语音信号处理实验系统的设计与实现梁瑞宇;王青云;赵力【摘要】To embody the idea of mutual promotion between teaching and scientific research,and to meet the needs of teaching and research for speech signal processing,an integrated experimental platform for embedded speech signal processing is design by using Cortex-A8 microprocessor and WM8960 audio coding and decoding chip as core hardware.Moreover,an integrated experimental teaching and development software is designed on this platform by using QT development software.Then,the system hardware structure and transplant of driver are described.By taking an example of the speech enhancement algorithm based on spectral subtraction,the speech development process based on QT is introduced.Based on this experimental platform,students can master not only the basic knowledge of speech signal processing,but also the development process of embedded software for the speech application.The system had friendly interface and strong functions,can be used for the teaching of speech and signal processing in colleges and universities,and for the research and development of related topics on speech signal processing.%为体现教学与科研相互促进的教学理念,面向语音信号处理教学和科研需要,以Cortex-A8微处理器和专用音频编解码芯片WM8960为硬件核心,构建一款嵌入式语音信号处理综合实验平台.基于该实验平台,利用QT 开发软件,设计一款语音信号处理综合实验教学与开发软件.文中完整地讲述了系统的硬件构成,驱动程序的移植,并结合基于谱减法的语音增强算法,介绍了基于QT的语音开发流程.基于该实验平台,学生不仅可以掌握语音信号处理的基本知识,还可以熟悉面向语音应用的嵌入式软件开发流程.系统界面友好,功能强大,可有效用于高校语音及信号处理教学工作,也可用于相关科研人员进行语音信号处理相关课题的研发工作.【期刊名称】《实验室研究与探索》【年(卷),期】2017(036)005【总页数】5页(P126-130)【关键词】语音信号处理;语音增强;嵌入式;实验教学【作者】梁瑞宇;王青云;赵力【作者单位】南京工程学院通信工程学院,南京211167;东南大学信息科学与工程学院,南京210096;南京工程学院通信工程学院,南京211167;东南大学信息科学与工程学院,南京210096【正文语种】中文【中图分类】TN912.3;G642.0随着人机交互和智能机器人技术的发展,语音信号处理已成为信息科学研究领域中发展最为迅速的一个分支。

《嵌入式系统原理》课程设计题目

《嵌入式系统原理》课程设计题目

《嵌入式系统原理》课程设计可选题目及要求一、汽车信息系统汽车信息系统是典型的嵌入式应用。

以前的汽车主要利用机械式仪表盘来显示汽车的速度、测量、里程等信息。

现代汽车则利用嵌入式系统将各个传感器检测的信息在汽车信息系统(汽车电脑)是显示出来,并提供更多的汽车信息服务等信息。

该题目可以分为如下几个子题:、VCD/DVD如汽车上网、GPS、MP31.汽车信息集成子系统上提供一个统一的菜单,通过点击相应菜单可以调用对应的任务:在LCD各个功能子系统。

要求:1)熟悉开辟板环境;驱动原理;2)熟悉LCD3)编写相应菜单,并可利用键盘或者鼠标调用相应的程序;状态-—速度、油量、里程、---导航、收发短信汽车信息系统-----导航—GPS、VCD/DVD、上网浏览娱乐—MP3---菜单要求:采用二级菜单的方式。

2.速度显示及报警子系统(摹拟)任务:在4个数码管上显示速度值,(通过键盘上的上、下光标键摹拟加速、减速、刹车等过程),当速度超过某一设定数值时,发出报警信号(快速闪烁速度数值)。

要求:1)熟悉开辟板环境;中的LED 2)熟悉数码管驱动原理;(驱动及例子程序见资源文件夹下EXT文件夹)3)提供一段程序进行速度报警值的设定,并能进行加速、减速时速度的正确显示;3.油量显示及报警系统(摹拟)任务:在4个数码管上进行油箱存油量的显示(设耗油量与里程成正比),通过通过键盘上的上、下光标键来摹拟汽车的行驶过程,根据设定的报警值提前报警(闪烁显示)要求:1)熟悉开辟板环境;中的LED) 2)熟悉数码管驱动原理;(驱动及例子程序见资源文件夹下EXT3)提供一段程序进行油量报警值的设定,并能在行驶过程中进行油量的正确显示与报警;4.车灯控制子系统:任务:显示汽车在各种状况下车灯的开启与关闭控制。

要求:1)熟悉开辟板环境;及2)熟悉LED灯(红、绿各两个)驱动原理;(驱动及例子程序见LED.C )LED_TEST.c3)利用键盘摹拟汽车行驶的五种状况:汽车左转、汽车右转、远大灯、近小灯,每一个灯可以设定快速闪烁或者常开、常闭。

关于怎么使用ALSAAPI教程

关于怎么使用ALSAAPI教程

关于怎么使⽤ALSAAPI教程(1)理解⾳频接⼝(2)典型⾳频应⽤是什么样⼦的(3)⼀个最⼩回放程序(4)⼀个最⼩采集程序(5)⼀个最⼩基于中断驱动的程序(6)写程序过程打开设备设置参数接受和发送数据理解⾳频接⼝我们⾸先回顾⾳频接⼝的基本设计。

作为⼀个应⽤程序程序员,实际你没有必要为操作层担忧,它由ALSA提供的⼀个插件设备驱动全部考录,但是如果你想要些⼀个有效率并且灵活的软件,你必须在概念上理解操作层都做了些什么。

(⾳频接⼝、⾳频设备、声卡。

在此处是⼀个概念。

)⾳频接⼝是⼀个设备(译者注:声卡),允许计算机从外界接受和向外界发送⾳频数据。

在计算机内部,⾳频数据像其他任何数据⼀样代表了⽐特流。

然⽽,声⾳接⼝可以发送数字声⾳信号和接受模拟声⾳信号。

这两种情况下,计算机使⽤的代表声⾳的⽐特流需要被转化,在被送到外界之前,同样,被⾳频接⼝接受的外部信号也需要被转化,使之变为对计算机有⽤的数据(可⽤的数据)。

这两个转化就是⾳频接⼝存在的⽬的在⾳频接⼝中,有个区域被称为“硬件缓冲区”,当⼀个外界⾳频信号到达后,这个设备转换这个模拟信号为计算机可以使⽤的⽐特流,并且存储这些数据在硬件缓冲区,被⽤来传递给计算机。

当在硬件缓冲区采集到了⾜够多的数据,⾳频接⼝对计算机产⽣⼀个中断,以告诉计算机数据准备好了,可以从硬件缓冲区,取出了。

相反,对于数据从计算机内部送到外界时,有⼀个和以上有个相似的过程。

设备产⽣对计算机产⽣中断,告诉计算机,硬件缓冲区有空间,计算机可以存数据在硬件缓冲区。

设备然后转化这些⽐特流为外界需要的⽆论什么格式,并且发送它。

理解设备使⽤这个缓冲区作为⼀个循环缓冲区是很重要的。

当到达了缓冲区的末尾,指针回到头,继续开始。

为了这个过程可以正确的运⾏,⼀些变量需要被配置,他们包括:(1)当在计算机使⽤的⽐特流和外界使⽤的信号之间的转换时,设备应该使⽤什么格式?(2)采样样本以多少的⽐特率在设备和计算机直接传递?(3)设备对计算机产⽣中断时,硬件缓冲区应该有多少数据(接受)或者空间(发送)?(4)硬件缓冲区应该多⼤?头两个问题是⾳频数据质量调节的基础。

mp3维修大全

mp3维修大全

明基电通BenQ(IT) Co., Ltd 维修手册mp3播放器维修手册目录一.m p3工作原理--------------------------------------------------4二.维修操作说明------------------------------------------------------8三.故障判断过程------------------------------------------------------8四.附件---------------------------------------------------------------6【使用说明】本手册适用于JoybeeDA102、DP200、DA120、DA120+、DA121、DA125、DA150、DA180、DA200。

本文说明了mp3的工作原理及一般故障排除方法适用于明基仓储客户服务部Joybee维修人员一.Mp3工作原理1.mp3原理图(基于DSP)MP3播放器是利用数字信号处理器DSP(Digital Sign Processer)来完成处理传输和解码MP3文件的任务的。

DSP掌管随身听的数据传输,设备接口控制,文件解码回放等活动。

DSP能够在非常短的时间里完成多种处理任务,而且此过程所消耗的能量极少(这也是它适合于便携式播放器一个显著特点)。

首先将MP3歌曲文件从内存中取出并读取存储器上的信号→到解码芯片对信号进行解码→通过数模转换器将解出来的数字信号转换成模拟信号→再把转换后的模拟音频放大→低通滤波后到耳机输出口,输出后就是我们所听到的音乐了。

2.Joybee所用主控芯片(含解码)介绍:a.Sigmatel3410(Joybee120、125、180)*ST3410的技术规格:▪硬件MP3/WMA解码支持,并可通过固件升级来支持其它音乐格式;▪支持WMA版权管理和其他的音乐安全格式;▪内含一个预置于芯片内的唯一的只读ID号以用于各种数字媒体版权管理;▪硬件支持NAND Flash, SmartMedia,MMC, Secure Digital, CompactFlash, SDRAM,CD 和IDE 等数字设备;▪芯片内置固化高效DC-DC转换器;▪可使用多种供电方案进行产品设计有1xAA, 1xAAA, 2xAA, 2xAAA, LiIon (2xAA, 2xAAA和LiIon 方案需要使用144针封装的芯片);▪USB下载传输支持;▪LED/LCD显示驱动;▪GPIO和按键I/O控制;▪录音格式为ADPCM;▪录音和回放音量控制;▪全数字硬件混合器;▪<0.05% THD耳机驱动, 包括anti-pop和短路保护;▪高性能的18位Sigma-Delta技术;▪Line-in到Line-out信噪比>90dB;▪Mac和Windows平台均有驱动,也支持USB存储;▪到主机或处理器界面(选件);▪可升级固件DSP芯片最大处理速度65MHz;▪动态能量管理方案;▪高音和低音音量控制;硬件多波段调音控制;▪FM收音机输入和调谐控制;▪3个数字信号输入: Line_In (立体声)、FM_In (只有144针包装支持)和麦克风(单声道);▪提供100针TQFP, 144针TQFP, and 144针FPBGA三种不同的芯片封装。

基于WINCE和S3C2440A的嵌入式音频系统

基于WINCE和S3C2440A的嵌入式音频系统

2 I I S总线
I 总线是 P ip 公司提出的面向多媒体的音 I s hi ls 频总线 , 专用于音频设备间的数据传输.I I S总线只 处理声音数据 , 其他数据( 如控制信号) 必须单独传 输. s I 总线 I 刮使用 3 串行信号线 : 条 分时复用的数 据传输线 寺: 段选择线WS和时钟信号线 S K 在 C. 数据传输过程中, 发送端和接收端需具有相 同的时 钟信号.
将被设 置 为 1否则 被 置 为 0 当 接 收 FF , . IO未 满 , 接
1 A A 操作模 式 , )D T 0 包括直接地址模 式和扩 展地址模式.i 76 位非 ‘1 时为直接地址模式 , b [ :] t 1’ 可控制音量、 静音等 ; i 7 6 为 ‘1 时为扩展地 b [ :] 1 ’ t
基 于 WI C N E和 ¥ 40 3 24 A的嵌 入 式 音频 系统 C
吴杨希 , 立 , , 玉林 欧青 朱剑 王
( 南科技 大学 信息与 电气工程学院 , 湖 湖南 湘潭 4 10 ) 12 1 摘 要: 针对音频系统中普遍存 在音质差 、 噪声大等 问题 , 介绍 了基于 ¥ C 4 0 3 2 4 A和 U A 3 1 S构成嵌入 式音 D 14 T
Th m b d e u i y t m s d o I CE n 3 4 0 ee e d d a d o s se ba e n W N a d S 4 A C2 WU Y nx,O igi H i , N ui agi U Qnl,Z U J n WA GY l a n
3 的实时操 作 系统 . 中介 绍 了基 于 I 2位 文 I S总线 , 结
合 ¥C 4 0 3 2 4A处理器和 u A3 1 S D l T 立体声音频 C — 4 O D C设计了嵌入式音频系统 , E 并结合硬件电路 的设 计方案, 阐述了音频驱动处理程序 的设计思路.

一步一图实现HDMI

一步一图实现HDMI

一步一图:HMDI连接电视机,实现高清播放此帖对"惠普"的评论白花花的几千两纹银,买台笔记本,如果只用来种菜、挖雷,总觉得太奢侈。

4411S系列笔记本,附带的接口还算齐全,比如HDMI接口,可以外接电视机,实现高清播放。

我一直认为,笔记本的价值是折腾出来的。

对电脑而言,折腾,是通向熟练的不二法门。

折腾一下HMDI接口,至少不用再单独购买高清播放机了,能省个仨瓜俩枣,比啥都强。

闲话少说,这就开始新一轮折腾。

一、热身准备硬件:1、电视机一台,最好是厂家承诺可以实现全高清点对点的平板电视。

——关于这一点,如果你买电视机的时候忘记问了,那就细细地在网上查查。

2、HDMI连接线一条。

最好在买电视机的时候,顺便问商家要一根质量好的。

3、笔记本一台,如HP 4411S,显卡是4330,可以支持高清播放。

软件:1、我用的操作平台是windows7旗舰版。

2、声音设备驱动程序。

惠普官网,点击下载ftp:///pub/softpaq/sp45001-45500/sp45115.exe3、显卡的驱动程序。

惠普官网,点击下载ftp:///pub/softpaq/sp47501-48000/sp47571.exe4、Real_Alternative解码器,最新版本是2.02。

点击下载。

/download/real_alternative.htm5、MPC-HomeCinema 播放器,最新版本是2345,开源的,不必担心正版盗版。

打开网页http://www.xvidvideo.ru/component/docman/doc_download/4140-media-playe r-classic-homecinema-x86-svn-2345-----with-installer.html,按照下图点击,即可下载。

此软件的安装和设置稍后介绍。

附件:除了你的折腾精神,还需要你耐心加细心。

此外,还需要大致了解一点相关知识。

Linux移植Mp3库以及注意点

Linux移植Mp3库以及注意点

Linux移植Mp3库以及注意点核⼼板要播放mp3不是说简单就简单的事情⾸先应该确定板⼦上的⾳频通道是好的。

⾄少能够播放wav吧准备⼯作:1. 看下⽹上资料,想想MP3是有版权的,肯定是需要是解码库的2. 解码库什么合适?3. 这些解码库,肯定是可以下载,由于考虑到核⼼板,肯定也需要源码能够进⾏交叉编译先是漫⽆⽬的搜索,想到Qt是不是可以播放,Python是不是可以。

现实是残酷的,了解到的Qt,Python都是实现接⼝部分,并不解决解码库的问题。

反正⼀句话,就是要先有解码库才可以。

搜索⼀会,把问题集中到⼀起了。

Linux下Mp3解码库 libmad,madplay是⿍⿍⼤名的播放器。

既然,确定⽬标了,那么就解决解码库的事情。

Baidu,madplay,⼀堆东西,也有很多好的⽂章,看样⼦很多⼈在研究,相信肯定有戏。

先找个写得详细点⼊⼿吧。

解码库,基本上⽤的以下三种⽂件,如果系统没有装过,都需要先下载安装的zlib-1.2.3.tar.tar⽤于⽂件的压缩和解压libid3tag-0.15.1b.tar.gz mp3的解码库libmad-0.15.1b.tar.gz madplay的库⽂件madplay-0.15.2b.tar.gz 播放程序的压缩包,mp3播放器的源码准备⼯作的插曲(插曲:)既然,⾃⼰的编译的。

⾃然想到先在Ubuntu试验下,结果,发现本⼈的虚拟机下Ubuntu的竟然没有声⾳,播放wav,也没声⾳(这个到⼀直没有发现这个问题。

突然发现,觉得很奇怪)。

进⼊系统设置的声⾳设置,发现是静⾳的,但怎么修改不⾏,都是静⾳的,是很奇怪。

(windows下从来没碰到过问题)后来,看⽹上资料,说可以先看有没有设备。

“aplay -l”竟然,没找到硬件设备列表。

说明驱动没有装好。

原来Ubuntu要装alsa的声⾳驱动。

先卸载原先的alsasudo apt-get remove linux-sound-base alsa-base alsa-utilssudo apt-get install xmlto libasound2-devsudo apt-get install linux-sound-base alsa-base alsa-utils下载⼀个lib alsa-lib-1.0.25.tar.bz2 //这个不是最新的,但不是最新就最好,要⾃⼰匹配的,我就装过好⼏个版本,能装上去,但⽆效。

Android Audio架构全分析

Android Audio架构全分析
ASoc 主要由 3 部分组成: (1)、Codec驱动:这部分只进行 Codec 相关的操作。 (2)、平台驱动:这部分只进行 CPU 端的操作,它主要处理两个问题: DMA 引擎和 Soc 集成的 PCM、I2S或AC97数字接口控制。 (3)、板驱动:这部分将平台驱动和 Codec 驱动绑定在一起,描述了 板一级的硬件特性。 对于目前的嵌入式系统,一般采用 ASoc 框架,这样能使驱动具有更 好的移植性。
3.3、ALSA驱动分析
ALSA框架初始化过程:
第P1a2g页e ▪/共1222页
3.3、ASoc驱动简介
ASoc(ALSA System On Chip)是 ALSA 在 Soc 方面的发展和演变, 它本质上仍然属于 ALSA ,但是在 ALSA 架构基础上对 CPU 相关的代码 和 Codec 相关的代码进行了分离。
第P1a6g页e ▪/共1622页
3.3、s5pc1xx-ac97.c分 析
s5pc1xx-ac97.c 对外提供了两个接口,分别为:s3c6400_ac97_dai 和 soc_ac97_ops, S3c6400_ac97_dai 主要对上层提供操作接口;soc_ac97_ops 提供了对 S5PC100 中的 AC97 控制器操作的方法,这些方法会被 wm9713.c 中相应的函数调用,从而实现对 wm9713 进行操 作。
第P1a3g页e ▪/共1322页
3.3、ASoc驱动分析
ASoc驱动源码:
soc-core.c:ASoc 驱动核心 s5pc1xx-ac97.c:平台驱动 wm9713.c:Codec驱动 smdkc100_wm9713.c:板驱动
wm9713同时提供了PCM、I2S 和 AC97三种控制接口,从 smdkc100电路图可以知道S5PC100与wm9713通过 AC97 控制 接口相连,因此此处选用的平台驱动是:s5pc1xx-ac97.c。

四种嵌入式web服务器介绍

四种嵌入式web服务器介绍

mm net security
内存管理代码 网络支持代码,每个子目录对应网络的一个方面 安全、密钥相关的代码
sound usr
document ation scripts
音频设备的驱动程序 用来制作一个压缩的cpio归档文件
内核文档 用于配置、编译内核的脚本文件
内核的源代码可以从获取: 1. 首先解压缩内核源代码,修改顶层的Makefile文件 ARCH?= arm CROSS_COMPILE ?= arm-linux这里需要指定目标平台的体系结构和交叉编译工具链的路径。 2. 修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件 s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000) 指定开发板的晶振频率为12MHz。
第12章 嵌入式BOA服务器的构建
12.1
概述 嵌入式Linux系统移植 嵌入式Linux的BOA服务器移植
12.2
12.3
12.1 概述
下面简介下嵌入式web服务器。由于嵌入式 设备资源一般都比较有限,并且也不需要能同时 处理很多用户的请求,因此不会使用Linux下最 常用的如Apache等服务器,而需要使用一些专 门为嵌入式设备设计的Web服务器,这些Web 服务器在存贮空间和运行时所占有的内存空间上 都会非常适合于嵌入式应用场合。常见的嵌入式 Web服务器主要有:lighttpd、thttpd、shttpd 和BOA等等。
4.BOA BOA是一个非常小巧的Web服务器,可执行代码只有约60KB。它是 一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进 程来处理并发连接请求。但BOA支持CGI,能够为CGI程序fork出一个进 程来执行。BOA的设计目标是速度和安全,在其站点公布的性能测试中, BOA的性能要好于Apache服务器。

嵌入式Linux应用开发菜鸟进阶

嵌入式Linux应用开发菜鸟进阶

小结
9.1.1中断处理过程 9.1.2 Linux中断处理程序的上半部与下半部机制
10.2混杂设备驱动
10.1自创建设备文 件
10.3 Linux设备模 型
10.4设备驱动 分层思想
小结
10.3.1 kobject和kset数据结构 10.3.2 sysfs文件系统 10.3.3总线、设备和驱动程序
19.2.1 CID寄存器 19.2.2 SD总线协议 19.2.3 SD卡指令和命令 19.2.4块读写操作
19.3.1 SD卡驱动程序的重要数据结构 19.3.2 SD设备驱动分析 19.3.3 SD卡驱动在mini2440开发板的开发与移植
19.4.1系统设计思路与步骤 19.4.2系统测试结果
小结
13.3.1按键与LED集成在一个驱动中 13.3.2按键与LED驱动的实现
14.1
1
DS18B20温度
传感器简介
14.2
2
DS18B20温度
传感器程序设
计实现
3
14.3应用程序 设计
4
14.4驱动运行 效果
5
小结
14.1.1温度传感器的工作特点 14.1.2 DS18B20的外部结构 14.1.3 DS18B20的内部结构 14.1.4 DS18B20的应用电路结构 14.1.5 DS18B20的工作原理
17.2块设备驱动基 本框架

17.1字符设备驱动 与块设备驱动
17.3块设备在 Linux系统中各层
的调用关系
17.5块设备驱动程 序分析
17.4块设备驱动的 重要数据结构
小结
17.4.1 block_device_operations结构体 17.4.2 gendisk结构体 17.4.3 request与request_queue结构体 17.4.4块I/O 17.4.5块设备中各结构体之间的关系
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10.2 Linux音频设备驱动——OSS驱动框架
OSS(Open Sound System)是unix平台上一个统一的 音频接口。为了在不同的平台之间移植代码,OSS定义了一 套API,在一个平台上的代码移植到另一个平台上时,不需 要重新修改代码,重新编译就可以使用原程序。
10.2.1 OSS驱动架构硬件
IIS接口的特点:与PCM相比,IIS接口更适用于立体声 系统。对于多通道系统,在同样的BCLK和LRCLK条件下, 也可以并行执行几个数据队列。
10.1.3 AC97(Audio Codec 1997)接口
AC97(Audio Codec 1997)是以Intel为首的五个PC厂 商(Intel、Creative Labs、NS、Analog Device与Yamaha) 共同提出的规格标准。
10.2.4 OSS释放函数oss_cleanup()
从内核中注销该模块的时候调用该函数对OSS进行清理 工作,也就是当使用rmmod soundcore.ko卸载驱动模块时调 用该函数。
10.2.5 打开设备文件函数sound_open()
当驱动模块注册到系统中后,调用系统的open()函数就 会调用函数sound_open()实现打开设备文件。
10.6 音频播放程序madplay的移植
前面已经详细介绍了音频驱动以及其移植过程,这一节 将介绍运行在驱动和内核之上的播放器madplay的移植。
10.6.1 准备移植需要的源文件
移植madplay需要播放器代码、mp3库文件和编码、解 码库等。下面为移植需要准备相关源代码,读者可以到网上 下载最新代码进行移植。
10.5.4 移植新内核并进行测试
将新生成的内核zImage使用命令load flash kernel u下载 到开发板上。因为之前已经移植了整个系统,这里只需要移植 新的内核映像文件,如果读者是第一次移植则需要参考前面的 章节将新生成的内核连同Bootloader、文件系统一并下载到开 发板上。
10.3.4 AC97 API音频接口
ALSA AC97已经各种接口,驱动开发人员通过编写少 量的控制函数就可以开发自己的驱动。
1.函数snd_ac97_bus()创建AC97 bus总线组件 2.创建Codec97 组件函数snd_ac97_mixer() 3.释放bus函数snd_ac97_bus_dev_free()
madplay-0.15.2b.tar.gz :播放程序压缩包 libmad-0.15.1b.tar.gz :madplay库文件 libid3tag-0.15.1b.tar.gz :针对mp3的解码库 zlib-1.2.3.tar.bz2 :用于文件压缩和解压
10.6.2 交叉编译
编译madplay时需要库文件的支持,因此先编译它依赖 的库文件,然后再编译播放器。编译的过程包括configure生 成Makefile,设置安装路径,设置交叉编译工具,编译和安装 等,与多数应用程序交叉编译过程类似。
10.5.3 内核中添加UDA1341驱动支持
上面对内核代码进行了修改,回到内核代码一级目录下 ,使用命令make menuconfig对内核以窗口的方式进行配置 内核。进入内核配置界面后选择Device Drivers| Sound card support|Advanced Linux Sound Architecture命令进入ALSA 驱动配置界面选择ALSA for SoC audio support,同时选上 对Mixer API和PCM API的支持。
第10章 音频设备驱动程序移植
音频驱动程序广泛的应用在嵌入式产品中,目前PDA、 手机都有音频和视频播放功能。随着终端产品逐渐融入工作 和生活,带有音频功能的嵌入式产品将更具吸引用户。本章 将介绍音频设备接口分类、Linux音频设备驱动、音频设备应 用程序编写、音频设备驱动移植、最后介绍音频播放程序 madplay的移植。
10.1 音频设备接口
Linux支持的音频设备接口包括PCM、IIS和AC97。这 三种接口分别应用在不同的场合,IIS接口多应用在MP3随 身听、CD等产品中;PCM接口多应用在移动电话中;AC97 接口多用在PDA中。
10.1.1 PCM(脉冲编码调制)接口
PCM接口针对不同的数字音频子系统,用于数字转换 的接口,它是最简单的音频接口,该接口由时钟脉冲( BCLK)、帧同步信号(FS)及接收数据(DR)和发送数 据(DX)组成。在FS信号的上升沿,数据传输从MSB( Most Significant Bit)字开始,FS频率等于采样频率。在FS 信号之后开始传输数据字,按顺序进行传输单个的数据位, 每时钟周期传输1个数据字。发送MSB时,首先将信号的等 级降到最低,以避免在不同终端的接口使用不同的数据方案 时造成MSB的丢失。
(1)在mach-mini2440.c中包括头文件 (2)在mach-mini2440.c中添加UDA1341设备结构 (3)在下面的结构体中,添加注册UDA1341设备平台 到内核
10.5.2 修改录音通道
Mini2440使用录音通道是VIN2,应该修改sound/soc/codecs 目录下的uda134x.c文件,在函数uda134x_startup中修改录音通 道为VIN2。
10.2.6 录音函数sound_read()
在录音时,调用函数sound_read()实现读设备文件。
10.2.7 播放函数sound_write()
在播放音频时,调用函数sound_write()向设备文件执行 写操作。
10.2.8 控制函数sound_ioctl()
函数sound_ioctl()控制功能包括:音量控制、低音控制、高 音控制、FM合成器控制、录音音量、播放音量、输入增益、输 出增益等控制。
数字音频(有时也称CODEC、PCM、DSP、ADC/DAC 设备)接口,用来实现录音(将模拟信号转变为数字信号)和 播放声音(将数字信号转变为模拟信号)的功能。它的主要参 数有:采样频率(电话为8K,DVD为96K)、channel数目( 单声道,立体声)、采样分辨率(8-bit,16-bit),对应的设 备文件为/dev/dsp。OSS驱动支持的硬件接口有以下几种: • mixer(混频器)接口 • synthesizer(合成器)接口 • MIDI(Musical Intrument Data Interface)接口
10.4 音频设备应用程序编写
上一节中介绍OSS驱动和ALSA驱动,这一节主要介绍 如何编写这两种驱动程序的应用程序。对于OSS驱动,给出 了DSP接口编程和MIXER接口编程。
10.4.1 DSP接口编程
OSS驱动框架提供了音频编程的三种设备,分别是 /dev/dsp,/dev/dspW和/dev/audio。用户可以直接使用令来 播放和录音,命令cat /dev/dsp >test可用来录音,录音的结 果放在test文件中;命令cat test>/dev/dsp播放声音文件test。 OSS应用程序主要包括:打开设备、录音、播放、设置参数 等部分,下面分别介绍:
ALSA提供给用户的接口主要有: • 信息接口 • 控制接口 • PCM接口 • Raw MIDI接口 • 定时器接口 • 音序器接口 • 混音器接口
10.3.1 card和组件
每个声卡必须创建一个card实例,下面通过驱动代码介 绍ALSA声卡驱动是如何管理card和组件。
1.创建card函数snd_card_new() 2.创建组件函数snd_ device _new() 3.释放组件函数snd_device_free () 4.释放card函数snd_card_free() 5.断开所有的ALSA API函数snd_card_disconnect ()
AC97特点:与控制接口分离的IIS方案相比,AC97明 显减少了整体管脚数。它是一种数据格式还具有控制功能。
10.1.4 Linux音频设备驱动框架
针对音频设备,Linux内核附有2类音频设备驱动框架: OSS(Open Sound System)和 ALSA(Advanced Linux Sound Architecture)。前者包含dev/dsp和dev/mixer字符设备 接口,在用户空间的编程中,使用文件操作;后者以card和组 件(pcm、mixer等)为主线,在用户空间的编程中不使用文 件接口而使用alsalib。
10.3.3 控制接口
控制接口(control)的主要作用是混音器(mixer), 所有mixer元素都是基于control API实现的。下面简单介绍 control的几个重要函数。
1.snd_ctl_open() 2.创建控制实例snd_ctl_new() 3.移植控制函数snd_ctl_remove()
10.3 Linux音频设备basound的 API库。libasound提供了方便的高级编程接口,应用程序中 使用libasound而不是内核中的 ALSA接口。同时,libasound 提供一个设备逻辑命名功能,因此开发者不必知道类似设备 文件这样的底层接口。
1.包含相关头文件 2.打开设备文件 3.录音 4.播放 5.设置参数
10.4.2 MIXER接口编程
声卡上的混音器由多个混音通道组成,它们可以通过驱 动程序提供的设备文件/dev/mixer进行编程。对混音器的操 作是通过系统调用ioctl来完成,所有的混音器控制命令都以 SOUND_MIXER或者MIXER开头。
10.2.2 OSS驱动架构代码
当vwsnd驱动模块被加载时函数init_vwsnd()被调用,音 频驱动被初始化,驱动初始化过程会查找硬件配置和匹配相 应的驱动程序。
10.2.3 OSS初始化函数oss_init()
在向内核注册该模块的时候调用该函数对OSS进行初始 化工作,也就是当使用insmod soundcore.ko加载驱动模块时 调用该函数。
相关文档
最新文档