*课程名称:* *嵌入式系统实践*
*项目名称:* *智能多媒体影音系统*
2024 年 12 月 1****9 日
*目 录*
参考文献 3*1*
*1**课程设计目的*
*(1)掌握该门课程的主要知识点*
a. 嵌入式系统硬件知识:Linux基本命令的使用、vi编辑器的使用、GCC和GDB的使用等,掌握嵌入式系统的硬件架构,包括微处理器、存储设备、接口等部件的工作原理和相互连接方式。例如,理解 ARM 处理器如何通过 USB 接口读取外部存储设备中的多媒体文件
i. 熟悉各种多媒体硬件设备的操作,如音频编解码器、视频显示控制器等。掌握如何设置音频编解码器的采样率、声道数等参数,以及如何调整视频显示控制器。
b. 嵌入式软件开发技能:掌握嵌入式操作系统的基本操作和编程接口。在Linux中,要掌握如何在嵌入式 Linux 系统中进行进程管理、文件系统操作和设备驱动程序的使用。比如,学会使用 Linux 系统调用实现多媒体文件的读取和写入操作。
i. 熟练运用编程语言(如 C、C++)进行嵌入式软件开发。掌握数据结构和算法在嵌入式环境中的应用。同时,要能够编写高效的代码来实现多媒体文件的解码、播放控制等功能。
c. 系统集成与调试技术:掌握将硬件和软件集成在一起的方法。了解如何将多媒体硬件设备与嵌入式软件系统进行正确的连接和配置,确保它们能够协同工作。
i. 掌握嵌入式系统的调试技巧,包括使用调试工具(如串口调试工具等)来排查硬件故障和软件错误。例如,当点击6818开发板触屏面板时,能显示出点击的屏幕的坐标。
*(2)学习了解设计开发中遇到的知识*
a.先进的多媒体技术:学习多媒体文件格式(如 MP3、MP4、bmp等)的编码和解码原理。例如,当6818开发板储存内存不足时,会删除多余的材料,当视频播放不了时,给6818开发板安装mplayer,了解6818开发板所用的文件格式、大小等参数。
b.智能交互技术:学习智能用户交互方式,如触摸屏交互技术。对于触摸屏交互,要学习触摸屏的工作原理(如电容式触摸屏的感应原理)和相应的软件驱动开发。学习如何将这些智能交互技术集成到多媒体影音系统中,为用户提供更加便捷和个性化的操作体验。例如,通过多个按钮指令来控制多媒体播放、暂停、切换。
c.项目管理与文档撰写方法:学习项目管理的基本流程和方法,包括项目计划制定、任务分配、进度跟踪和质量控制。例如,学会使用ps等软件来设计各个页面,利用课程进度来明确各个阶段的任务和时间节点。学习撰写项目文档。了解文档的规范格式和内容要求,如在需求文档中详细描述系统的总体实现方案、功能需求、性能需求和用户界面需求;在设计文档中阐述系统的总体架构、硬件设计和软件设计方案。
*(3)提高动手能力和思维能力*
a.系统性能优化能力:提高对嵌入式系统性能瓶颈的分析能力。学会通过性能监测工具(如系统性能监视器)来识别系统在多媒体播放过程中的性能瓶颈,例如,是 CPU 占用率过高、内存带宽不足还是 I/O 传输速度慢。提升系统性能优化的技巧。根据性能瓶颈分析的结果,采取有效的优化措施。如通过优化算法来降低多媒体解码的 CPU 占用率,采用缓存技术来提高内存访问效率,或者优化硬件接口的通信协议来加快 I/O 传输速度。
b.复杂问题解决能力:提高在复杂的嵌入式多媒体系统环境中解决问题的能力。当遇到多媒体文件无法播放、音频视频不同步、智能交互功能失效等复杂问题时,能够运用系统的知识和方法进行深入分析和解决。增强在面对硬件和软件兼容性问题时的应对能力。例如,当更换了一种新的音频或界面后,能够快速调整软件驱动程序和系统配置,保证音频功能的正常实现。
c.创新思维与实践能力:提高创新思维能力,能够在传统多媒体影音系统的基础上提出新颖的功能和应用场景。增加了歌单、选歌图示。提升将创新想法转化为实际产品的实践能力。学会进行可行性研究、技术选型和原型开发,将创新的功能和应用场景逐步实现并集成到多媒体影音系统中。
*(4)培养成员科学素养*
a.团队合作精神:培养团队成员之间的协作和沟通能力。在智能多媒体影音系统项目中,硬件设计人员、软件编程人员、测试人员等需要密切配合。通过定期的团队会议、技术交流等活动,促进成员之间的信息共享和技术合作。
b.工程实践素养:培养严谨的工程实践态度。在设计开发过程中,严格遵守工程规范和标准,注重细节,确保系统的质量和可靠性。例如,在软件代码编写时,要进行代码规范检查,确保代码的可读性和可维护性。
*2**课程设计题目及要求*
我们小组选择的项目是智能多媒体影音系统。
在该系统中,我们要实现数码相册、音乐播放器、视频播放器、团队信息等主要功能,利用触摸屏事件控制音视频播放器 。
**a.数码相册功能:**要求实现可读出并清晰显示出数码照片,并且能做到自由切换上一张、下一张数码照片及退出数码相册。
**b.音乐播放器功能:**要求实现可读出、清晰播放mp3格式文件,并且能做到通过歌单自由选择音乐、播放及暂停、切换上、下一首音乐。
**c.视频播放器功能:**要求实现可读出、清晰播放mp4格式文件,并且能做到播放及暂停、快进及后退视频、切换上、下个视频。
**d.团队信息功能:**主要显示团队成员信息,提高小组凝聚力。
*3**课程设计报告内容*
*3.1**系统总体实现方案*
该智能多媒体影音系统是基于嵌入式开发板构建的,旨在实现一个功能全面、操作便捷的多媒体播放平台。系统集成了相册、音乐播放器、视频播放器和团队信息展示四个模块,用户可以通过触屏交互方式,实现对多媒体内容的浏览、播放和管理。系统的设计目标是提供一个稳定、高效且易于使用的多媒体应用体验,满足用户日常娱乐和信息展示的需求。
*系统功能设定*
数码相册:能够读取并清晰显示存储在设备中的数码照片,支持上一张、下一张切换以及退出相册等操作。
音乐播放器:支持播放mp3格式的音乐文件,提供播放、暂停、停止、上一首、下一首、音量增减等基本播放控制功能,并可通过歌单自由选择音乐。
视频播放器:支持播放mp4格式的视频文件,具备播放、暂停、快进、快退、切换视频、音量增减等功能,为用户提供流畅的视频观看体验。
团队信息:展示项目团队成员的姓名、学号。
*系统实现所用技术方案*
l 硬件平台选择:采用GEC6818开发板作为系统的核心硬件平台,该开发板基于ARM Cortex-A53处理器,具备丰富的接口和强大的处理能力,能够满足多媒体数据处理和显示的需求。
l 操作系统部署:运行嵌入式Linux操作系统,利用其稳定性和丰富的开发资源,为系统的开发和运行提供良好的环境。
l 软件开发流程:主要使用C语言进行系统开发,结合Linux系统调用和嵌入式编程接口,实现对硬件资源的高效管理和多媒体功能的开发。开发过程中遵循模块化设计原则,将系统划分为多个功能模块,每个模块负责特定的功能实现,便于后期的维护和扩展。
l 用户界面设计:针对触屏交互特点,设计简洁直观的图形用户界面,采用图形化元素和触摸控件,如按钮、图标等,实现用户与系统的便捷交互,提升用户体验。
l 文件系统管理:使用嵌入式Linux文件系统,合理组织和存储多媒体文件,如将图片、音乐、视频等文件分类存放在不同的目录中,并为文件系统提供必要的权限管理,确保文件的安全性和可访问性。
l 系统启动与加载:采用U-Boot作为系统的启动加载程序,负责初始化硬件设备、加载操作系统内核等任务,确保系统的顺利启动和运行。在系统启动过程中,通过配置U-Boot的启动参数,实现对系统启动流程的控制和优化。
*3.2**系统功能结构图*
3.2.1****系统实现所用技术
l 嵌入式硬件技术:深入理解GEC6818开发板的硬件架构,包括ARM Cortex-A53处理器、存储设备、触摸屏、LCD显示屏等部件的工作原理和相互连接方式,掌握如何通过硬件接口读取外部存储设备中的多媒体文件。
l 嵌入式操作系统技术:熟悉嵌入式Linux操作系统的操作和编程接口,掌握进程管理、文件系统操作、设备驱动程序的使用,实现多媒体文件的读取、写入和管理。
l 多媒体处理技术:学习多媒体文件格式的编码和解码原理,掌握音频编解码器、视频显示控制器等多媒体硬件设备的操作和设置,实现多媒体文件的解码、播放控制等功能。
l 智能交互技术:研究触摸屏的工作原理和软件驱动开发,将智能交互技术集成到多媒体影音系统中,为用户提供便捷和个性化的操作体验。
l 系统集成与调试技术:掌握硬件和软件的集成方法,确保多媒体硬件设备与嵌入式软件系统的协同工作,同时运用调试工具排查硬件故障和软件错误,提高系统的稳定性和可靠性。
l 内存映射技术:了解内存映射的基本原理和实现方法,通过mmap()函数将LCD设备映射到内存,实现对显示屏的直接操作,提高显示效率和响应速度。
l 文件系统操作技术:掌握嵌入式Linux文件系统操作接口的使用,如open()、read()、write()等函数,实现对多媒体文件的读取、写入和管理,确保文件操作的正确性和高效性。
l Bootloader技术:了解Bootloader的定义、结构框架和启动模式,掌握U-Boot的移植和配置方法,确保系统的顺利启动和运行。
*3.3* *系统用例描述*
该软件拥有功能完善的音频播放模块,能实现基本的播放、暂停、停止、快进、后退等操作。在用户界面设计上,采用图形化界面,简洁直观且易于操作,通过触摸屏或按键操作均可实现便捷的交互,显示模块可实时呈现音频播放的曲目信息、播放进度、视频的播放状态、画面信息等。
*3.3.1**用例列表*
表1用例列表
用例编号 | 用例名称 | 描述 | 参与者 |
---|---|---|---|
UC001 | 相册 | 用户点击相册查看照片 | A、B |
UC002 | 音频播放器 | 用户点击音频播放器播放音频 | A、B |
UC003 | 暂停/开始 | 用户点击按键控制音频/视频 | A、B |
UC004 | 上一页/下一页 | 用户点击按键转换音频/视频 | A、B |
UC005 | 视频播放器 | 用户点击视频播放器播放视频 | A、B |
UC006 | 快进/倒退 | 用户点击按键控制视频 | A、B |
UC007 | 音量 | 用户点击按键控制音量 | A、B |
UC008 | 关于我们 | 用户点击关于我们查看开发人员信息 | A、B |
UC009 | 返回主页 | 用户点击左上角按键返回主页 | A、B |
注:A:用户 B:管理员
*3.3.2* *U**C001*
表2相册用例描述
用例号 | UC001 |
---|---|
用例名称 | 相册 |
角色 | 用户、管理员 |
用例描述 | 用户点击相册查看照片 |
参与者 | 用户、管理员 |
前置条件 | 进入主页面 |
后置条件 | 点击相册图标进入相册 |
基本路径 | 1. 点击屏幕进入主页面2. 点击相册图标3. 进入相册4. 点击屏幕查看照片 |
*3.3.3* *UC002*
表3音频用例描述
用例号 | UC002 |
---|---|
用例名称 | 音频播放器 |
角色 | 用户、管理员 |
用例描述 | 用户点击音频播放器播放音频 |
参与者 | 用户、管理员 |
前置条件 | 进入主页面 |
后置条件 | 点击音频播放器图标进入音频播放器 |
基本路径 | 1. 点击屏幕进入主页面2. 点击音频播放器图标3. 进入音频播放器4. 点击开始播放音频 |
*3.3.4**UC003*
表4暂停/开始用例描述
用例号 | UC003 |
---|---|
用例名称 | 暂停/开始 |
角色 | 用户、管理员 |
用例描述 | 用户点击开始/暂停控制音频/视频 |
参与者 | 用户、管理员 |
前置条件 | 进入音频/视频播放器 |
后置条件 | 点击暂停/开始图标控制音频/视频 |
基本路径 | 1. 点击屏幕进入主页面2. 点击音频/视频播放器图标3. 进入音频/视频播放器4. 点击开始/暂停控制音频/视频 |
*3.3.5**UC004*
表5上一页/下一页用例描述
用例号 | UC004 |
---|---|
用例名称 | 上一页/下一页 |
角色 | 用户、管理员 |
用例描述 | 用户点击上一页/下一页转换音频/视频 |
参与者 | 用户、管理员 |
前置条件 | 进入音频/视频播放器 |
后置条件 | 点击上一页/下一页转换音频/视频 |
基本路径 | 1. 点击屏幕进入主页面2. 点击音频/视频播放器图标3. 进入音频/视频播放器4. 点击上一页/下一页转换音频 |
*3.3.6**UC005*
表6视频播放器用例描述
用例号 | UC005 |
---|---|
用例名称 | 视频播放器 |
角色 | 用户、管理员 |
用例描述 | 用户点击视频播放器查看视频 |
参与者 | 用户、管理员 |
前置条件 | 点击视频播放器图标 |
后置条件 | 进入视频播放器 |
基本路径 | 1. 点击屏幕进入主页面2. 点击视频播放器图标3. 进入视频播放器4. 查看视频 |
*3.3.7**UC006*
表7快进/倒退用例描述
用例号 | UC006 |
---|---|
用例名称 | 快进/倒退 |
角色 | 用户、管理员 |
用例描述 | 用户点击快进/倒退控制视频 |
参与者 | 用户、管理员 |
前置条件 | 点击视频播放器图标查看视频 |
后置条件 | 点击快进/倒退控制视频 |
基本路径 | 1. 点击屏幕进入主页面2. 点击视频播放器图标3. 进入视频播放器4. 点击快进/倒退控制视频 |
*3.3.8**UC007*
表8音量用例描述
用例号 | UC007 |
---|---|
用例名称 | 音量 |
角色 | 用户、管理员 |
用例描述 | 用户点击音量键控制视频音量 |
参与者 | 用户、管理员 |
前置条件 | 点击视频播放器图标查看视频 |
后置条件 | 点击音量键控制视频音量 |
基本路径 | 1. 点击屏幕进入主页面2. 点击视频播放器图标3. 进入视频播放器4. 点击音量键控制视频音量 |
*3.3.9**UC008*
表9关于我们用例描述
用例号 | UC008 |
---|---|
用例名称 | 关于我们 |
角色 | 用户、管理员 |
用例描述 | 用户点击关于我们查看开发人员 |
参与者 | 用户、管理员 |
前置条件 | 点击关于我们图标 |
后置条件 | 查看开发人员 |
基本路径 | 1. 点击屏幕进入主页面2. 点击关于我们图标3. 查看开发人员 |
*3.3.10**UC009*
表10返回主页用例描述
用例号 | UC009 |
---|---|
用例名称 | 返回主页 |
角色 | 用户、管理员 |
用例描述 | 用户点击左上角按键返回主页 |
参与者 | 用户、管理员 |
前置条件 | 点击左上角 |
后置条件 | 返回主页 |
基本路径 | 1. 点击屏幕进入主页面2. 点击任意图标3. 点击左上角4. 返回页面 |
*3.4* *系统实现*
我们整个系统主要包含相册,音乐播放器,视频播放器,团队信息展示四大模块。
由一个主方法(main)为入口,四个功能分别另外封装成模块。
每个模块下都是先识别触摸屏位置,再判断是否对应某个方法(功能),若是这进入该方法(功能)并继续完成相对于的功能。
主要先导入各个模块的头文件
然后在main方法中先定义每个模块的目录,和初始化显示屏及其相关配置
接着就是定义每个模块和每个模块具体功能的对应触摸屏位置,用于实现交互
如音乐播放器功能
首先是显示菜单页,将音乐播放器的图标放在对应的坐标位置上,然后实现了音乐播放器的点击入口,通过获取触摸屏的坐标判断是否点击该功能,其中ts_x,ts_y的范围可以看作是一个按钮。
接着在内循环中又继续定义该音乐播放器的相关功能,如开始播放,上一首,下一首,停止音乐,继续音乐等,原理和上述一样,先通过获取触摸屏的坐标判断,然后再调用相关模块的相关方法实现功能。
其余模块的实现原理也大致相同,就不再一一展示。
*3.4.1**相册功能*
相册功能的核心代码如下
该功能主要是先获取了bmp图片的数据,再将BGR数据转换成ARGB数据,最后再将ARGB数据写道开发板显示屏上
其次就是打开显示屏方法,其主要目的是为了打开显示屏和申请映射内存的空间
*3.4.2**音乐播放器功能*
音乐播放器中主要包含4个功能,即开始音乐,结束音乐,暂停音乐和继续音乐四大功能
四大功能主要都是通过system方法执行相关的shell命令实现
*3.4.3**视频播放器功能*
视频播放器模块主要包含了创建并打开管道文件方法,打开视频方法,发生控制命令到管道中和关闭管道文件方法
首先是创建并打开管道文件方法,该方法主要是先检查是否有管道文件,没有即创建
接着再打开管道文件进行相应操作
然后是打开视频方法,主要是利用管道文件和字符串拼接并通过system方法执行shell命令实现
接着是发生命令到管道中,该方法主要是集合了视频播放器的不同功能,通过cmd判断
分别是视频退出,视频暂停/继续,增加/减少音量,快进/快退6秒的功能
*3.4.4**团队信息功能*
团队信息功能主要是对我们小组成员的组成进行展示
是基于图片功能实现的,这里就不再赘述。
*4**总结*
*4.1项目总结:*
经过团队的共同努力,本项目成功研发出一款基于嵌入式系统的智能多媒体影音系统,其成果与亮点颇丰。在功能层面,数码相册模块不仅实现了对 BMP 格式数码照片的高效读取与清晰呈现,还为用户提供了便捷的浏览体验,支持无缝切换至上一张或下一张照片,以及随时退出相册的功能,使用户能够随心所欲地欣赏和管理个人照片集。音乐播放器功能同样表现出色,它支持主流的 MP3 格式音乐文件,用户可轻松实现播放、暂停、停止等基本操作,还可通过精心设计的歌单界面自由选择喜爱的音乐,享受个性化的音乐播放服务,同时,音量增减功能的加入,让用户能够根据实际需求调节音量大小,获得更佳的听觉体验。视频播放器功能更是亮点突出,它能够流畅播放 MP4 格式视频文件,提供了丰富的播放控制功能,如播放、暂停、快进、快退等,用户可以随心所欲地掌控视频播放进度,切换视频功能则让用户在不同视频间切换观看变得简单快捷,音量调节功能的配备,同样让视频观看过程更加舒适。此外,团队信息展示功能的实现,不仅增强了团队凝聚力,还为用户提供了直观了解项目开发团队的窗口,展示了成员的姓名、学号等关键信息。在技术应用方面,项目精心选择了 GEC6818 开发板作为硬件平台,其基于 ARM Cortex-A53 处理器的强大性能,为多媒体数据的高效处理和稳定显示提供了坚实基础;嵌入式 Linux 操作系统的部署,凭借其卓越的稳定性和丰富的开发资源,为系统开发和运行营造了良好环境,确保了系统的长期稳定运行;软件开发全程采用 C 语言,结合 Linux 系统调用和嵌入式编程接口,实现了对硬件资源的高效管理和多媒体功能的精准开发,模块化设计原则的遵循,使得系统结构清晰,各功能模块独立且易于后期维护与扩展。用户界面设计上,针对触屏交互特点,精心打造了简洁直观的图形用户界面,运用图形化元素和触摸控件,如按钮、图标等,实现了用户与系统的高效便捷交互,显著提升了整体用户体验。总而言之,本项目成果丰硕,成功满足了用户在日常娱乐和信息展示方面的多样化需求,为嵌入式多媒体系统领域贡献了一款实用、高效、易用的优秀产品。
参考文献
[1] 黄翔、王陆唐、刘一清.《嵌入式系统设计与实践》[M]. 清华大学出版社,2011.
[2] 贺丹丹、张帆、刘峰.《嵌入式Linux系统开发教程》[M]. 清华大学出版社,2010.
[3] 谭浩强.《C 程序设计》[M]. 清华大学出版社,2017