ARM9嵌入式系统课程设计.doc_第1页
ARM9嵌入式系统课程设计.doc_第2页
ARM9嵌入式系统课程设计.doc_第3页
ARM9嵌入式系统课程设计.doc_第4页
ARM9嵌入式系统课程设计.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 引言1.1 设计目的了解pc机模拟Linux环境下,嵌入式系统开发方法和流程。熟悉Linux平台使用技巧以及Linux环境操作命令。通过设计掌握Linux嵌入式系统语音采集和播放方法,以及相关程序代码的编写。1.2 设计要求在Samsung公司S3C2410处理器的开发板上,嵌入式linux系统环境下,设计语音采集及播放程序,实现语音数据的采集与播放。 在语音数据采集过程中需要的指标如下:语音采样精度 语音采样精度指每个声音样本用多少位来表示,度量声音波形幅度的精度位数的大小影响到声音的质量,位数越多,声音的质量越高,而需要的存储空间也越多;比如可用8位、16位来表示。8位可以把声波分成256级,16位可以把同样的波分成65,536级的信号,即位数越高,声音的保真度越高。语音采样频率 采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。常用的采样频率一般 11KHz、22KHz、和44.1KHz。11KHz的采样率获得的声音称为电话音质,基本上能让你分辨出通话人的声音;22KHz称为广播音质;44.1KHz称为CD音质。 语音的正常频率为 300Hz-3400Hz。8KHz采样频率即可满足语音数据采集的要求,可将采集得到的语音数据还原,但是考虑到语音质量,适当选取采样频率。要求设计的嵌入式系统能实时采集和播放语音。第二章 系统总体方案 2.1 开发系统平台构建一开发平台硬件组成1) PC机装有windows 98/NT/2000/XP系统和Embest IDE集成开发环境2) Embest JTAG仿真器 JTAG 仿真器也称为JTAG 调试器,是通过ARM 芯片的JTAG 边界扫描口进行调试的设备。JTAG 仿真器连接比较方便,通过现有的JTAG 边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC 和DC 参数不匹配,电线长度的限制等被最小化了。使用集成开发环境配合JTAG 仿真器进行开发是目前采用最多的一种调试方式。Embest JTAG 仿真器如下图所示 3) Embest IDE 集成开发环境 (1) Embest IDE 是一套应用于嵌入式软件开发的新一代集成开发环境。它提供高效明晰的图形化的嵌入式应用软件开发平台,包括一整套完备的面向嵌入式系统的开发和调试工具:编辑器、编译器、连接器、调试器、工程管理器等。Embest IDE 集成开发环境界面风格同Microsoft Visual Studio,是一套良好的嵌入式软件可视化开发环境。用户可以很方便的在Embest IDE 集成开发环境中创建和打开工程,建立、打开和编辑文件,编译、连接、运行、调试各种嵌入式应用程序。Embest IDE 开发环境界面如图 (2) Embest IDE 主要特征 Embest IDE 可在Windows 98、2000、NT 及XP 等操作系统上运行,主要支持ARM 系列处理器。对于ARM 系列处理器,Embest IDE 目前支持ARM7 以及ARM9 系列。Embest IDE for ARM 于2001 年正式发行,目前的版本为Embest IDE Pro for ARM 2004。Embest IDE for ARM 主要特性如下:l 支持开发语言:C 和汇编。l 界面友好,使用方便:类似MS Visual Studio 的用户界面。l 工程管理器:图形化的工程管理工具,负责应用源程序的文件组织和管理,提供编译、链接、库文件的设置窗口,可在一个工作区中同时管理多个应用软件和库工程。l 源码编辑器:标准的文本编辑功能,支持语法关键字、关键字色彩显示等。IDE 同时提供了高效的Find in Files 引擎,可迅速查找定位指定的字符串信息。l 编译工具:集成著名优秀自由软件GNU 的GCC 编译器,并经过优化和严格测试,运行在Win32 环境;同时兼容ARM SDT2.51 编译器,可以方便ARM SDT 及ADS 的用户在Embest IDE 下编译工程代码。IDE 提供了图形化的编译器开关设置界面,用户可以简单、直观、快捷地完成工程编译选项设置。编译信息的输出,条理清晰,可迅速定位产生语法错误的源文件行。l 调试器:提供对ARM AXD 调试器的支持,可以方便使用Embest JTAG 仿真器调试ARM SDT 及ADS 环境的工程代码。源码级调试,提供了图形和命令行两种调试方式,可进行断点设置、单步执行、异常处理,可查看修改内存、寄存器、变量等,可查看函数栈,可进行反汇编等。支持ARM/Thumb 指令调试。 l 调试设备:Embest JTAG 仿真器,连接到主机的通信接口可以是DB25 的LPT 口、USB接口或Ethernet 接口,另外一端是IDC 插头,连接到目标板的JTAG 接口。用户可以使用Embest IDE 配合Embest JTAG 仿真器进行应用软件的开发,Embest IDE 同时也支持一些国内外常用的Jtag Cable 线。l 脱机调试:Embest IDE for ARM 带ARM 指令集模拟器,用户可以在PC 上模拟调试ARM 应用软件。l 丰富的例程:提供ADI、Atmel、Samsung、Cirrus Logic、OKI、Philips、Sharp 等多家公司ARM 处理器的调试程序示例和使用说明。l 联机帮助:中、英文两种版本的在线帮助文档。4)Flash 编程器 当用户程序编写完之后,需要把程序生成的二进制执行文件烧写到开发板的 Flash 存储器中观察实际运行结果。英蓓特公司提供了一套完善的Flash 编程器,用户可以直接使用该编程器对开发板上的Flash 进行读写(使用时需要配合前面提到的Embest JTAG 仿真器)。其运行界面如图所示: Flash 编程器界面Flash 编程器的主要特征:l 支持所有基于ARM7 和ARM9 核的处理器, 如 ATMEL 公司AT91 系列, CIRRUS 公司EP73 系列,SAMSUNG 公司S3C 系列,Philips LPC 系列等。用户也可以通过选择自定义(USER -DEFINE),来定义编程使用的CPU 类型。l 支持大多数厂家生产的FLASH 芯片, 如 AMD 公司AM29 系列,INTEL 公司28 系列,SST 公司293949 系列。英蓓特公司可免费提供新Flash 芯片型号支持。l 支持对FLASH 进行空白检查、擦除、编程、文件校验、计算校验和、保护、上载。l 支持指定扇区范围操作,不影响其它扇区内容。l 支持8 位、16 位和32 位读写访问宽度。l 支持1 片、2 片及4 片FLASH 编程,编程文件无需劈分。l 支持Windows 98、2000、NT 及XP 操作系统。5)Embest EduKit-III 开发板 Embest EduKit-III 开发板是实验系统的主要硬件平台,它是英蓓特公司开发的一款全功能ARM 开发板,基于Samsung 公司的S3C44B0X 处理器(ARM7TDMI),资源丰富。硬件系统包含了嵌入式系统开发应用所需的大部分设备,如串口、以太网口、USB 口、音频输出、LCD 及TSP触摸屏、5*4 的小键盘、固态硬盘、大容量的Flash 和SDRAM 等等。用户不仅可以在该硬件平台上完成实验系统提供的实验例子,还可以参考该平台设计自己的目标系统。该硬件平台如下图所示: 实验系统硬件平台Embest EduKit-III 开发板的基本资源如下:l 电源:外部5V 电源供电或者由USB 接PC 供电,电源指示LED 以及500mA 保险丝l 1M16bit Flashl 41M16bit SDRAMl 4Kbit IIC BUS 的串行EEPROMl 2 个串口,其中一个为简单接口,一个为全接线接口,可跳接RS232 MODEMl 复位开关l 两个中断按钮,两个LEDl 外部IDE 硬盘接口l LCD 及TSP 触摸屏接口l 20 针JTAG 接口l USB 连接器l 44 键盘接口l 4 个220PIN CPU 扩展接口l 10M 以太网接口l 8 段数码管l MICROPHONE 输入口l IIS 音频信号输出口,可接双声道SPEAKERl 固态硬盘16M8bitl 320*240 带触摸功能的显示屏二 软件系统组成1)cygwin:cygwin是一个在windows平台上运行的Unix/Linux模拟环境2)Embest IDE:嵌入式开发环境3)Windows中的超级终端4)Embest online Flash Programmer for ARM:烧些相关文件到NorFlash中的工具。5)tftp32:在PC机上建立ftp服务工具。除了上述软件,还需要建立Linux的交叉编译环境,各项源代码的安装。实验中使用的是GNU的gcc编译工具,vivi、linux、文件系统的源代码在/tmp/edukit-2410中。 编译好vivi、linux、文件系统后烧写到flash存储器中后就可以启动linux系统了。6) Editplus2:源程序编辑、查看工具。 配置cygwin运行环境2.2 系统开发流程 配置vivi并编译生成vivi配置linux内核并编译生成zImage 编写系统文件源程序test.c、sndtools.c、sndtools、makefile生成根文件系统镜像roots06.new 烧写vivi、zImage、rootfs06.new到系统板 运行、测试系统性能2.3 应用程序流程Cygwin软件平台创建开发所需系统文件EmbestonlineFlash Programmer软件烧写系统文件到目标板Embest IDE软件编译运行嵌入式系统超级终端运行测试系统性能2.4 Linux操作系统及常用命令 cygwin是一个在windows平台上运行的unixunix/linux模拟环境,是cygnus solutions公司开发的自由软件。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。 特点: 1. cygwin只是模拟一个unix的环境有助于初学者学习,现在也可以在windows下开发一些程序。但他所支持的命令没有新版本的LINUX多,它是一个不是很完整的UNIX系统。2. vmware,qemu等虚拟机软件,以vmware为例,是先在windows中安装vmware虚拟机,再在vmware虚拟机上面用linux光盘或iso镜像安装完整的linux系统,vmware功能是虚拟一个cpu。与用虚拟机相比,Cygwin本身就是linux在windows环境下的部分替代物,占用资源相对较少,同时功能与“真实感”也更小,还有些不完善之处。常用命令:1) cd改变当前目录(文件夹)。例如下,cd / 返回到根目录cd . 退回到上级目录cd /tmp/edukit-2410/ 进入/tmp/edukit-2410/文件夹2) ls列出当前目录中的内容。ls 简单格式列表ls -1 使用详细格式列表3) rm 删除文件。4) pwd 显示当前所在目录的路径。 第三章 语音采集和播放设计原理3.1 语音采集和播放的工作原理麦克风扬声器DAC/ADC芯片 内 部 总 线 1.3控制接口S3C2410处理器DMA 0.1 内存缓存区 音频数据 音频数据 IIS总线 IIS控制器ARM芯片中,为了实现全双工模式,使用了两条串行数据线,分别作为输入和输出。此外三星公司的IIS接口提供三种数据传输模式2: 正常传输模式。此模式基于FIFO寄存器。该模式下CPU将通过轮询方式访问FIFO寄存器,通过IISCON寄存器的第七位控制FIFO。 DMA模式。此模式是一种外部设备控制方式。它使用窃取总线控制权的方法使外部设备与主存交换数据,从而提高系统的吞吐能力。传输/接收模式。该模式下,IIS数据线将通过双通道DMA同时接收和发送音频数据。本系统使用该数据传输模式。设备驱动程序中需要完成的任务包括:对设备以及对应资源初始化和释放;读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。 Linux驱动程序中将音频设备按功能分成不同类型,每种类型对应不同的驱动程序。UDA1341TS音频芯片提供如下功能: 数字化音频。这个功能有时被称为DSP或Codec设备。其功能是实现播放数字化声音文件或录制声音。 混频器。用来控制各种输入输出的音量大小,在本系统中对应L3接口。 在Linux设备驱动程序将设备看成文件,在驱动程序中将结构file_operations中的各个函数指针与驱动程序对应例程函数绑定,以实现虚拟文件系统VFS对逻辑文件的操作。数字音频设备(audio)、混频器(mixer)对应的设备文件分别是/dev/dsp和/dev/mixer。设备无关操作对应于file_operations指向的各个例程,它让用户用访问文件的方式访问设备。对设备的打开和读写是启动程序为用户程序提供的最主要接口,分别对应于file_operations中的open、read和write例程。在open例程中需要完成的任务主要是设备初始化,包括: 通过设置IIS寄存器控制音频设备的初始化,并且初始化设备的工作参数(包括速度、声道、采样宽度);为设备分配DMA通道;根据采样参数计算出缓存内段的大小(程序也可以指定缓存内段的大小); 当缓存区和DMA设置好后,读写操作主要对缓存操作,对设备的操作除了读写操作外,还有音频播放中的暂停和继续。这两个操作在ioctl接口中实现,通过对相应的IIS总线控制器(IISCON寄存器)操作实现。此外,在对音频操作时还要注意:一次采样得到的数据必须一次处理,否则不能正确播放数据。3.2 实现程序的主要函数kmalloc函数:为了提高一些常用的数据结构(一般大小远小于1个page)的内存使用效率(空间和时间上),引入slab分配器(区别于伙伴系统算法),slab分配器使用伙伴系统算法作为物理内存分的接口,但是对于slab分配器中的对象,内核释放这个对象之后,相应的物理内存并不释放,可以留给下一个可能的对象使用,这样可以提高经常使用的数据结构内存使用效率(否则导致内存碎片和让内核疲劳于不停的内存分配和释放)。对于每种常用的数据结构(比如skb_buff),内核可以使用kmem_cache_create()创建一个专用的高速缓存,但是如果对这个存储区的请求并不是那么的频繁,可以考虑使用kmalloc从通用高速缓存分配按照几何分布的存储区(从32个字节,到128k)。consistent_alloc函数:为DMA分配实际的连续物理缓存区,然后将节点插入队列中。init_s3c2410_iis_bus_rx函数:IIS总线的接受函数init_s3c2410_iis_bus_tx函数:IIS总线的发送函数 第四章 vivi、Linux内核、cramfs文件系统的烧写4.1 vivi的烧写步骤:双击打开cygwin运行窗口,依次键入cd / 进入根目录;source/tmp/edukit-2410/set_env_linux.sh 设置环境变量;cd $WORKDIR 进入edukit工作区;ls 查看目录;cd vivi 进入vivi目录,对vivi进行配置; make menuconfig 进入菜单; load -smdk2410 如下图: 之后生成vivi文件。然后我们就可以开始对vivi进行烧写:1) 首先把SW104短接(从Nand Flash启动),运行Embest online Flash Programmer forARM,点击菜单Settings选择Configure.选项,配置当前使用的Embest JATG仿真器型号为powerICEARM9,并设置相关参数。2) 点击菜单file选择open打开烧写配置文件S3C2410&NandFlash_vivi.cfg,在flash programmerde program页中选择要烧写的文件:vivi.Bon&load.Bin;3) 点击按钮Program开始烧写,直到烧写成功;4) 连接串口线到PC机COM1,运行超级终端;5) 把开发板重新加电,程序运行后,在超级终端上可以看到串口输出一些信息; 6) 点击超级终端菜单传送选择Xmodem方式下载vivi.Nand文件,点击OK后等待下载烧写结束后即可。 4.2 linux内核的烧写步骤:双击打开cygwin运行窗口,依次键入:cd / 进入根目录;source/edukit-2410/set_env_linux.Sh 设置环境变量;cd $WORKDIR 进入edukit工作区;cd vivi 进入vivi目录,对vivi进行配置; make menuconfig 进入菜单;load -arch/arm/def_config/smdk2410 加载文件; 如下图:sound 在图形界面上选中*sound support 、*smdk-2410.、*QSS.、*mk4002 mp3 decoder 等几个选项。 made dep make zImage 在./arch/arm/boot/目录下生成内核的压缩映像文件为“zImage”;下一步将zImage烧写进目标板:1) 首先sw104设为短接(从Nand Flash启动),并确定已经烧写vivi.nand,加电;2) 在vivi启动等待中,敲入空格键进入vivi界面环境,并输入以下命令:loal flash kernel x ;3) 点击超级终端菜单中的“传送”,选“发送文件”zImage(选择xModem传送方式)。4.3 烧写cramfs文件系统步骤:双击打开cygwin 窗口,键入 cd $WORKDIR 进入edukit工作区;mkcramfs mkcramfs root rootfs06.new 根文件系统镜像生成过程;cd sound make 查看文件夹cygwin/bin下是否生成 rootfs06.new 根文件系统镜像若生成则开始对cramfs文件进行烧写:1) 首先sw104设为短接(从Nand Flash 启动),确定已经成功烧写vivi和linux kernel,加电运行就可以看到vivi启动信息,输入空格进入命令状态;2) 双击运行download.pjf工程文件,点击连接remote connet,程序应该正在运行;在超级终端输入help看看有没有反应,如果没反应,点击IDE按钮:reset-Start;再输入help测试,直到有反应为止。3) 如果超级终端可以输出一些信息,再点击IDE中的stop,配置debug的download地址为0x30000000,并点击IDE菜单project选择setting项,在download页下拉category到download项,在download file选择rootfs06.new文件,点击确认后:a. 点击IDE菜单DEBUG选择download下载文件系统镜像;b. 下载完毕后,点击Start;c. 然后在超级终端里输入: load flash root j下面是在烧写过程中用到的所有系统文件:vivi、Linux内核、cramfs等文件系统的烧写全部完成。第五章 交叉编译5.1 Makefile文件编写Makefile文件源代码如下:#-/* execute file(s) */TESTFILE = test #-/* object file(s) */SRCFILE1 = test.cSRCFILE2 =sndtools.c #-/* target file(s) */ TAR1 = test.oTAR2 =sndtools.o#-/* header file(s) */TESTFILE_H= sndtools.HCC1=arm-linux-gccall: $(TESTFILE)$(TESTFILE): $(TAR1) $(TAR2)$(CC1) $(TAR1) $(TAR2) -o $(TESTFILE)$(TAR1): $(SRCFILE1) $(TESTFILE_H) $(CC1) -c $(SRCFILE1) -o $(TAR1)$(TAR2): $(SRCFILE2) $(TESTFILE_H)$(CC1) -c $(SRCFILE2) -o $(TAR2)clean: rm -f $(TAR1) $(TAR2) $(TESTFILE)5.2 交叉编译的过程Sound文件中存在这样几个文件test.c、sndtools.c、sndtools.h、Makefile四个文件:1 对test.c文件进行编译然后和sndtools.h交叉编译得到目标文件test.o;2 对sndtools.c文件进行编译然后和sndtools.h交叉编译得到目标文件sndtools.o;3 对生成的test.o和sndtools.o目标文件交叉编译即可得到test文件。图示为 test sndtools.o test.o sndtools.h sndtools.c test.c sndtools.h第六章 程序源代码设计与调试6.1 程序源代码设计sndtools.h代码:#ifndef SNDTOOLS_H#define SNDTOOLS_H#include #define FMT8BITSAFMT_S8_LE#define FMT16BITSAFMT_S16_LE#define FMT8K8000#define FMT16K16000#define FMT22K22000#define FMT44K44000#define MONO1#define STERO2#ifndef VAR_STATICextern int devfd;extern int CapMask;#endif /ifndef VAR_STATIC/Open sound device, return 1 if open success/else return 0int OpenSnd();/Close sound deviceint CloseSnd();/Set record or playback format, return 1 if success/else return 0int SetFormat(int bits, int hz);/Set record or playback channel, return 1 if success/else return 1int SetChannel(int chn);/Recordint Record(char *buf, int size);/Playbackint Play(char *buf, int size);#endif /ifndef SNDTOOLS_Hsndtools.c代码:#include #include #include #include #include #define VAR_STATIC#include sndtools.hint devfd = 0;/* Open Sound device* Return 1 if success, else return 0.*/int OpenSnd(/* add by new version */int nWhich)if(devfd 0)close(devfd);devfd = open(/dev/dsp, O_RDWR);if(devfd 0)return 0;return 1;/* Close Sound device* return 1 if success, else return 0.*/int CloseSnd(/* add by new version */int nWhich)close(devfd);devfd = 0;return 1;/* Set Record an Playback format* return 1 if success, else return 0.* bits - FMT8BITS(8bits), FMT16BITS(16bits)* hz - FMT8K(8000HZ), FMT16K(16000HZ), FMT22K(22000HZ), FMT44K(44000HZ)*/int SetFormat(int bits, int hz)int tmp = bits;if( -1 = ioctl(devfd, SNDCTL_DSP_SETFMT, &tmp)#ifdef DEBUG_WARNprintf(Set fmt to s16_little faile:%dn, nWhich);#endifreturn 0;tmp = hz;if( -1 = ioctl(devfd, SNDCTL_DSP_SPEED, &tmp)#ifdef DEBUG_WARNprintf(Set speed to %d:%dn, hz, nWhich);#endifreturn 0;return 1;/* Set Sound Card Channel* return 1 if success, else return 0.* chn - MONO, STERO*/int SetChannel(int chn)int tmp = chn;if(-1 = ioctl(devfd, SNDCTL_DSP_CHANNELS, &tmp)#ifdef DEBUG_WARNprintf(Set Audio Channel faile:%dn, nWhich);#endifreturn 0;return 1;/* Record* return numbers of byte for read.*/int Record(char *buf, int size)return read(devfd, buf, size);/* Playback* return numbers of byte for write.*/int Play(char *buf, int size)return write(devfd, buf, size);test.c代码:/ A sample to test record and playback.#include #include #include #include sndtools.hint main()char *buf;int dwSize;if(!OpenSnd()printf(Open sound device error!n);exit(-1);SetFormat(FMT16BITS, FMT8K, WAVOUTDEV);SetChannel(MONO, WAVOUTDEV);buf = (char *)malloc(320);if(buf = NULL)exit(-1);for(int i = 0; i cd /vivicd homevivichmod 775 testvivi./test 这时超级终端窗口会有连续跳出的信息,插入低功率耳机,并对着麦克风说话,测试能否在耳麦中能实时的听见自己的声音。6.3 课程设计收获与体会转眼为期一周半的ARM9嵌入式系统课程设计已经结束,本次课程设计正值英语四六级考试期间,因此显得有些忙碌。真正用于课程设计的时间是相当有限的。虽然这过程还是有些辛苦,不过毕竟最后能看到自己的辛苦复出有了回报,因此还是觉得很值得。 这次的ARM9嵌入式系统课程设计需要我们综合运用“ARM9嵌入式系统”课程的知识,通过研究、查阅资料、方案论证与选定;设计思路的确定,程序的编写,调试程序;在设计中遇到很多问题,有很多知识都不了解。一些命令的使用仍然不够熟练,总是有问题,有些错误不论怎么弄都不行,反而引来了更多错误。通过这次课程设计进一步了解模拟linux环境嵌入式系统,对ARM9嵌入式系统开发流程有了大体的认识,能够熟练使用一些cygwin操作平台中的常用命令,这对我以后进一步学习linux嵌入式系统开发打下了很好的基础。课程设计老师讲得十分详细,每一步操作都为我们细细讲解,当出现错误时能够及时帮我们解决,并为我们讲解原因。本次课设虽然时间不长,却学到了许多知识,在老师的帮助下这次课设也做得十分成功。经过这次课程设计感觉收获良多。它让我深刻的感觉到学好嵌入式系统是不容易的,同时也在一定程度上加强了同学之间的合作。课程设计是需要我把所学的知识灵活运用的,它也需要我们能够把知识结合起来,不然是无法设计出一个符合要求的系统来的。但一个人的力量毕竟有限,同学之间的合作自然也是不可缺少的。经过这一周半的课程设计,感觉有些累的。虽然这已不是我第一次参加课程设计了,但随着次数的增多我愈觉得课程设计是一项体力与脑力相结合的活动。它需要我们花费大量脑力去学习设计,随后的整理与总结也是相当复杂的,是脑力与体力的双重考验。总得来说,这次课程设计总的感觉还是很圆满的。参考文献:1 戴宗坤,罗万伯等M 北京:电子工业出版社,2002 2 Huang S C,Huang Y M,Shieh S MVibration and stability of a rotating shaft containing a transcrse crachJ J Sound and Vibration,1993,162(3):387-401 3 周丽机械式挖掘机工作装置的优化与仿真D 沈阳:东北大学,2000 4 周立功单片机. ZLG7290 I2C 接口键盘及LED 驱动器数据手册.5 马忠梅,戚军,刘滨,马岩.单片机C 语言 Windows 环境编程宝典.北京航空航天大学出版社.20036 何立民. I2C 总线应用系统设计.北京航空航天大学出版社.1995 7 熊茂华、杨震伦.ARM9嵌入式系统设计与开发应用.清华大学出版社.20098 张景璐,杜辉,吴友兰编著.ARM9嵌入式系统设计与应用案例. 中国电力出版社.2008目 录第一章 引言11.1 设计目的11.2 设计要求1第二章 系统总体方案22.1 开发系统平台构建22.2 系统开发流程72.3 应用程序流程82.4 Linux操作系统及常用命令8第三章 语音采集和播放设计原理103.1 语音采集和播放的工作原理103.2 实现程序的主要函数11第四章 vivi、Linux内核、cramfs文件系统的烧写124.1 vivi的烧写124.2 linux内核的烧写144.3 烧写cramfs文件系统16第五章 交叉编译195.1 Makefile文件编写195.2 交叉编译的过程20第六章 程序源代码设计与调试216.1 程序源代码设计216.2 运行调试266.3 课程设计收获与体会27参考文献:28 第一章 引言1.1 设计目的了解pc机模拟Linux环境下,嵌入式系统开发方法和流程。熟悉Linux平台使用技巧以及Linux环境操作命令。通过设计掌握Linux嵌入式系统语音采集和播放方法,以及相关程序代码的编写。1.2 设计要求在Samsung公司S3C2410处理器的开发板上,嵌入式linux系统环境下,设计语音采集及播放程序,实现语音数据的采集与播放。 在语音数据采集过程中需要的指标如下:语音采样精度 语音采样精度指每个声音样本用多少位来表示,度量声音波形幅度的精度位数的大小影响到声音的质量,位数越多,声音的质量越高,而需要的存储空间也越多;比如可用8位、16位来表示。8位可以把声波分成256级,16位可以把同样的波分成65,536级的信号,即位数越高,声音的保真度越高。语音采样频率 采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。常用的采样频率一般 11KHz、22KHz、和44.1KHz。11KHz的采样率获得的声音称为电话音质,基本上能让你分辨出通话人的声音;22KHz称为广播音质;44.1KHz称为CD音质。 语音的正常频率为 300Hz-3400Hz。8KHz采样频率即可满足语音数据采集的要求,可将采集得到的语音数据还原,但是考虑到语音质量,适当选取采样频率。要求设计的嵌入式系统能实时采集和播放语音。第二章 系统总体方案 2.1 开发系统平台构建一开发平台硬件组成1) PC机装有windows 98/NT/2000/XP系统和Embest IDE集成开发环境2) Embest JTAG仿真器 JTAG 仿真器也称为JTAG 调试器,是通过ARM 芯片的JTAG 边界扫描口进行调试的设备。JTAG 仿真器连接比较方便,通过现有的JTAG 边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。另外,由于JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC 和DC 参数不匹配,电线长度的限制等被最小化了。使用集成开发环境配合JTAG 仿真器进行开发是目前采用最多的一种调试方式。Embest JTAG 仿真器如下图所示 3) Embest IDE 集成开发环境 (1) Embest IDE 是一套应用于嵌入式软件开发的新一代集成开发环境。它提供高效明晰的图形化的嵌入式应用软件开发平台,包括一整套完备的面向嵌入式系统的开发和调试工具:编辑器、编译器、连接器、调试器、工程管理器等。Embest IDE 集成开发环境界面风格同Microsoft Visual Studio,是一套良好的嵌入式软件可视化开发环境。用户可以很方便的在Embest IDE 集成开发环境中创建和打开工程,建立、打开和编辑文件,编译、连接、运行、调试各种嵌入式应用程序。Embest IDE 开发环境界面如图 (2) Embest IDE 主要特征 Embest IDE 可在Windows 98、2000、NT 及XP 等操作系统上运行,主要支持ARM 系列处理器。对于ARM 系列处理器,Embest IDE 目前支持ARM7 以及ARM9 系列。Embest IDE for ARM 于2001 年正式发行,目前的版本为Embest IDE Pro for ARM 2004。Embest IDE for ARM 主要特性如下:l 支持开发语言:C 和汇编。l 界面友好,使用方便:类似MS Visual Studio 的用户界面。l 工程管理器:图形化的工程管理工具,负责应用源程序的文件组织和管理,提供编译、链接、库文件的设置窗口,可在一个工作区中同时管理多个应用软件和库工程。l 源码编辑器:标准的文本编辑功能,支持语法关键字、关键字色彩显示等。IDE 同时提供了高效的Find in Files 引擎,可迅速查找定位指定的字符串信息。l 编译工具:集成著名优秀自由软件GNU 的GCC 编译器,并经过优化和严格测试,运行在Win32 环境;同时兼容ARM SDT2.51 编译器,可以方便ARM SDT 及ADS 的用户在Embest IDE 下编译工程代码。IDE 提供了图形化的编译器开关设置界面,用户可以简单、直观、快捷地完成工程编译选项设置。编译信息的输出,条理清晰,可迅速定位产生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论