汇编课程设计
- 格式:pdf
- 大小:91.40 KB
- 文档页数:7
2013/2014学年第一学期计算机工程系课程设计报告书课程名称:汇编语言与微机原理课程设计班级:112054141学号:41姓名:汪智指导教师:李丽2013年12月21日一、实验设计方案实验名称:linux系统音乐播放器实验时间:2013.12.21小组合作:否□是?小组成员:汪智郭鸿岗何明慧任小东1、实验目的:初步认识linux系统,了解嵌入式系统开发流程与框架,以及ARM基本知识。
2、实验设备及材料:笔记本、多媒体、linux虚拟机、嵌入式开发板3、理论依据:嵌入式系统是用来控制或者监视机器、装置、工厂等大规模系统的设备。
嵌入式系统以应用为中心、以计算机技术为基础、软硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
(1)、C开发经验条件:Linux方法:主要是掌握ANSI C编程(不包括gtk,qt等图形可视化开发)(2)、网络、操作系统、体系结构条件:Linux,各种书,算法、例程。
方法:通过C编程实现简单的网络等知识的算法和过程。
(3)、嵌入式系统概念条件:各个嵌入式网站,讨论组,书籍方法:少提问,多留给自己思考的空间。
(4)、嵌入式开发实践条件:各种嵌入式系统开发工具的demo版,包括编译器,仿真器。
方法:一个是基于MCU/MDSP的嵌入式系统开发,另一个是像Palm OS,WinCE,uC/OS II等RTOS下的应用软件开发。
第一个是针对硬件开发而言的,而第二个则是针对软件开发而言的。
4、实验方法步骤及注意事项:(1)嵌入式及ARM的简单介绍A. S3C6400 S3C2400Samsung ARMB. RISC 精简指令集架构Reduced Instructions Set ComputerC. 嵌入式系统的概念“专用”“形态不同”“对其它系统进行智能控制”“应用为中心”“以计算机技术为基础”“软硬件可剪裁”D. 嵌入式与PC机的区别a. 嵌入式处理器(RISC):ARM PowerPC MIPSb. x86 处理器(CISC):酷睿Pentium AMD VIAc. Intel80286 80386 32bit80486 80586 32bitPentium 酷睿64bit(2)操作系统原理及具体管理(Linux)A. VMware Workstation的安装B. Linux系统简介C. Linux 系统的特点D.虚拟机的一些概念E. Linux的系统结构F.Linux的基本命令(3)Linux下的C程序开发(编译工具、反向工程、编译流程及原理等)A. 编译执行流程①编写源程序first.c②预处理阶段原料first.c 产品first.igcc -E first.c -o first.i编译阶段原料first.i 产品first.sgcc -S first.i -o first.s汇编阶段原料first.s 产品first.ogcc -c first.s -o first.o链接阶段原料first.o 产品firstgcc first.o -o first③执行代码./firstB. 开发工具①文本编辑器 geditGraphics Edit Linux系统上的文本编辑器②编译器 gccGNU Compiler Collectionsc、c++、java、fortain它比其它的编译器效率高30%以上gcc 集成预处理器、编译器、汇编器、链接器③调试器 gdb④项目管理器 makeVC++ 6.0 IDE 集成开发环境C. Embedded C 知识点串讲① C的各种版本gcc -std=c90 按照C90标准编译源码gcc -std=c99 按照C99标准编译源码gcc -std=gnu99 按照GNU99标准编译②字符指针常量不能被赋值③更多的知识点请参照发给大家的PDF文档④静态库和共享库 (Linux)静态库和动态链接库(Windows).dll dynamic linked library库(函数和其它资源)Linux系统中的库的一般格式:libxxxx.a 静态库libxxxx.so 共享库⑤创建第一个多文件的程序架构main.c calc.c calc.ha. 生成代码库的目标程序gcc -c calc.c -o calc.ob. 创建静态库ar -crv libcalc.a calc.oc. 编译生成最终的可执行程序gcc main.c -L. -lcalc -I.-L. 通知gcc在当前目录下找库-lcalc 通知gcc库名叫calc-I. 通知gcc头文件在当前目录下(4)Linux下的系统开发(系统功能调用)A. 项目项目的组织架构B.Linux系统调用(调用函数)程序员利用系统提供的API访问系统的功能,从而使用操作系统管理的各种资源。
播放声音文件用到的系统调用函数如下:open() 打开声卡打开文件ioctl() 用于设置系统设备参数,改变设备运行状态, 是与系统设备进行通信的最重要的函数read() 从设备或文件中读取数据write() 往设备或文件中写入数据C. MP3 原理Mp3的一些重要参数:声道、采样率、位速声音是模拟量,计算机只能保存离散量,所以声音在计算机中保存需要压缩,会涉及到采样的概念。
一个声道16bit立体声就是双声道D. 声音播放的基本工作流程a. open()打开声卡b. ioctl()设置好声卡的读取格式包括声道、比特率、播放速率c. open()打开声音文件d. 循环读取read()数据到缓存中再写入声卡设备,驱动声卡发声E. 项目实施:分小组进行开发,开发良好的用户交互界面,完成《ARM平台下的Linux系统音乐播放程序》5.实验数据处理方法:A. ARM平台与x86平台采用不同的指令系统,故x86下编译的音乐播放器无法在ARM平台上直接运行,需要进行交叉编译。
交叉编译采用arm-linux-gcc编译器C . 使用arm-linux-gcc 编译音乐播放器,并移植到2440 arm开发板上播放音乐Arm-linux-gcc pcm_mp3.c -o arm_mp3直接拷贝到arm开发板上,利用shell环境运行即可6.参考文献:《数字电路技术》《微机原理与接口技术》《计算机体系结构》《Linux操作系统》《Embedded C》《Linux系统高级开发》《ARM电路与原理》《ARM汇编与编程》《系统的构建与移植》《驱动程序开发》《Embedded C++面向对象》《QT平台图形编程》《SQLite数据库系统开发》二、实验报告1、实验目的、设备与材料、理论依据、实验方法步骤(同实验设计方案)2、实验现象、数据及结果①gcc编译成功②./执行得结果Linux系统音乐播放器开发成功,能成功播放本地音乐3、对实验现象、数据及观察结果的分析与讨论:open() 打开声卡打开文件ioctl() 用于设置系统设备参数,改变设备运行状态, 是与系统设备进行通信的最重要的函数read() 从设备或文件中读取数据write() 往设备或文件中写入数据Mp3的一些重要参数:声道、采样率、位速、声音是模拟量,计算机只能保存离散量,所以声音在计算机中保存需要压缩,会涉及到采样的概念。
一个声道16bit 立体声就是双声道声音播放的基本工作流程a. open()打开声卡b. ioctl()设置好声卡的读取格式包括声道、比特率、播放速率c. open()打开声音文件d. 循环读取read()数据到缓存中再写入声卡设备,驱动声卡发声4、结论:本次实验熟悉Linux开发环境,学会基于Linux开发环境的配置和使用。
学习了在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置,下载已经编译好的文件到目标开发板上运行。
学会使用Linux的MP3歌曲插播和速率调试,了解嵌入式开发的基本过程。
5、实验总结1)本次实验成败之处及其原因分析:成功之处及原因:本次实验最终得以成功并完成插播歌曲和MP3功能的实现,要归功于小组四位成员的共同努力。
失败之处及原因:但是实验中我们小组遇到了一些困难,无法暂停正在播放的歌曲和调控播放速率。
2)本实验的关键环节及改进措施:关键环节:如何在Linux系统下完成ARM的开发和移植,并确保如何在Linux系统下输入代码以致完成MP3功能的实现;改进措施:Linux系统中插入已经做好的界面内容,其后在3秒内跳转到MP3功能页面,并可以在系统下完成歌曲播放调速等功能。
3)对实验的自我评价:由于在此课程设计之前接触到过有关于linux系统与嵌入式,以及对C语言有一定的基础,所以此次实验对我来说也相对于比较简单,难度不大,也比较迅速的完成了课程设计的基本要求。
此次实验也加深了我对嵌入式系统以及其应用的了解。
指导老师评语及得分:签名:年月日。