工程训练报告

时间:2024.4.5

科学技术学院

SCIENCE & TECHNOLOGY COLLEGE OF

NANCHANG  UNIVERSITY

 《工练》报

REPORT  ON  ENGINEERING  TRAINING

题   目      基于ARM的音频控制                                

学科部、系:信息学科部                           

专业班级:  08自动化                           

学   号:  7021308032                          

学生姓名:  周以庆                          

指导教师:郭波陈艳老师                            

起讫日期:  2011.5.2~2011.5.14                             

题目    基于ARM的音频控制

专业:08自动化   学号:7021308032     学生姓名:周以庆     指导教师:郭波 陈艳

摘   要

基于ARM的音频控制是自动化系的学生在4年学习中的最后一次软硬件开发的工程训练,利用2周时间完成。本次工程训练以深圳芯控科技有限公司生产的一款基于ARM9的嵌入式开发平台EM-SBC2410为硬件开发平台,通过搭建嵌入式Linux的软件开发平台,完成基于ARM的音频控制的软硬件设计。通过此设计,使学生掌握以ARM为控制核心的嵌入式开发板的运用、领略到基于ARM9-Linux软硬件平台开发的主要过程、方法和步骤,最终完成一个基于ARM9的小型嵌入式作品。学生要完成这一工程训练项目,必须学完“单片机原理及其应用”和“嵌入式系统原理及其应用”二门课程及其完成“基于单片机的直流电动机控制”或“基于单片机的数字钟设计”的实训项目,并综合应用这三门课程的软硬件知识,解决实践中的实际软硬件开发问题。本次工程训练通过“嵌入式系统原理及其应用”课程的学习,掌握嵌入式系统开发的基础知识;通过对EM-SBC2410的学习,了解嵌入式开发板的使用及其嵌入式系统的主要开发要点;综合应用嵌入式Linux的C语言编程技巧,结合音频控制原理,实现基于ARM的音频控制。为了使学生深入理解嵌入式系统的整个开发过程,本设计采用5个过程实现基于ARM的音频控制,此5个过程分别为:EM-SBC2410开发板的硬件资源及其附带的软件资源的使用阶段、嵌入式Linux的开发环境的搭建阶段、基于ARM的音频控制的需求分析及其制定设计思路阶段、硬件设计及其制作阶段、软件设计及其调试阶段、作品联调运行及其维护阶段。要求学生按照5个阶段开发过程展开,以求给学生一个整个嵌入式开发的全过程。本工程训练除了要求学生掌握运用ARM控制音频的全过程,还要求学生能够掌握以ARM为控制核心的嵌入式开发板的运用及其嵌入式Linux的C语言的编程技巧.

目        录

第一章  基本知识介绍

1.1……………………………………EM-SBC2410开发板简介

1.2……………………………………嵌入式Linux开发的相关知识

第二章 设计方案的选择和原理

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

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

第三章  软件的系统安装及环境的编译

3.1……………………………………REDHAT LINUX 9.0 的安装

3.2……………………………………VMware Tools的安装

3.3……………………………………交叉编译器的安装

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

第四章  系统的硬件软件设计

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

4.2……………………………………音频设备驱动程序的实现

4.3……………………………………媒体播放器的移植

4.4……………………………………挂U盘播放mp3格式的歌曲

第五章 性能与调试

5.1……………………………………性能与调试

第六章  心得体会

6.1……………………………………心得体会

第七章  参考文献

7.1……………………………………参考文献

                  第八章  工程训练成绩评定表

8.1……………………………………工程训练成绩评定表

1  基本知识介绍

运用EM-SBC2410的硬件开发平台进行基于ARM的音频控制的软硬件设计,用到了“嵌入式系统原理及其应用”这门课程、嵌入式Linux开发的相关知识、EM-SBC2410用户手册及其音频控制原理等知识。嵌入式系统原理及其应用中主要掌握ARM的体系结构及其编程,以及嵌入式系统开发的流程。嵌入式Linux开发的相关知识主要掌握嵌入式Linux开发环境的搭建及其嵌入式Linux的交叉开发流程。EM-SBC2410用户手册主要掌握如何利用基于ARM9的开发板的硬件资源进行设计的过程。下面简单介绍除“嵌入式系统原理及其应用”这门课程外,此设计中要使用的一些重要知识。

1.1.1EM-SBC2410开发板简介

图1 EM-SBC2410开发板

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

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

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

1、嵌入式Linux简介

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

比较著名的linux发行版本有redhat Linux ,SUSE Linux ,Turbo Linux ,Ubuntu Linux等。国内的有北京中科红旗软件技术有限公司发布的红旗linux,深圳蓝点软件有限公司发布的蓝点linux,北京冲浪公司制作的xterm linux 等。

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

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

Linux 交叉开发采用宿主机和目标机的模式进行。宿主机是一台运行 Linux(如:RedHat)的 PC 机,目标机即 EM-SBC2410开发板。开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,这种代码并不能在宿主机上执行,而只能在目标机上执行。然后把可执行文件下载到目标机上运行。调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器所提供的支持作出选择。宿主机和目标板的处理器一般都不相同,宿主机为 Intel 处理器, 而目标板如 EM-SBC2410为 SAMSUNG S3C2410。

Linux 交叉开发包括 Linux 内核的开发和 Linux 应用程序的开发应用程序的开发。有两种方式:

①Linux 内核的开发:图2所示为本设计的开发环境以及开发流程。在主机的 RedHat Linux 操作系统下安装 Linux 发行包以及交叉编译器 arm-linux-gcc。然后对 Linux 进行配置(make menuconfig)并选择适合本开发板的相关配置,配置完成后进行编译生成 Linux 映像文件zImage。然后将该文件下载到目标板并执行。


图2 Linux的开发流程

②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 这样的系统只能编译进内核进行调试。

● 建立根文件系统,从 www.busybox.net 下载使用 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 文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起。

2 设计方案的选择和原理

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

Samsung S3C2410X带有I2S音频总线,因此EM-SBC2410使用一片I2S接口的PHILIPS解码芯片UDA1341,通过该芯片和相应的软件,用户可以播放mp3以及wav格式的音频文件,双声道的声音可以从背面的耳塞插孔直接接至耳塞或音箱,音频输入接口可以录音。此设计通过音频放大电路的设计,结合相应的控制程序,实现mp3歌曲的播放。

IIS(Integrate Interface of Sound)即集成音频接口,在上个世纪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所示。


表1 IIS相关寄存器

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

图3 IIS总线控制器结构图

如图3所示,S3C2410X的IIS总线时钟信号SCK与UDA1341TS的BCK连接,字段选择连接在WS引脚上。UDA1341TS提供两个音频通道,分别用于输入和输出,对应的引脚连接为:IIS总线的音频输出I2SSDO对应于UDA1341TS的音频输入;IIS总线的音频输入I2SSDI对应于UDA1341TS的音频输出。UDA1341TS的L3接口相当于一个混音器控制接口,可以用来控制输入/输出音频信号的音量大小、低音等。L3接口的引脚L3MODE、L3DATA、L3CLOCK分别连接到S3C2410的GPB2、GPB3、GPB4三个通用数据输出引脚上,实现混音控制。

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

                             图4 音频放大电路

此音频放大电路采用LM386集成芯片,LM386是低电压应用的音频功率放大集成电路,可使用电池为供电电源,输入电压范围可由4V-12V,具有静态电流小、输出端直流电压自动跟踪、电压增益可调、外围元件少等优点。为了能产生立体声,本设计采用双通道音频放大电路,如图4是其中的一个通道,输入由音频线引出,输出接扬声器。。

3   软件的系统安装及环境的编译

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

在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的 PC 机作宿主开发机,对于嵌入式 Linux,宿主机上的操作系统一般使用 Redhat Linux。本设计使用Redhat 9.0,选择定制安装或全部安装,然后安装相应的 GCC 交叉编译器(比如 arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

3.1  REDHAT LINUX 9.0 的安装

首先在一台 PC 上安装Vmware 6.5虚拟机环境,然后在虚拟机上安装 RedHat LINUX9.0,选择 Custom 定制安装,在选择软件 Package 时最好将所有包都安装,需要空间约 2.7G,如果选择最后一项:everything,即完全安装,将安装 3 张光盘的全部软件,需要磁盘空间大约 5G。因此建议提前为 REDHAT LINUX 的安装预留大约 5-15G 的空间,具体视用户的硬盘空间大小来确定,在安装完 Redhat 后还要安装Linux 的编译器和开发库以及 ARM-Linux 的所有源代码,这些包安装后的总共需要空间大约为 800M。

3.2 VMware Tools的安装

在虚拟机中安装完RedHat LINUX9.0操作系统之后,接下来需要安装VMware Tools。VMware Tools相当于VMware虚拟机的主板芯片组驱动和显卡驱动、鼠标驱动,在安装VMware Tools后,可以极大提高虚拟机的性能,并且可以让虚拟机分辨率以任意大小进行设置,还可以使用鼠标直接从虚拟机窗口中切换到主机中为。

其安装过程如下:①从VM菜单下选择安装VMware Tools,此时就会有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 -zxvf  VMwareTools-6.5.0-118166.tar.gz ④进入/tmp vmware-tools-distrib目录中,输入 ./vmware-install.pl进行安装,在安装过程中根据提示进行选择,在此我一路选择回车即可。

3.3   交叉编译器的安装

在安装交叉编译器前,首先要实现在Linux中能够共享Windows中的文档,即能够把开发板所需的交叉编译器拷贝到Linux中,然后才能进行安装。点击VM→settings→options→Shared Folders,通过add进行F:\ SBC共享目录的添加。添加的共享目录会在/mnt/hgfs目录中。交叉编译器和内核就放在SBC中。

其安装的过程如下:①在根目录下新建SBC-linux的文件名,把共享目录SBC中的内容复制到该目录下,然后在该目录下执行命令tar -zxvf  arm-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 –zxvf  SBC2410II.tgz,并把SBC2410II目录复制到/SBC-linux目录中,然后进入目录/SBC-linux/ SBC2410II/examples/hello后执行arm-linux-gcc –o hello hello.c ,在hello目录下会生成hello.o的目标文件。

1.下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下。
  arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:

http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

2.解压 arm-linux-gcc-3.4.1.tar.bz2
  #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
  解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将arm文件夹拷贝到/usr/local/下 ####说明此处如果文件放在/2410下面解压则在/2410/usr/local
  # cd usr/local/
  #cp -rv arm /usr/local/
  现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了
3.  修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一)
  方法一:修改/etc/bash.bashrc文件
     #vim /etc/bash.bashrc

            在最后加上:

   export PATH=$PATH:/usr/local/arm/3.4.1/bin

export PATH

    (如果不能编辑,先修改相关文件的权限使用chmod命令。)

方法二:修改/etc/profile文件:
# vim /etc/profile

增加路径设置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
  方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin
  注:(这只能在当前的终端下才是有效的!)
4. 立即使新的环境变量生效,不用重启电脑:
 对应方法一:#source /root/.bashrc
 对应方法二:# source /etc/profile
5. 检查是否将路径加入到PATH:
   # echo $PATH
  显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
 6.测试是否安装成功
  # arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
 Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc- 3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long
 Thread model: posix
 gcc version 3.4.1


7.编译Hello World程序,测试交叉工具链
   写下下面的Hello World程序,保存为 hello.c
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}

   执行下面的命令:
# arm-linux-gcc -o hello hello.c
    源程序有错误的话会有提示,没有任何提示的话,就是通过了,就可以下载到ARM目标板上运行了!

接着可以输入file hello的命令,查看生成的hello文件的类型,要注意的是生成的可执行文件只能在ARM体系下运行,不能在其于X86的PC机上运行。

Debian下构建嵌入式交叉编译环境

折腾了一下午,终于在Debian下弄好了交叉编译环境,在网上查了一大堆的资料,大都是乱七八糟的,总是出现这样那样的问题,经过尝试和探索,终于搞定了,现将我构建的过程总结一下,作个记录,UBUNTU下也类似。

本文地址:http://blog.sina.com.cn/s/blog_5a155e330100bqjc.html

1. 安装标准的C开发环境,由于Linux安装默认是不安装的,所以需要先安装一下(如果已   经安装好的话,就可以免去这一步了):
  #sudo apt-get install gcc g++ libgcc1 libg++ make gdb

2. 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹   里 /home/wrq
  arm-linux-gcc-3.4.1.tar.bz2 的下载地址如下:http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

3. 解压 arm-linux-gcc-3.4.1.tar.bz2
   #tar -jxvf arm-linux-gcc-3.4.1.tar.bz2
  解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹,进入该文件夹,将   arm文件夹拷贝到/usr/local/下
  # cd usr/local/
  #cp -rv arm /usr/local/
  现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了

4.  修改环境变量,把交叉编译器的路径加入到PATH。(有三种方法,强烈推荐使用方法一)
     方法一:修改/etc/bash.bashrc文件
                 #vim /etc/bash.bashrc
                 在最后加上:
                export PATH=$PATH:/usr/local/arm/3.4.1/bin
                export PATH
     方法二:修改/etc/profile文件:
                # vim /etc/profile
               增加路径设置,在末尾添加如下,保存/etc/profile文件:
               export PATH=$PATH:/usr/local/arm/3.4.1/bin
    方法三:#export PATH=$PATH:/usr/local/arm/3.4.1/bin
                  注:(这只能在当前的终端下才是有效的!)

5. 立即使新的环境变量生效,不用重启电脑:
     对应方法一:#source /root/.bashrc
    对应方法二:# source /etc/profile

6. 检查是否将路径加入到PATH:
      # echo $PATH
  显示的内容中有/usr/local/arm/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
  (本文地址:http://blog.sina.com.cn/s/blog_5a155e330100bqjc.html)
7. 测试是否安装成功
   # arm-linux-gcc -v
  上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
 Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
  Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-  3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu

 --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm

 -linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable

 -nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable- languages=c,c++ --enable-shared --enable-c99 --enable-long-long
 Thread model: posix
 gcc version 3.4.1

8.编译Hello World程序,测试交叉工具链
  写下下面的Hello World程序,保存为hello.c
    #include <stdio.h>
    int main()
    {
    printf("Hello World!\n");
       return 0;
    }
  
    执行下面的命令:
    # arm-linux-gcc -o hello hello.c

-------------------------------------------------------------

修改环境变量这一步修改/etc/profile文件

在path中添加arm-linux-gcc路径

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/arm/3.4.1/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

再source /etc/profile就可以刷新环境变量

其他方式试过好像不行........

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

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

#include <stdio.h>

int main(void)

{

 printf("hello, Nanchang University College of Science and Technology!\n");

return 0;

}

②编译 hello

使用以下命令编译:

arm-linux-gcc –o hello hello.c

将生成 hello 可执行文件。

    ③下载并运行

把U盘插入 PC 的 USB,把/SBC-linux/ SBC2410II/examples/hello目录中的Hello.o目标文件复制到U盘中。然后把优盘拔下来插入到 SBC-2410X 的 USB HOST 端口,打开dnw.exe终端,连接好超级终端(其中波特率设置为115200bps,com设置为PC机上相对应的端口),启动EM-SBC2410开发板,按照以下命令操作:

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

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

 #hello;  执行 hello

在终端上将出现“hello, Nanchang University College of Science and Technology!”字样。然后输入#umount /mnt命令退出U盘。(千万记住不要直接拔下U盘,否则有可能会对U盘造成损坏。)

4 系统的硬件软件设计

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

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

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

4.2 音频设备驱动程序的实现

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

UDA1341驱动程序位于:

/SBC-linux/SBC2410II/kernel/drivers/sound/s3c2410-uda1341.c,该设备驱动程序比较多,其主要模块包括:UDA1341驱动的初始化、打开音频设备、缓存区设计、ioctl系统调用和音频数据的播放和录制。

4.3 媒体播放器的移植

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

①安装和编译

Mplayer的源代码可以从其主页http://www.mplayerhq.hu下载。打开Mplayer官方网站的主页,可以看到“download”链接,单击即进入下载页面。在该页面里可以看到“daily CVS snapshot source”的下载部分,这部分链接指向了每天提交到CVS服务器里最新的Mplayer源代码包,鼠标单击一下开始下载。对下载的文件Mplayer-current.tar.bz2解压缩:

#tar zvvf Mplayer-current.tar.bz2

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

#./mkall

该脚本将配置并编译mplay, 下面是该脚本所进行的配置和编译命令:

./configure –cc=usr/local/arm/2.95.3/bin/arm-linux-gcc

--target=arm-linux–with-extralibdir=/usr/local/2.95.3/bin/arm-linux-gcc/lib –with-extraincdir=usr/local/2.95.3/bin/arm-linux/include/--disable-sd1  –enable-static -disable- dvdnav –disable-tv disable-gui –disable-mpdvdkit  –enable-linux-devfs

make

编译成功后,将在Mplayer-0.93目录下生成mplayer文件,该文件为mplayer媒体

播放程序。

②下载运行

播放mp3歌曲(shanghaitan.mp3),在终端上输入

#madplay /root/Documents shanghaitan.mp3

在终端上将出现:

MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 20##-2003 Robert Leslie et al.

     Title: 上海滩

    Artist: 叶丽仪

      Year: 2000

     Genre: Goa

按Ctrl+C退出。

4.4 挂U盘播放mp3格式的歌曲

往U盘中拷入keai.mp3和quan.mp3两首歌曲,输入命令:

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

#madplay /mnt keai.mp3

在终端上将出现:

MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 20##-2003 Robert Leslie et al.

>> /mnt

input: read: Is a directory

>> keai.mp3

按Ctrl+C退出。

输入命令:

#madplay /mnt quan.mp3

在终端上将出现:

MPEG Audio Decoder 0.15.0 (beta) - Copyright (C) 20##-2003 Robert Leslie et al.

>> /mnt

input: read: Is a directory

>> quan.mp3

     Title: 全是爱

            Copyright (C) QQ音乐

    Artist: 凤凰传奇

     Album: 最炫民族风

      Year: 2009

      Genre: Other

第五章 性能与调试

这次工程训练主要环节还是在于Linux系统的安装及环境的编译,因为这次开发板里烧入的vivi就是要在这个环境里才能开发编程,在安装Linux系统是很多地方需要调试,例如终端的版本,字体显示等等。在硬件上音频放大电路的调试,因为做出板子后,在测试时明显是会有很多噪音,调节电位器就是在对板子进行调试,噪音大,或是声音太小,这些情况是多见的,这时我们我们就可以选择换电阻,或是调节电位器,来减小噪音,使音频达到最佳。

第六章  心得体会

      2周过去了,本次工程训练结束了,大学四年的工程训练也结束了.本次训练的第一天因为有事而来不了,那天我也经历了许多.其实就结果来说,要完成本次训练的任务的话所需的时间并不长,安装好LINUX系统,生成HELLO.C文件,完成电路版的焊接,把文件烧录进电路版就行.如果老师讲解一下具体过程和所需的步骤的话,本次训练真的是会完成的很快。但可能这样我们就不会自己去探索LINUX操作系统的操作方法和烧录软件的应用了吧.那样所学到的东西就只有完成本次训练目的所需要的最少的知识.生成HELLO.C文件这任务时,是2楼这组 前5个完成的,感觉很有优越感,也要感谢下教了我很多的那位同学.(- -,其实完成训练目的后一直在逛网站)

      最后次工程训练结束了,也标志着我们大学的生涯快结束了.大学3年,想想还真是打了不少酱油.可能我真是太懒了吧.还有剩下的一年时间.我要把自己的信念坚持下去.

第七章参考文献

1、深圳芯控科技有限公司编,EM-SBC2410用户手册,20##年6月

2、黄丽娜、管佩森、陈彩可著,Red Hat Linux 9.0基础教程,清华大学出版社,2004

3、马忠梅、李善平、康慨,叶楠著,ARM&Linux嵌入式教程,北京航天航空出版社,2004

4、于明、范书瑞、曾祥烨编著,ARM9嵌入式系统设计与开发教程,电子工业出版社,20##年9月。

工程训练成绩评定表

专业:  自动化   班级:08自动化  学号:7021308032  姓名   周以庆        

时间: 20## 年 5 月  14日

更多相关推荐:
工程训练报告答案

工程训练实习报告1、制造毛坯的材料成形方法主要有哪些?答:铸造、锻造、粉末冶金、挤压、轧制、拉拔、压铸、冷镦、冷挤压等2、钢在热处理过程中保温的作用是什么?答:(1)钢材都有一定的厚度,加热时往往速度比较快,当…

工程训练总结心得及报告

工程训练实验报告课程:工程训练学院:国防科技学院专业:辐射防护与环境工程姓名:黄顺立学号:20xx0566日期:20xx年x月x日星期二半学期的工程训练结束了,实习中对铣、车和热加工有了从来没有过的认识,看着…

工程训练实习报告

两周的工程训练实习已经结束,虽然在实习期间虽然很累、很苦,但我却感到很快乐!因为总的来说这次两周的实习活动是有趣的,并且它必将影响我今后的学习工作。我想在将来的岁月里恐怕不会再有这样的机会,在短短的时间内那么完…

西南科技大学工程训练总结报告

工程训练实习总结报告课程:工程训练D专业:电子信息工程班级:电子1班姓名:黄华日期:20xx年x月x日工程训练实习总结报告工程训练可以说是我们进入大学第一次近距离接触生活,第一次用自己的双手制作一些作品。虽然说…

工程训练实习总结报告(1)

工程训练D实习总结报告课程:工程训练D学院:环境资源学院专业:环境工程1101学号:20xx6620姓名:刘晓静日期:20xx年x月18工程训练D实习总结报告日这学期我们开设了工程训练D这门课程,在这门课程中涉…

工程训练报告

科学技术学院SCIENCEampTECHNOLOGYCOLLEGEOFNANCHANGUNIVERSITY工程训练报告REPORTONENGINEERINGTRAINING题目数据采集的实现与存储学科部系专业班...

工程训练实习总结报告

20xx20xx年度工程训练实习总结报告专业环境工程班级环境1101姓名李筱玥学号20xx9200时间20xx年12月20日工程训练实习总结报告课程工程训练D班级环境工程1101经过这一学期的工程训练实习我很明...

浙大 《工程训练》学习报告

工程训练学习报告一数控加工模块4的学生作品中图片请回答1图中的鼠标和人体骨骼模型所依据的真实数据应该采用何种设备何种方法获取为什么答激光扫描仪或者X射线断层成像这些3D扫描技术进行尺寸测量这些测量数据通常被认作...

工程训练大赛结构设计报告

5.相关图文底板图前轴图同步带轮图详细信息下载完可见

自动化工程训练报告

自动化工程训练设计报告学院信息科学与工程学院班级姓名学号指导老师时间20xx年9月7日目录一设计课题名称及要求2二设计思想和实施方案221硬件部分3211步进电机3212单片机及其他硬件电路5三硬件电路原理图及...

万用表工程训练报告

目录摘要3第一章MF47型万用表的结构简介411MF47型万用表的外形结构图412MF47型万用表结构介绍4第二章MF47型万用表的工作原理521MF47型万用表工作原理图522MF47型万用表各档工作原理分析...

工程训练安全报告

工程训练之安全报告工程训练作为一项实践性课程而非传统的理论课程它需要学生自己亲自动手去饯行课程中的任务所以这就注定了它无法摆脱一些安全事故所以学生们必须把安全放到第一位纪川大校史记载每年川大工程训练都会发生一些...

工程训练报告(38篇)