基于ARM的音频控制.docx

上传人:b****2 文档编号:18095788 上传时间:2023-08-13 格式:DOCX 页数:16 大小:362.59KB
下载 相关 举报
基于ARM的音频控制.docx_第1页
第1页 / 共16页
基于ARM的音频控制.docx_第2页
第2页 / 共16页
基于ARM的音频控制.docx_第3页
第3页 / 共16页
基于ARM的音频控制.docx_第4页
第4页 / 共16页
基于ARM的音频控制.docx_第5页
第5页 / 共16页
基于ARM的音频控制.docx_第6页
第6页 / 共16页
基于ARM的音频控制.docx_第7页
第7页 / 共16页
基于ARM的音频控制.docx_第8页
第8页 / 共16页
基于ARM的音频控制.docx_第9页
第9页 / 共16页
基于ARM的音频控制.docx_第10页
第10页 / 共16页
基于ARM的音频控制.docx_第11页
第11页 / 共16页
基于ARM的音频控制.docx_第12页
第12页 / 共16页
基于ARM的音频控制.docx_第13页
第13页 / 共16页
基于ARM的音频控制.docx_第14页
第14页 / 共16页
基于ARM的音频控制.docx_第15页
第15页 / 共16页
基于ARM的音频控制.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于ARM的音频控制.docx

《基于ARM的音频控制.docx》由会员分享,可在线阅读,更多相关《基于ARM的音频控制.docx(16页珍藏版)》请在冰点文库上搜索。

基于ARM的音频控制.docx

基于ARM的音频控制

基于ARM的音频控制

自动化系的工程训练5是学生在4年学习中的最后一次软硬件开发的工程训练,利用2周时间完成。

本次工程训练以深圳芯控科技有限公司生产的一款基于ARM9的嵌入式开发平台EM-SBC2410为硬件开发平台,通过搭建嵌入式Linux的软件开发平台,完成基于ARM的音频控制的软硬件设计。

通过此设计,使学生掌握以ARM为控制核心的嵌入式开发板的运用、领略到基于ARM9-Linux软硬件平台开发的主要过程、方法和步骤,最终完成一个基于ARM9的小型嵌入式作品。

学生要完成这一工程训练项目,必须学完“单片机原理及其应用”和“嵌入式系统原理及其应用”二门课程及其完成“基于单片机的直流电动机控制”或“基于单片机的数字钟设计”的实训项目,并综合应用这三门课程的软硬件知识,解决实践中的实际软硬件开发问题。

3.1目的要求:

3.1.1基本目的

本次工程训练通过“嵌入式系统原理及其应用”课程的学习,掌握嵌入式系统开发的基础知识;通过对EM-SBC2410的学习,了解嵌入式开发板的使用及其嵌入式系统的主要开发要点;综合应用嵌入式Linux的C语言编程技巧,结合音频控制原理,实现基于ARM的音频控制。

3.1.2基本要求

为了使学生深入理解嵌入式系统的整个开发过程,本设计采用5个过程实现基于ARM的音频控制,此5个过程分别为:

EM-SBC2410开发板的硬件资源及其附带的软件资源的使用阶段、嵌入式Linux的开发环境的搭建阶段、基于ARM的音频控制的需求分析及其制定设计思路阶段、硬件设计及其制作阶段、软件设计及其调试阶段、作品联调运行及其维护阶段。

要求学生按照5个阶段开发过程展开,以求给学生一个整个嵌入式开发的全过程。

本工程训练除了要求学生掌握运用ARM控制音频的全过程,还要求学生能够掌握以ARM为控制核心的嵌入式开发板的运用及其嵌入式Linux的C语言的编程技巧。

3.2基本知识介绍

运用EM-SBC2410的硬件开发平台进行基于ARM的音频控制的软硬件设计,用到了“嵌入式系统原理及其应用”这门课程、嵌入式Linux开发的相关知识、EM-SBC2410用户手册及其音频控制原理等知识。

嵌入式系统原理及其应用中主要掌握ARM的体系结构及其编程,以及嵌入式系统开发的流程。

嵌入式Linux开发的相关知识主要掌握嵌入式Linux开发环境的搭建及其嵌入式Linux的交叉开发流程。

EM-SBC2410用户手册主要掌握如何利用基于ARM9的开发板的硬件资源进行设计的过程。

下面简单介绍除“嵌入式系统原理及其应用”这门课程外,此设计中要使用的一些重要知识。

3.2.1EM-SBC2410开发板简介

图1EM-SBC2410开发板

深圳芯控科技有限公司生产的EM-SBC2410开发板在尽可能小的板面上(120mm*90mm),如图1所示,它集成了64MSDRAM、64MNandFlash、2MBootFlash、RJ-45网卡(100M)、USBHost、USBslave、标准串口、SD卡插槽、用户按键和一些用户灯等设备接口,并且使用2.0mm插针槽引出CPU的大部分信号引脚,不仅可以作为嵌入式电脑系统的一个主板模块,而且适合于项目或产品的原型设计。

此设计在基于EM-SBC2410为硬件开发平台,实现基于ARM的音频控制,最终实现mp3格式音频文件的播放和控制。

3.2.2嵌入式Linux开发的相关知识

1、嵌入式Linux简介

linux是一个日益成熟的操作系统,现在已经拥有大量的用户,它是由芬兰的大学生linustorvalds开发的,任何人都可以复制,修改,套装发行,销售,但不许发行时加入限制,而且必须公布源代码,以保障任何人都可以无偿取得所有可执行文件及其源代码。

比较著名的linux发行版本有redhatLinux,SUSELinux,TurboLinux,UbuntuLinux等。

国内的有北京中科红旗软件技术有限公司发布的红旗linux,深圳蓝点软件有限公司发布的蓝点linux,北京冲浪公司制作的xtermlinux等。

嵌入式Linux是以Linux为基础的嵌入式操作系统,它是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统,具有开放源代码、内核小、效率高、性能稳定,裁剪性好和对网络中最常用的TCP/IP协议有最完备的支持等优点,被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。

2、嵌入式Linux的交叉开发模式

Linux交叉开发采用宿主机和目标机的模式进行。

宿主机是一台运行Linux(如:

RedHat)的PC机,目标机即EM-SBC2410开发板。

开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,这种代码并不能在宿主机上执行,而只能在目标机上执行。

然后把可执行文件下载到目标机上运行。

调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器所提供的支持作出选择。

宿主机和目标板的处理器一般都不相同,宿主机为Intel处理器,而目标板如EM-SBC2410为SAMSUNGS3C2410。

Linux交叉开发包括Linux内核的开发和Linux应用程序的开发应用程序的开发。

有两种方式:

①Linux内核的开发:

图2所示为本设计的开发环境以及开发流程。

在主机的RedHatLinux操作系统下安装Linux发行包以及交叉编译器arm-linux-gcc。

然后对Linux进行配置(makemenuconfig)并选择适合本开发板的相关配置,配置完成后进行编译生成Linux映像文件zImage。

然后将该文件下载到目标板并执行。

图2Linux的开发流程

②Linux应用程序的开发

Linux应用程序的开发在宿主机一端的操作与内核开发类似,都使用arm-linux-gcc编译器应用程序,不同的是,编译生成elf格式的文件而不是Linux映像文件。

编译生成的应用程序可以通过多种方式进行调试,下面介绍几种我们的系统中可以使用的方式:

●Linux应用程序以文件的方式直接将elf格式的文件加入到Linux文件系统中,然后更新整个文件系统,然后运行目标机Linux系统并运行应用程序。

●运行目标机Linux系统,然后在目标机Linux系统中通过一些工具软件将宿主机中的应用程序通过以太网下载到目标机Linux系统,如NFS、FTP、TFTP等。

●在宿主机端将Linux应用程序拷贝到U盘,然后运行目标机Linux系统,然后在目标机Linux系统中通过挂载U盘,然后在U盘运行应用程序。

3、嵌入式Linux的开发流程

嵌入式linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:

●建立开发环境。

操作系统一般使用REDHAT-LINUX,版本7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

●配置开发主机。

配置MINICOM,一般参数为波特率115200,数据位8位,停止位1,无奇偶校验,软硬件控制流设为无。

在WINDOWS下的超级终端的配置也是这样。

(本设计使用dnw.exe超级终端软件)MINICOM软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;

●配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

●建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。

有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9系列芯片,这样就需要编写烧写开发板上flash的烧写程序,网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围flash芯片的程序,也有LINUX下公开源代码的J-FLASH程序。

如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。

这是让系统可以正常运行的第一步。

如果你购买了厂家的仿真器当然比较容易烧写flash了,但是其中的核心技术是无法了解的。

这对于需要迅速开发应用的人来说可以极大地提高开发速度。

●下载别人已经移植好的LINUX操作系统,如UCLINUX、ARM-LINUX、PPC-LINUX等,如果有专门针对你所使用的CPU移植好的LINUX操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,对于UCLINUX这样的系统只能编译进内核进行调试。

●建立根文件系统,从下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。

默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:

/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。

根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映象文件。

●建立应用程序的flash磁盘分区,一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性flash(NOR型)512K-32M,有的系统使用非线性flash(NAND型)8-512M,有的两个同时使用,需要根据应用规划flash的分区方案。

●开发应用程序,可以下载到根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起。

3.2.3EM-SBC2410音频接口及其控制原理

SamsungS3C2410X带有I2S音频总线,因此EM-SBC2410使用一片I2S接口的PHILIPS解码芯片UDA1341,通过该芯片和相应的软件,用户可以播放mp3以及wav格式的音频文件,双声道的声音可以从背面的耳塞插孔直接接至耳塞或音箱,音频输入接口可以录音。

此设计通过音频放大电路的设计,结合相应的控制程序,实现mp3歌曲的播放。

IIS(IntegrateInterfaceofSound)即集成音频接口,在上个世纪80年代首先被Philips公司用于消费产品的音频设备,是一种面向多媒体计算机的串行数字音频总线协议。

S3C2410X内置了一个IIS总线控制器,该控制器实现到一个外部8/16位立体声音频编解码接口。

支持IIS总线数据格式和MSB-justified数据格式,能够和其他厂商提供的多媒体编解码芯片配合使用。

S3C2410X中有两条串行数据线,一条是输入信号数据线,一条是输出信号数据线,以同时发送和接收数据。

该IIS接口能够读取IIS总线上的数据,同时也为FIFO数据提供DMA的传输模式,这样能够同时传送和接收数据。

IIS接口有3种工作方式:

●正常传输模式,正常模式下使用IISCON寄存器对FIFO进行控制。

如果传输FIFO缓存为空,IISCON的第7位被设置为“0”,表示不能继续传输数据,需要CPU对缓存进行处理。

如果传输FIFO缓存非空,IISCON的第7位被设置成“1”,表示可以继续传输数据。

同样,数据接收时,如果FIFO满,标识位是“0”,此时,需要CPU对FIFO进行处理,如果FIFO没有满,那么标志位是“1”,这个时候可以继续接收数据。

●DMA模式,通过设置IISFCON寄存器可以使IIS接口工作于这种模式下。

在这种模式中,FIFO寄存器组的控制权掌握在DMA控制器上,当FIFO满了,由DMA控制器对FIFO中的数据进行处理。

DMA模式的选择由IISCON寄存器的第4位和第5位控制。

●传输/接收模式,这种模式下,IIS数据可以同时接收和发送音频数据。

IIS总线控制器结构如图8.2所示,各功能说明如下:

●两个5比特预除器IPSR,IPSA_A用于产生IIS总线接口的主时钟,IPSA_B用做外部CODEC时钟产生器。

●16字节FIFO,在发送数据时数据被写进TxFIFO,在接收数据时数据从RxFIFO中读取。

●主IISCLK产生器SCLKG,在主模式下,有主时钟产生串行位时钟。

●通道产生器和状态机CHNC,IISCLK和IISLRCK有通道状态机产生并控制。

●16比特移位寄存器(SFTR),在发送数据时,并行数据经由SFTR变成串行数据输出;

在数据接收时,串行数据由SFTR转变成并行数据。

IIS相关寄存器如表1所示。

表1IIS相关寄存器

UDA1341是PHILIPS公司的一款经济型音频CODEC,用于实现模拟音频信号的采集和数字音频信号的模拟输出,并通过IIS数字音频接口,实现音频信号的数字化处理。

图3IIS总线控制器结构图

如图3所示,S3C2410X的IIS总线时钟信号SCK与UDA1341TS的BCK连接,字段选择连接在WS引脚上。

UDA1341TS提供两个音频通道,分别用于输入和输出,对应的引脚连接为:

IIS总线的音频输出I2SSDO对应于UDA1341TS的音频输入;IIS总线的音频输入I2SSDI对应于UDA1341TS的音频输出。

UDA1341TS的L3接口相当于一个混音器控制接口,可以用来控制输入/输出音频信号的音量大小、低音等。

L3接口的引脚L3MODE、L3DATA、L3CLOCK分别连接到S3C2410的GPB2、GPB3、GPB4三个通用数据输出引脚上,实现混音控制。

3.2.4基于ARM的音频控制的放大部分的硬件电路设计

图4音频放大电路

此音频放大电路采用LM386集成芯片,LM386是低电压应用的音频功率放大集成电路,可使用电池为供电电源,输入电压范围可由4V-12V,具有静态电流小、输出端直流电压自动跟踪、电压增益可调、外围元件少等优点。

为了能产生立体声,本设计采用双通道音频放大电路,如图4是其中的一个通道,输入由音频线引出,输出接扬声器。

3.3完成工程训练的主要仪器、设备、工作环境

硬件:

EM-SBC2410嵌入式开发板、PC机Pentium500以上,硬盘40G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

(注意:

建议使用Intel芯片组的主板,否则Jtag连接会出现不稳定问题。

3.4工程训练的主要内容

结合给学生布置的基于ARM的音频控制系统设计与开发题目,提出要求,可以包括以下内容:

(1)对基于ARM的音频控制的需求进行分析掌握音频控制原理。

(2)了解EM-SBC2410开发板的资源,学会EM-SBC2410开发板的硬件资源及其附带的软件资源的使用。

(3)结合音频控制原理,制定设计思路。

(4)了解嵌入式开发的整个设计流程并搭建嵌入式Linux的开发环境

(5)结合作品的要求,对硬件电路进行设计并制作

(6)在搭建的嵌入式Linux的开发环境中进行软件设计并调试通过

(7)软硬件联调,使作品正常运行

(8)对基于ARM的音频控制提出新的其他要求。

3.5工程训练的实际步骤或操作方法

工程训练的实际步骤或操作方法要根据具体的设计课题来制定,本设计的具体操作步骤及方法如下:

在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC机作宿主开发机,对于嵌入式Linux,宿主机上的操作系统一般使用RedhatLinux。

本设计使用Redhat9.0,选择定制安装或全部安装,然后安装相应的GCC交叉编译器(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

1、REDHATLINUX9.0的安装

首先在一台PC上安装Vmware6.5虚拟机环境,然后在虚拟机上安装RedHatLINUX9.0,选择Custom定制安装,在选择软件Package时最好将所有包都安装,需要空间约2.7G,如果选择最后一项:

everything,即完全安装,将安装3张光盘的全部软件,需要磁盘空间大约5G。

因此建议提前为REDHATLINUX的安装预留大约5-15G的空间,具体视用户的硬盘空间大小来确定,在安装完Redhat后还要安装Linux的编译器和开发库以及ARM-Linux的所有源代码,这些包安装后的总共需要空间大约为800M。

2、VMwareTools的安装

在虚拟机中安装完RedHatLINUX9.0操作系统之后,接下来需要安装VMwareTools。

VMwareTools相当于VMware虚拟机的主板芯片组驱动和显卡驱动、鼠标驱动,在安装VMwareTools后,可以极大提高虚拟机的性能,并且可以让虚拟机分辨率以任意大小进行设置,还可以使用鼠标直接从虚拟机窗口中切换到主机中为。

其安装过程如下:

①从VM菜单下选择安装VMwareTools,此时就会有VMware-tools文件映像到CD-ROM中;②把“VMwareTools-6.5.0-118166.i386.rpm和VMwareTools-6.5.0-118166.tar.gz”文件复制/tmp目录中,然后选择一种安装方式。

在此我选VMwareTools-6.0.2-59824.tar.gz。

③进入/tmp目录,解压#tar-zxvfVMwareTools-6.5.0-118166.tar.gz④进入/tmpvmware-tools-distrib目录中,输入./vmware-install.pl进行安装,在安装过程中根据提示进行选择,在此我一路选择回车即可。

3、交叉编译器的安装

在安装交叉编译器前,首先要实现在Linux中能够共享Windows中的文档,即能够把开发板所需的交叉编译器拷贝到Linux中,然后才能进行安装。

点击VM→settings→options→SharedFolders,通过add进行F:

\SBC共享目录的添加。

添加的共享目录会在/mnt/hgfs目录中。

交叉编译器和内核就放在SBC中。

其安装的过程如下:

①在根目录下新建SBC-linux的文件名,把共享目录SBC中的内容复制到该目录下,然后在该目录下执行命令tar-zxvfarm-linux-toolchains.tgz,并把2.95.3这个目录复制到/usr/local/arm目录中。

②为了可以方便的使用arm-linux-gcc编译器系统,把交叉编译器设置为全局变量,进入/etc,执行vi/etc/profile,在pathmunge/usr/local/sbin后添加pathmunge/usr/local/arm/2.95.3/bin,保存退出。

③测试交叉编译器是否安装成功,首先在SBC-linux目录下执行命令tar–zxvfSBC2410II.tgz,并把SBC2410II目录复制到/SBC-linux目录中,然后进入目录/SBC-linux/SBC2410II/examples/hello后执行arm-linux-gcc–ohellohello.c,在hello目录下会生成hello.o的目标文件。

4、以“hello,world”程序为例熟悉整个开发过程

①在PC上编辑以下源代码,并保存为hello.c

#include

intmain(void)

{

printf("hello,NanchangUniversityCollegeofScienceandTechnology!

\n");

return0;

}

②编译hello

使用以下命令编译:

#arm-linux-gcc–ohellohello.c

将生成hello可执行文件。

③下载并运行

把U盘插入PC的USB,把/SBC-linux/SBC2410II/examples/hello目录中的Hello.o目标文件复制到U盘中。

然后把优盘拔下来插入到SBC-2410X的USBHOST端口,打开dnw.exe终端,连接好超级终端(其中波特率设置为115200bps,com设置为PC机上相对应的端口),启动EM-SBC2410开发板,按照以下命令操作:

#mount/dev/sda1/mnt;挂接优盘

#cp/mnt/hello/bin;把hello复制到bin目录

#hello;执行hello

在终端上将出现“hello,NanchangUniversityCollegeofScienceandTechnology!

”字样。

然后输入#umount/mnt命令退出U盘。

(千万记住不要直接拔下U盘,否则有可能会对U盘造成损坏。

5、基于ARM的音频控制的放大部分的硬件电路设计及制作

按要求进行音频控制的放大部分的电路设计,利用protel软件画出原理图并生成PCB图,利用自己的PCB图,根据印制电路制版的整个工艺过程(在工程训练3及其工程训练4中已经过严格的训练),制作出最后的PCB板。

PCB板制作完毕后,在自己的的PCB板上进行电路的焊接并调试成功。

6、音频设备驱动程序的实现

在Linux下,音频设备驱动程序的实现与文件系统的操作密切相关。

Linux将各种设备以文件的形式给出统一的接口,如何对各种音频设备进行操作是在Linux上进行音频编程的关键,通过内核提供的一组系统调用,应用程序能够访问声卡驱动程序提供的各种音频设备接口,这是在Linux下进行音频编程的最简单也是最直接的方法。

UDA1341驱动程序位于:

/SBC-linux/SBC2410II/kernel/drivers/sound/s3c2410-uda1341.c,该设备驱动程序比较多,其主要模块包括:

UDA1341驱动的初始化、打开音频设备、缓存区设计、ioctl系统调用和音频数据的播放和录制。

7、媒体播放器的移植

Mplayer是Linux下强大的媒体播放器,对媒体格式广泛支持,最新的版本可以支持Divx、H.264、MPEG4等最新的媒体格式,可以实时在线播放视频流,是目前嵌入式媒体播放器的首选。

其媒体播放器的移植过程如下:

①安装和编译

Mplayer的源代码可以从其主页http:

//www.mplayerhq.hu下载。

打开Mplayer官方网站的主页,可以看到“download”链接,单击即进入下载页面。

在该页面里可以看到“dailyCVSsnapshotsource”的下载部分,这部分链接指向了每天提交到CVS服务器里最新的Mplayer源代码包,鼠标单击一下开始下载。

对下载的文件Mplayer-current.tar.bz2解压缩:

#tarzvvfMplayer-current.tar.bz2

在解压缩得到的Mplayer-0.93目录下有一个脚本文件mkall,这个文件是一个编译脚本,在该目录下直接执行:

#./mkal

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2