最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于GEC6818开发板硬件平台的嵌入式电子相册

IT圈 admin 97浏览 0评论

2024年2月8日发(作者:殳冰双)

题目:基于GEC6818开发板硬件平台的嵌入式电子相册

摘 要

电子相册,在我们日常生活中主要存储一些自己的数字照片,随着电子产品日益更新换代,电子相册也不仅仅用于存储照片,可以做到存储文档、播放视频、阅读电子书、甚至玩大型游戏,俨然成为了多媒体娱乐终端设备。其中硬件功能的升级换代功不可没,性能强大的芯片支持和存储设备使其不断成长。而本次设计基于嵌入式LINUX系统的电子相册,就是一种在Linux嵌入式系统下的使用GEC6818开发板实现人机交互的集照片显示、视频播放功能和音乐收听等功能的多功能电子相册,此次使用的ARM芯片GEC6818开发板具有强悍的性能,具备许多市场上开发板常见功能接口,如触摸屏、VGA、SD卡、音频、RS串口等接口,可用于开发linux、安卓等系统。目前市场上的主流电子相册软件都适用于手机和平板等终端设备,软件占用的内存较多、对硬件的要求高所以设计一个功能众多且体积较小的嵌入式Linux电子相册很有意义。嵌入式系统作为新时代新兴系统,其前景什么广阔。它具有操作简洁、方便、提供友好的图形GUI和图形界面,的优点,对入手学习的新手十分友好,从应用上讲现如今VR可视化设备、无人驾驶、智能家居等等新兴技术日复一日的出现在我们的生活中,它们都是智能电子产物里嵌入式技术的代表作。Linux则是一种自由度非常高和开放源码的类Unix操作系统,在大学生1

涯也是作为学习的重点放入众多工科学生的课程中,其庞大的使用群体和开放的体系和丰富资源使得Linux将是日后普及和推广的重点。

关键词:多功能电子相册;Linux;GEC6818开发板;嵌入式系统;

英文题目

Embedded electronic album based on gec6818 development board hardware platform

Abstract

Electronic photo album is mainly used to store some of our own digital photos in our daily

life. With the increasingly updated electronic products, electronic photo album is not

only used to store photos, but also to store documents, play videos, read e-books and even

play large games. It has become a multimedia entertainment terminal equipment. Among them,

the upgrading of hardware function is indispensable, and the powerful chip support and

storage device make it grow continuously. In this design, the electronic album based on

Embedded Linux system is a kind of multi-functional electronic album which uses gec68118

development board to realize human-computer interaction under Linux embedded system,

including photo display, video playback, music listening and other functions. The ARM chip

gec6818 development board used in this design has strong performance, and has many common

functional interfaces of development board in the market, such as Touch screen, VGA, SD

card, audio, RS serial port and other interfaces can be used to develop Linux, Android

and other systems. At present, the mainstream electronic album software in the market is

suitable for mobile phones, flat-panel and other terminal devices. The software occupies

more memory and requires high hardware, so it is very meaningful to design an embedded

Linux electronic album with many functions and small volume. As a new system in the new

era, embedded system has a bright future. It has the advantages of simple operation,

convenient, friendly GUI and GUI, and is very friendly to the novice who starts to learn.

2

From the application point of view, now VR visualization equipment, driverless, smart home

and other emerging technologies appear in our life day by day, they are the representative

of embedded technology in intelligent electronic products. Linux is a kind of UNIX like

operating system with very high degree of freedom and open source. It is also put into

the courses of many engineering students as the focus of learning in college. Its huge

user groups and open system and rich resources make Linux the focus of popularization and

promotion in the future.

Keywords: Multifunctional electronic album; Linux; gec6818 development board; embedded

system;

目录

1 前言 ............................................................................................................................................................ 1

1.1课题背景 .......................................................................................................................................... 1

1.2本设计的目的、意义及应达到的技术要求 ................................................................................... 1

1.3本设计在国内外的发展概况及存在的问题 ................................................................................... 2

1.3.1国内外的发展概况: ............................................................................................................ 2

1.3.2发展中存在的问题: ............................................................................................................ 3

1.4本设计应解决的主要问题 ............................................................................................................... 4

2.1总体设计 ................................................................................................................................................. 4

2.2程序设计 ........................................................................................................................................ 12

2.2.1 程序设计主要思路 ............................................................................................................. 12

2.2.2 核心问题分析 ..................................................................................................................... 12

2.3方案选择 ........................................................................................................................................ 20

2.3.1设计原理.............................................................................................................................. 19

3

2.3.2设计过程.............................................................................................................................. 21

3结论 ........................................................................................................................................................... 22

参考文献 ...................................................................................................................................................... 24

谢 辞 ............................................................................................................................. 错误!未定义书签。

附 录 .......................................................................................................................................................... 25

附录1 ................................................................................................................................................... 25

附录2 ................................................................................................................................................... 40

4

1 前言

近几年,计算机技术、电子技术、成像技术数字化、嵌入式技术、人工智能等技术的进步可谓是一飞冲天,这也意味着智能化时代逐步地然实现。观察近几年之后不难发现,特别是这些年来像苹果、小米、华为等大厂制出的手持设备十分的智能而且很受欢迎,像IPAD等平板电脑成为年轻人手中不可或缺的娱乐终端,而这类设备往往都具备电子相册和摄像等基础功能,而如今的年轻人也常常使用其记录自己的生活的每一刻,在大家的生活中起到举足轻重的作用。其中一般采用高性能处理器配合大屏的彩色液晶作为设计方案,在某些对数字信号处理速度或者对时序要求较高的场合还采用了多处理器相互配合工作的方式,例如ARM+DSP、ARM+FPGA 等。[4]

此次设计是以多媒体电子相册为大方向的,其中交互界面的设计为重点,简洁流畅的多功能电子相册为最终目标。采用基于ARM Cortex -M3 内核的GEC6818开发板 和7 英寸触摸显示屏通过虚拟机和ubuntu等软件实现图片的显示和切换,并且扩充了视频播放功能、音乐音频输出、无线接收传输文件等功能的设计与硬件实现,最终得到一

个以linux为系统的手娱乐终端。1.1课题背景

当下社会,电子相册作为许多智能设备的基础功能,在其中不起眼成为了它的标签。但是电子相册确实是早期的手机、mp3、mp4等电子产品的框架里不可或缺的功能,搭配拍摄功能几乎完美取代了数码相机,之所以不起眼是因为在这个快速发展的时代,电子早已潜移默化的成为人们生活的一部分了。不管是工作还是日常生活,记录着历史的变迁,时代的进步。此次研究的嵌入式电子相册系统,其体积框架往往小于市场上许多架构于安卓等系统的电子相册,十分具有研究的价值,有益于推动电子相册的发展。而其中的嵌入式系统和linux语言正是我们大学授课的一部分,不仅是对学业完成度的一种检验,更是对我技能知识的一种拔高。因此我设计了这个通过gec6818开发板硬件平台的多功能电子相册。

1.2本设计的目的、意义及应达到的技术要求

设计目的:本设计以现代手持设备娱乐多媒体终端为方向,采用基于ARM Cortex -M3 内核的GEC6818开发板 和7 英寸彩色液晶显示的触摸屏,完成对各种图片格式的解码显示且可以通过触摸显示屏切换其中的图像,扩充视频播放与音频输出的功能、无线接收传输文件、密码匹配解锁界面等功能,最终得到一个比较稳定的系统,本次设计出来的产品应该能实现实际功能,根据操作进行正确的动作,界面应该人性化且具有美观性,有一定的市场价值。

目前市场上的主流电子相册软件普遍体积庞大、占用内存多、可拓展性较差、硬件要求高所以开发一个运行速度快,占用空间小并且可拓展性强,对系统稳定的且功能实用的嵌入式Linux电子相册很有意义。

1

应该达到的技术要求:

1. 实现触摸屏上图片显示,具有相册的存储功能,切换图片显示点击屏幕左右两侧。

2. 实现视频的播放,可以触摸屏幕暂停和继续视频的播放,并且可以切换列表中上一个或者下一个视频。

3. 可以打开音频文件进行音频的播放,并且可以切换上一首或者下一首曲目,插入耳机进行收听。

4. 实现pc端与6818之间的无线wifi的传输电子文件的功能。

5. 给此次开机界面添加密码锁(拓展:进入界面后可修改任何六位数密码)。

1.3本设计在国内外的发展概况及存在的问题

嵌入式系统是一种特殊的面向应用的计算机系统,其软硬件可以根据具体的功能进行定制。其对每一个部件都有着严格的把控 ,例如成本、可靠性等等。随着电子技术和计算机行业的在市场上的发展,嵌入式已经成为电子技术以及计算机行业内重要的一员。嵌入式系统产业具有很大的关联度和良好 的市场前景,这也间接证明了其潜力的无限,之所以能有这样也归结于其自身的优质的支持开放性的体系结构。过去嵌入式系统较难普及的原因,是集成电路集成度和制造水平尚无法突破,但是现在国内外半导体IC设计企业己经可以生产出大量低成本的微型硅组件,并以此为基础发展出了许多可编程逻辑和微处理/控制器,这些组件可以用软件技术来实现或更改硬件功能,搭配特定的操作系统或用户接口,可以实现许多新型态应用,如PAD, STB、上网机等。[1]

然而随着计算机网络技术与数码产品的迅速发展,人们喜欢把自己喜欢的照片通过电脑来存储,这样使得电子相册理所应当的发展起来,人们渐渐地看到了电子相册这样一个巨大的商机, 所以各式各样与电子相册有关的网站渐渐发展起来。[2]

1.3.1国内外的发展概况:

19世纪末,随着计算机的问世,并且逐渐的更新换代,电子技术也开始蓬勃发展,电子相册也随之诞生了,刚开始也称之为数码相框,仅仅有着最基础的存储相片的功能。但是与传统的相册不同,它的可延展性十分高,根据现在电子相册的发展情况我们可以得知,电子相册不在局限于存储功能而拥有更多符合人们使用手持终端设备的拓展功能,例如视频播放和信息保留等,编辑也成为相册里最基本的功能之一,其中各式各样的多媒体服务更是让人眼花缭乱。尽管现在电子相册发展成为了趋势和潮流,不过传统相册仍是主流,仍是主导,在未来的几年或者更长时间,传统相册不会落伍于电子相册,因为两者都不能取代其一,而是需要结合发展的。

当前,我国电子相册发展前景仍然处于稳步上升阶段,因为近年来电子产品更新换代的速度快如闪电,市场需求自然地不断增大。在早期二十世纪初,MP3与MP4等数码随身听取得巨大的市场成功后,市场需求暴增,而功能不局限于存储相册并且能支持视频、游戏娱乐、图书阅读的便携式播放器逐渐成为消费者的心头好。在法国ARCHOS公2

司推出了首部MP4掌上影院后,众多企业均看好MP的发展态势,新一代MP4良好的发展前景和潜在的市场,成为移动数码产业的新亮点,吸引着众多厂商大力研发,并将其推向市场。[3]从此国内电子相册的发展也就不在仅仅局限在传统的电子相册中了,更多的是将它作为一个基础的功能嵌入进某一些手持的娱乐终端设备平台上。2007年后,老百姓普遍用上了手机这种嵌入式设备,它集成了摄影,通信,娱乐等功能。恰好其中的相册功能搭配摄影功能逐渐成为人们生活中不可或缺的记录生活的设备,而它也渐渐的代替了数码相机成为人们日常生活中存储相片与拍摄的机器。

随着各种计算机语言如java、linux、c等语言的诞生,诸如Windows、linux、mac等系统也随之产生,而电子相册也在不同系统有着不同的实现,通过软件的设计诞生不同功能的电子相册。其基础的存储功能随着科技的进步进入了‘云时代’,不同以往需要使用到拓展硬盘内存或者直接使用运行内存模块,例如苹果公司提供的云端服务iCloud可以将图像直接保存在他们公司的云端服务器中,需要时再通过网络下载,如今很多大型厂商也采取这种模式。近年来,国内的电子相册从最初的幻灯片形式,变成了以Flash动画为主的电子相册,不再是简单的照片之间的切换,其归类排版的功能也变得人性化。现如今的电子相册甚至根据客户的需求,添加特效动画、字幕等后期,使得整个相册变得更加的美观。对于电子相册人性化,国外也有了更大的突破,通过解码识别bmp等高质量图片,不单单是只能识别jpg一种格式。这样的改变致使数码相机不会成为拍摄的唯一选择。随着通信技术的发展,通过链接分享相册内的内容给好友欣赏也成为了家常便饭。

然而嵌入式系统的电子相册在新媒体技术也得到了长足发展,例如智能手机和平板电脑、监听设备等,它们都属于嵌入式电子相册的一种延伸。随着芯片技术的飞速发展,嵌入式系统的性能也在逐渐提升,其软硬件可剪裁的特性使得功能也越来越丰富。

1.3.2发展中存在的问题:

嵌入式的电子多媒体播放器在现在的发展中还是有许多问题的,相册功能已经十分完善不管是PC上的软件还是终端设备上的软件都具有相应的解码功能,对各种图片都有着相应的解码器,其中播放视频的功能并没有发展完全。在Linux系统上己经有Xmms, Xmovie, Xine,Realplayer, Quicktime,Mplayer等媒体播放器,其中既有Realplayer, Quicktinle为代表的商业软件,也有以Xine, Mplayer为代表的自由软件,但以上媒体播放器主要都是针对固定媒体类型与传输协议,具有比较强的专用性,如Xmms主要用于MIP3的播放,Xmovie主要支持MPG, MOV, VOB, MI2V等几种格式,Xine能支持MIP3, MIPEG-1, MIPEG-2、MSF等格式,不具备支持各种媒体格式的可扩展能力,其中,ReallNetworhs公司的RealPlaver与开源软件hlplayer具有较好的可扩展性,能支持多种格式。[5]

对于主流的流媒体编码算法(如RealNetworks公司的rn, Mlicrosoft公司的asf

wmv, wma以及知apple公司的mov ),都不属于国际标准,也未得到公开,此类媒体的移植还存在一些问题。目前,知apple, RealNetworks公司已基于各自流媒体编码算法开发了Linux版本的播放器,但是这些播放器支持的媒体类型都比较单一,特别对于Microsoft的各种流媒体类型都未进行很好地支持为了构建Linux平台上能够支持上述三个系列的流媒体播放器,国外已开展部分研究(国内还未见此类研究)。研究的技术路3

线可分为两种类型:一是通过‘WIN32 DLL plugin’调用 Windows下PE (Portlble

Executlble)格式的解码器。目前,Linux平台上集成化的播放器一般都采用这种方法,如遵循GNU GPL的播放器Xine与Mplayer,这两种软件都可支持包括asf格式的多种媒体的播放。然而,这种采用静态仿真的调用方式执行效率较低、可靠性差,而且在软件发布过程中存在版权问题。二是利用逆向工程(Reverse Engineering)来研究流媒体格式与编解码算法,这是流媒体编码技术移植的发展趋势。目前,人们已采用这种方法对alsf编码进行了一定分析。这种采用逆向工程的方法可获取解码器的源码,从而保证解码器的可移植性,但是该方法的难度与工作量较大。[5]

1.4本设计应解决的主要问题

拟解决的关键问题:

1. 每个窗口类的制作和设计,界面的返回键如何制作;

2. 怎么实现开机进入密码登录界面,输入密码错误时报错,在功能界面中如何修改密码;

3. 如何将图片显示设置成窗口大小,并且赋予相册搜索图片的功能;

4. 音乐播放器如何正常切换歌曲,如何对音频文件的路径进行设置,实现播放歌曲时快进和后退;

5. 怎么将无线传输文档通过外接wifi模块,与PC之间进行文件传输;

6. 如何让开发产品正常播放视频文件,如何编写它的切换程序;

2.1总体设计

本次设计总框架如下图1-1

4

本次设计

基于gec6818硬件平台

基于linux系统

使用到了lcd电容触摸屏模块与存储模块、和emmc模块等主要模块

使用QT更改交互界面和功能界面

实物的测试和检验功能完整性

使用虚拟机在ubuntu中通过vscode、gcc编译软件编写程序并移植QT到ARM中实现图片展示、视频播放与无线传输等功能。

通过软件发送可执行文件实现程序的运行

本次设计最终成品

总体设计框架图

2.1.1硬件电路设计

本次设计是以ARM 芯片GEC6818开发板为硬件平台,GEC6818开发板简介:

GEC6818是一款性能强劲的开发板,其核心为Cortex A53,属于主流智能产品常用的芯片,它采用三星S5P6818作为主处理器,运行主频可高1.4GHz。支持3D图形、可以播放高分辨率的高清视频,作为实现设计主要功能的基本性能。是因为其中的主处理器SPV540芯片的高性能图形引擎powerVR SGX540。开发板硬件总框图如下图2-1

5

2-1硬件总框图

本次使用的GEC6818控制系统中封装了很多模块,设计运用到最为重要的则是LCD触摸显示屏模块,因其可触控式液晶屏的功能实现了本次设计电子相册所需的最基本要求,并且拓展了触控操作屏幕的延展性。而GEC6818板载1GB DDR3内存,则作为运行linux系统的基本要求,DDR3性能优异也为流畅运行各种程序打好了基础。其中本次实现无线传输的wifi模块外接在USB串口上,其中主芯片系统控制原理如下图2-3和主要硬件总框图2-3。

6

图2-3主芯片系统控制原理图

内存模块

外接无线WIFI模块

触屏显示模块

ARM

Cortex-A53处理器

电源模块

主要硬件总框图

音频模块

Flash模块

2.1.2软件设计

本次设计用到的软件有虚拟机、Ubuntu、QT、vscode、secureCRT、gcc编译器等。

软件设计的步骤大致有以下几部分:

① 安装 fastboot烧写linux映像进入开发板。

下载并安装 secureCRT 工具,将开发板通过串口连接电脑,调节波特率11520和协议seral。开发板连接成功后显示启动信息, 配置完成如下图2-3:

7

图2-2配置完成图

接下来是进入 uboot 命令行模式,在 uboot 启动的 3 秒内按任意键, 执行命令fastboot,解压 fastboot 工具压缩包到一个目录下, 把 Linux 映像文件全部复制到该目录中。右键使用记事本编辑 Windows 脚本文件 。

最后在 secureCRT 终端下, 会打印出如下图2-4信息,说明烧写成功。

图2-4 linux系统烧写成功

② 在电脑上安装VMware Workstation并且新建虚拟机将光盘映像设置成自选。

③ 安装程序设计所需的编译器,编译器vscode、GCC交叉编译器。

④ 使用vscode编译并不会比QT自带的qmake方便,但基于本人习惯于vscode的编译环境,所以设计过程运用到了vscode。

8

其中C程序编写在本次设计所需过程1.在电脑上使用虚拟机运行ubuntu,运用

Linux命令。6818开发板的硬件平台搭建与交互。3.基于ubuntu使用vsode编写C代码,并使用arm-linux-gcc demo.c -o demo交叉编译器进行编译,因为在电脑上编程的C程序无法在开发板上正常运行,所以需要上述步骤。Vscode编程界面如下图2-5。

图2-5

⑤ QT安装完成后会自动打开QT-creator如下图2-6

图2-6

9

⑥ 为实现良好的人机交互体验,使用QT-creator开发各功能界面。在Qt creator界面中添加信号和槽函数的相连关系,同时在代码中添加connect函数来实现各功能界面。

图2-7

⑦ 本次设计所有功能的界面都是基于QT,并且本次实现视频播放是使用QT自带的ffmpeg解码,图片的显示也同理。使用QT-creator开发的软件,相同的代码在不经过修改的前提下就可以在其他的平台上运行,因为QT-creator支持包括 Linux/X11、Windows、Embedded Linux 在内的多种平台。[7]QT-creator开发过程如下图2-8

图2-8

10

⑧ 由于嵌入式平台的设备通常硬件配置较低,一般都不会在这个目标嵌入式平台上进行开发,而是在通用桌面系统平台上开发完成后,拷贝到嵌入式平台运行的。要能在 6818 平台上运行Qt 程序, 两个条件缺一不可: 一是 6818 平台上具有由 Qt

Embedded 开放源码包经过交叉编译移植后的 Qt 动态运行库, 二是本次我设计开发编写的 Qt 应用程序也经过交叉编译。所以说此次qt编程设计,还需要将qt移植到arm平台上。需要首先下载交叉编译器,然后编译qt源码,配置裁剪qt的功能和开发板上的相关资源匹配,然后qt的lib和板子同步上去后, 因为在qt上编写代码的时候需要链接板子上相关的lib配置编译器。其中Qt的移植包括步骤如下:

1. 配置,解压源码包到用户主文件夹中,编辑平台相关配置文件。修改其中内容为

QMAKE_CC = arm-linux-gcc

QMAKE_CXX = arm-linux-g++

QMAKE_LINK = arm-linux-g++

QMAKE_LINK_SHLIB = arm-linux-g++

然后进行 configure 配置操作。当它询问是否许可开放源码的植入选YES,配置完成。

2. 拷贝 Qt Embedded 库到 6818

通过 NFS 挂载 Ubuntu 共享的目录到/mnt 下, 然后解压移植好的 Qt Qt

Embedded 库到6818 的/usr/local 目录下。

[root@GEC6818 /]# mount -o nolock,tcp 192.168.1.196:/home/kitty/nfs_share /mnt

[root@GEC6818 /]# cd /mnt

[root@GEC6818 /]# tar Jxf -C /usr/local

3. 设置环境变量,这里改变的是6818 平台里面的 Qt 运行环境变量,在/etc 目录下有个profile 文件, 这个文件是 Linux 系统启动后会自动执行的脚本, 我们在这文件末尾添加内容:

export QTDIR=/usr/local/Qt-Embedded-5.7.0

export PATH=$QTDIR/bin:$PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins

export QT_QPA_PLATFORM_PATH=$QTDIR/plugins

export QT_QPA_PLATFORM=linuxfb

export QT_QPA_FONTDIR=/usr/share/fonts

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

#export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event0

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0

export QMLSCENE_DEVICE=softwarecontext

export QML2_IMPORT_PATH=$QTDIR/qml

11

保存退出后, 可以利用 source 命令让其立即生效, 重启开发板,此时设置好开发板的环境变量了。

⑨ 将开发好程序移植到6818开发板中实现ARM平台的功能。

2.2程序设计

2.2.1 程序设计主要思路

本次设计的程序主要是由几大部分组成 分别是

1.先通过QT-creator的做个桌面,主程序首先创建一个 QMain Window 类的对象,创建一个主窗口,划分出相册、视频播放器、无线传输、修改开机界面的密码等,从而用来切换那几个功能,设计一个点击对应功能的图标就创建一个线程执行对应的任务。并且设计一个可以总是存在并且浮动与界面的返回键,可拉动其位置。主界面的布局以及按键代码见附录1。

2.显示图片功能则是创建一个窗口,可以搜索图片目录。打开图片文件,图片根据后缀名解码然后再绘制到窗口上。创建两个按键,添加点击事件,最后实现点击切换图片。

3. 视频播放器:创建一个窗口来搜索视频目录。打开视频文件,使用ffmpeg解析视频数据流,添加滑块控件,设置滑块事件来切换播放位置。

4. 无线传输文档:打开文件,使用wifi通过tcp/ip协议把文件数据分块发送。

5. 密码开关:通过qt-creator创建输入框,输入密码后校验密码,成功则可以操作开关,失败返回上一级。

2.2.2 核心问题分析

本次设计核心部分是QT的程序开发对于硬件平台的推动,以下是对其中核心问题的分析

(1)密码锁匹配问题

设计主要实现开机提示输入密码,若密码正确直接进入功能选择界面若密码错误则提示“输入密码错误”。密码错误提示如下图2-10

12

图2-10

密码的实现最主要的是要用open读取中的数字并赋给一个数组,然后判断触摸屏输入位置,并将输入的数字存储在另一个数组,然后通strncmp(buf,pass,6)==0)比对输入数字串与中预设的数字是否相同,若相同则密码正确,不同则密码错误循环后继续输入密码直到密码正确,其中若输入的密码小于六位数则变成六位数的长度。

(2)显示图片

主要实现的功能包括:各类图片格式都可正常显示,触摸屏幕切换上一张或下一张图片。

截取主要函数进行分析,首先是图片显示区域的自适应问题,设置成图片缩放到new

QLabel的大小,使图片的大小随着窗口大小而改变。加载到然后是给按键定义点击事件,并且为了控制窗口的大小加弹簧QspacerItem,图片列表中上下布局调用main_layout的垂着布局,整个相册的框架显示基本可以实现,接收者参数可以设为 this 指针,其中如下代码

/* 图片显示区域 */

image_label = new QLabel();

image_label->setBackgroundRole(QPalette::Base);

image_label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

image_label->setScaledContents(true);

/* 显示和按键在上下布局 */

main_layout = new QVBoxLayout(this);

main_layout->addWidget(image_label);

/* 按钮 */

btn_prev = new QPushButton("上一张");

13

btn_next = new QPushButton("下一张");

/* 用于布局的弹簧 */

QSpacerItem* item_left = new QSpacerItem(75, 40, QSizePolicy::Expanding,

QSizePolicy::Minimum);

QSpacerItem* item_right = new QSpacerItem(75, 40, QSizePolicy::Expanding,

QSizePolicy::Minimum);

/* 按键水平布局 */

tool_layout = new QHBoxLayout();

tool_layout->addSpacerItem(item_left);

tool_layout->addWidget(btn_prev);

tool_layout->addWidget(btn_next);

tool_layout->addSpacerItem(item_right);

main_layout->addLayout(tool_layout);

/* 显示区域背景颜色 */

this->setLayout(main_layout);

this->setStyleSheet("background-color: rgb(167, 175, 159);");

/* 按键点击事件 */

connect(btn_prev, SIGNAL(clicked(bool)),

SLOT(on_click_btn_prev()));

connect(btn_next, SIGNAL(clicked(bool)),

SLOT(on_click_btn_next()));

}

相册最终框图如下图2-11

14

this,

this,

图2-11

(3)音乐播放

本次程序我们可以实现播放音乐、停止音乐、拉动进度条可实现歌曲的快进和后退、切换音源曲目。Mediaplayer本身编译自带了多种类型的解码器需,所以并不需要我而外在进行解码。先是对选择框和按钮框进行设置,判断触点和设置其坐标,形成一个音乐播放器的框架,创建MediaPlaer对象player = new QMediaPlayer;;接着就是选择播放音乐事件,调用connect()函数拖动进度条可发送事件到Player。以下截取的是播放音乐片段

//选择播放音乐事件

connect(widgetSearchFilter, SIGNAL(signal_current_select_file(QString)),

this, SLOT(on_signal_play(QString)));

connect(mview->buttonNext,

SLOT(on_signal_next()));

connect(mview->buttonPrev,

SLOT(on_signal_prev()));

编译在播放音乐的时候往往会使用多线程,所以由于开启了线程,我们必须使用QT中的QstackedWidget函数,父、子进程就能进行数据共享。完整代码见附录1

在Linux音乐播放界面中的窗口布局如下图2-12

SIGNAL(clicked()), this,

SIGNAL(clicked()), this,

15

图2-12

(4)播放视频功能

本次设计播放视频程序主要实现视频的播放与切换,根据视频文件放置的路径,设置它的播放路径,将文件添加进此路径中,然后设置列表的播放顺序设置循环;

/* 设置顺序播放模式 */

playerlist->setPlaybackMode(QMediaPlaylist::Sequential);

player->setPlaylist(playerlist);

然后启动视频输出窗口,显示视频播放界面。给按键添加“暂停”和“继续播放”的事件。我们自定义的 Button通过 用 connect 的方法连接两个槽信号。接着给设置暂停播放的图片一个if-else语句添加点击逻辑,若是点击一次暂停时则继续播放,播放时则继续暂停,分为两条语句,真假只执行其一。

/* 按键 */

this->buttonStart = buttonStart;

connect(buttonNext,&QPushButton::clicked,playerlist,&QMediaPlaylist::next);

connect(buttonPrev,&QPushButton::clicked,playerlist,&QMediaPlaylist::previous);

connect(buttonStart,&QPushButton::clicked,this,[=]{

if(player->state() == QMediaPlayer::PlayingState){

player->pause();

buttonStart->setIcon(QPixmap("://img/播放.png"));

16

}else {

player->play();

buttonStart->setIcon(QPixmap("://img/pause "));

}

完整代码见附录1

(5)无线传输

1)整体方向如下框图

无线传

Gec6818

无线网卡

Wifi信道

PC机

此次选择的wifi无线网卡的驱动在6818平台中并没有存在,所以使用前需对其驱动进行移植。移植后才可以在gec6818中使用无线网卡正常连接电脑外放出的的wifi,再通过securecrt软件配置射频出的ip地址进行传输文件,进入开发板中,程序设计核心逻辑如下:

1. 首先通过vim打开配置wifi连接的配置文件wpa_,配置可连接wifi的名称和密码,在本次设计中设置了两个个wifi。

ctrl_interface=__R=/var/run/wpa_supplicant

update_config=1

network={

ssid="lyd"

#psk="12345678"

psk=f86d64430e89fcf6a3846abec0c0779b6cae0e5cb7df532623000a20c254cd6e

}

network={

ssid="CMCC-T2Dz"

#psk="ahu8nyqv"

psk=3fcb220ebd44e845d0a50859c02340f96131c6cce0994b02608b1904e713d368

}

2. 对开机文件profile进行配置,让其开机即可连接wifi。且设置用户名root方便secureCRT的连接。

17

图2-13

3. 配置好相应的wifi后,开机后开发板自动连接电脑wifi,打开secureCRT对ip地址进行设置从而配置开发板,便可通过输入rz命令进行文件传输了。

配置wifi密码图2-14

完整代码见附录1

18

2.3.1设计原理

本次设计主要基于linux系统设计的一个嵌入式电子相册,而使用到的是ARM芯片,是Cortex-A53基于ARMv8-A架构。其设计的基本原理基于嵌入式系统的强烈的专用性,根据我本人设计需求可剪裁配置其硬件和软件。将硬件平台gec6818开发板与ubuntu和QT软件进行结合产生一个架构于linux系统的完整的嵌入式开发产品。其中完成此次设计的基本原理大概如下几点:

1、 高性能的gec6818的硬件开发平台给实验提供了一个基础,它的各个模块齐全,组成一个合格的嵌入式开发板,并且可以流畅的运行我们所使用的linux系统;

2、 嵌入式系统到的开发技术可以对软硬件剪裁设计出独一无二的产品;

3、 ubuntu这个操作系统作为linux先行版之一,它的界面十分友好并且集成了许多编译器工具,足以让我们的程序设计照班运行,并且linux自身具有优异的网络支持,不需要外挂TCP/IP协议,对于设计此次的无线网络传输有着得天独厚的优势;

4、 QT软件在其中作为现在嵌入式中常用的可视化框架的编译工具,不仅为本次设计先进行界面的绘制工作再基于事件进行编程,其中电子相册之所以能实现也是由于QT中自带的解码功能,对实现相册和视频播放功能相比其他软件较易实现。

综上所述此次设计基于linux系统的设计可行性十分的高,linux从外观上看,嵌入式系统像是一个“可编程”的电子“器件”,从功能上看,它是对目标系统(宿主对象)进行控制,使其智能化的控制器。[6]嵌入式系统之所以能完成本次设计是因为其实施特性并且嵌入式linux系统是集软硬件于一体的、可独立工作的计算机系统;本次设计通过虚拟机VMware Workstation,它提供用户体验是可以同时运行一些不同的系统操作例如Android等,并且进行开发测试和部署新型应用。所以我在此次设计选用的软件是因为其原理较为简单,容易实施和拓展。主要是通过软件的设计来达成自己的设计目的。

19

2.3方案选择

ARM系列

ARM9/9E系列

包含类型

ARM920T(经典)

ARM922T

ARM926Ej-S

ARM940T

ARM946E-S

ARM966E-S

ARM968E-S

VFP9-S

VFP10

ARM1020E

ARM1022E

ARM1026EJ-S

ARM1136J-S

ARM1136JF-S

ARM1156T2(F)-S

ARM1176JZ(F)-S

ARM11MPCore

Cortex-A(其中S5Pv210为经典,A8)

Cortex-R

Cortex-M

SC100

SC110

SC200

Sc210

StrongARM

XScale

MBX

向量浮点运算(Vector Floating Point)系列

ARM10E系列

ARM11系列

Cortex系列

SecurCore系列

其他合作伙伴产品

图2-6 ARM各系列处理器包含的类型

设计一个具有多项功能的电子相册方案众多,最早我是预估成本进行选择,而自己定下的预算太少发现很多自选的方案性能部分无法实现自己的需要,而最终通过性能和成本的两房考虑才得到了以下的一些方案从中选出了一个相对较适合自己的。最终考虑到的符合设计的主要设计方案:

一、 利用stm32单片机通过程序设计实现电子相册解决方案

二、 以FPGA 芯片等硬件为基础,而DSP则是实现动功能的算法编码。

三、 使用ARM核心的gec6818开发板设计出多功能相册。

第一种方案,stm32单片机的是以srm32F103RCT6芯片设计为方案,价格低,结构简单,实时性能很强劲,外设丰富、多媒体的编解码速度快是它的优点;该方案的缺点:拓展性较差;对无线传输和视频播放的实施不太好实现,二次开发不太可行。

第二种方案是由FPGA实现显示输出格式的算法转化,基于 Nios II 软核处理器的

SOPC 系统,从而实现一个简易并且系统稳定的电子相册。其中读卡部分,文件系统部分由DSP软件处理,其中的驱动由DSP的软件算法实现本次设计,利用的是FPGA 强大的并行处理能力、灵活性,性能稳定的SOPC 系统,并移植 uC/OS-II 操作系统及

MiniGUI 图形用户界面支持系统,设计友好的人机交互界面。[8]第二种方案也有明显的缺点,对于现有的软件上进行定制修改,功能的扩展难度十分大,并且DSP和FPGA的算法实现需要专业人员提供帮助导致本次设计成本过大;FPGA输出显示大部分是数字20

输出,而反之模拟输出显得较弱,牺牲了电子相册的一些性能。

第三种方案,以gec6818开发板设计出一个多功能的电子相册,其强大的CPU,以LINUX等操作系统为软件核心架构系统。嵌入WINCE、LINUX等操作系统,实现多媒体的编解码。该方案的优点:系统芯片功能强大,对于新的多媒体格式兼容性较好,系统运行速度快,运存非常大,实现的功能多,只需要安装虚拟机和ubuntu等软件即可;二次的开发比较方便。但是也有缺点,价格较贵,该类强大的CPU一般使用在PDA等嵌入式领域,比较耗电。

综上所述,选择了第三种方案。并且以Linux操作系统为软件核心架构。

2.3.2设计过程

设计过程大致为以下步骤:

1需求分析

首先是对本次设计的基于gec6818开发板设计的电子相册进行一个假设性的提问,设计出来的成品是能实现怎么样的预期的功能。

2收集资料和解决主要难题

前期对linux嵌入式系统设计以及QT软件的进行大量的资料查阅,总结并分析每个功能实现所需的程序是通过什么命令和函数实现的。

3总体设计和方案选择

本次设计从软件和硬件两个方面进行了分开讨论,上文有提到。接着是硬件的选择考虑下述几类可能的方案:

这次的方案选择主要是从可行性进行考虑,在每个方案的背后都反映了其成本和可实施的程度,在这之后充分权衡各中的利弊的基础上,最终得到了一个不错的方案,尽管其中成本并不是最优,但是其性能确实非常强劲,选择的则是gec6818的开发板这个硬件平台。而其中使用到的软件ubuntu等软件也属于较易上手。

4编写代码

其中最重要的一步就是代码编写,是实现所有功能的基础布置,基于ubuntu中进行代码程序的编写。

5实物测试

将程序发送进开发板中,对开发板的程序进行集成测试,程序运行时,检查开发板是否能正常运行。图片是否正常显示,切换流不流畅,音乐的播放时是否清等。其中实物演示的图片参照附录2

6程序测试复查

最后修改程序,测试程序完整性,查查看是否有视频播放卡死,或者是无线传输文件时有停滞,或者图片显示有偏差不位的情况,这些步骤对于实物演示具有至关重要的意义。

其中实物演示的图片参照附录2

21

3结论

终于在这与众不同的时期完成这篇毕业设计论文,回头看,我只想说的是纸上得来终觉浅,绝知此事要躬行,其中的困难的困难重重或许只有自己知道,指导老师黄相杰老师细心的指导,提供的开题的资料,指导老师方面:发布了“基于嵌入式系统的电子相册”任务指导书,和提供基础的解答,使我有了更清晰明了的研究手段。再经过自己近两个多月的专心研发,本次的毕业设计的课题 “基于GEC6818开发板的电子相册设计”已然完成。此次毕业的设计遇到问题的时候,很多同学往往会直接去问同学或者老师,而我喜欢先独立思考、检查,看看是否在语句或者逻辑上出现了什么问题。例如显示图片的模块中,前期运行检查时就发现发送可运行文件进入开发板系统中时会出现图片的尺寸没有适应开发板的大小,后面发现是程序里面没有定义图片全部都适应框图大小。虽然这是一个很费脑筋的过程,但是在检查出问题然后修改正确后,我往往都会得到巨大的满足感。这个满足感可以提高我对编程的热情,使我在编程中找到快乐。在编程过程中我发现很重要的一点是编程之前一定要有一个清晰的逻辑思维,要很清楚的知道每一条的代码的意义和执行的动作,要思考我下一步要进行什么动作。在执行判断的时候一定要把所有情况都考虑进去,要么就可能会出现程序运行混乱的问题,在逻辑上不能漏掉任何一步。

总的来说,这次设计我受益匪浅并且成果不错。成功实现了既定的功能。付出的努力没有付之东流,并且设计的是电子相册与自己的生活息息相关,在学习之中也找到属于自己的快乐。其实本次设计许多知识点正是反映了自己大学生涯所学的知识,在这四年内统筹地学习了《嵌入式系统及应用》、《C语言程序设计》、《可编程控制器原理及应用》等课程。从而能够更好的探究嵌入式系统的制作的知识。

这四年的知识熏陶以及实践练习我已经对嵌入式ubuntu和gcc编译器软件较为熟悉,对于程序的设计,以及测试C程序完整性我有了足够的知识积累。不过在互联网上我通也过CSDN论坛找到了许多关于linux嵌入式系统的解答,里面有众多的会员给出了不少有用的方案,并且在很多文献网站里也有许多知识,让我对linux系统内的编程有了很大的提升;硬件方面我选用GEC6818开发板很大的原因是其拥有十分强大的性能,其工作频率高达800MHZ。相对于普通的ARM芯片开发板,它具有更强的拓展性,使用AXP228 PMU的电源管理设计,在设计上更稳定可靠;

把理论的东西转换并应用到成为实物的大致过程中,有着许许多多的学问,例如:整体呈现的设计、程序的分析、编写大致模块、后期的调试、编码实现功能的顺序、主函数与子涵数的囊括、直到写入软件到开发板整个系统的整个流程准备是从最初就要不停地尝试总结的,譬如说什么图片显示的像素点不同图片的格式不同,怎么去设置窗口的距离,会出现什么样的情况,从而对每个部分的选择具体到每一个门模块做了进一步22

的探索,才能够使嵌入式电子相册系统得到最优解。

通过这次毕业设计,一边我重新找出大学时期四年的与嵌入式系统和C程序编写相关的专业书籍,相当于重新上了一遍大学的专业课,看懂了很久以前只是为了通过学期考试而死记硬背的学习点。另一边,通过回顾,我了解到的不仅仅是相关的知识而且我更加清楚认识到自动化专业的并不是单一的方向仅仅只是自动化工程师或者测试工程师,在自己的职业规划的道路中起到了一个很好的警醒作用。还有就是在这个过程中知道了嵌入式行业的发展前景有着非常广阔的未来,更深入了嵌入式的开发是多么枝繁叶茂,掌握了嵌入式控制系统的基本分析的方法和实现的方法。尽管此次设计成功完成,但是倘若要进行市场性的尝试,在我看来还是没有可能,其中的成本所带来的的回报差强人意。但其实这次最为可贵的是在研发中得到了很多的收获,坚持之后所带来的成长是无法估量的。

23

参考文献

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

范定焓. 基于ARM9平台的便携式媒体播放器的设计与开发[D].复旦大学,2009.

康志辉,曾伟渊. 电子相册管理系统设计[J]. 电脑编程技巧与维护,2015(16):20-21.

王森林. 基于嵌入式Linux的多媒体播放器设计[D].西南交通大学,2007.

孙军英. 基于ARM的多功能电子相册的硬件设计[J]. 仪表技术,2015(01):15-18+21.

郭盛荣. 基于Linux的开放式媒体播放器研究[D].重庆大学,2006.

苏曙光,沈刚.嵌入式系统原理与设计.武汉:华中科技大学出版社,2011:1-9

张增虎. 基于Qt的嵌入式多媒体播放终端的设计与实现[D].中北大学,2014.

高湛. 基于NiosII的多功能电子相册设计[D].重庆大学,2012.

24

附 录

附录1

程序源代码

主界面的布局以及按键图4-1到4-4

25

图4-1

26

图4-2

27

图4-3

图4-4

显示图片功能代码如下图4-5到4-12

28

图4-5

图4-6

图4-7

29

图4-8

图4-9

30

图4-10

图4-11

31

图4-12

密码开关具体代码如下图4-13到4-15

图4-13

32

图4-14

图4-15

33

音乐播放器的具体代码如下图4-16到4-20

图4-16

图4-17

34

图4-18

图4-19

35

图4-20

视频播放具体代码如下图4-20到4-23

36

图4-21

图4-22

37

图4-23

无线传输文件功能完整代码图2-24到图2-26

图4-24

38

图4-25

图4-26

39

附录2

实物调试图

本次实验的实物展示如下图

[1] 首先是打开电源后 开机密码锁界面,输入密码错误后报错

图4-26

[2] 输入密码正确后进入主界面如下图

40

图4-27

[3] 进入视频播放界面,选择视频后播放如下图

图4-28

41

图4-29

[4] 进入相册界面

图4-30

42

[5] 进入音乐播放界面,点击切换下一首,可正常切换。暂停功能也正常。如下图

图4-31

[6] 进入文件传输功能界面;

未连接wifi时图4-32

43

连接wifi后显示连接wifi的所属ip地址,如下图;

Wifi连接成功后图4-33

尝试传输文件如下图流程

输入rz命令传输文件;

图4-34

44

显示finished即传输成功如下图;

图4-35

最后开发板重启后可见到相册中有文件显示如下图;

图4-35

45

2024年2月8日发(作者:殳冰双)

题目:基于GEC6818开发板硬件平台的嵌入式电子相册

摘 要

电子相册,在我们日常生活中主要存储一些自己的数字照片,随着电子产品日益更新换代,电子相册也不仅仅用于存储照片,可以做到存储文档、播放视频、阅读电子书、甚至玩大型游戏,俨然成为了多媒体娱乐终端设备。其中硬件功能的升级换代功不可没,性能强大的芯片支持和存储设备使其不断成长。而本次设计基于嵌入式LINUX系统的电子相册,就是一种在Linux嵌入式系统下的使用GEC6818开发板实现人机交互的集照片显示、视频播放功能和音乐收听等功能的多功能电子相册,此次使用的ARM芯片GEC6818开发板具有强悍的性能,具备许多市场上开发板常见功能接口,如触摸屏、VGA、SD卡、音频、RS串口等接口,可用于开发linux、安卓等系统。目前市场上的主流电子相册软件都适用于手机和平板等终端设备,软件占用的内存较多、对硬件的要求高所以设计一个功能众多且体积较小的嵌入式Linux电子相册很有意义。嵌入式系统作为新时代新兴系统,其前景什么广阔。它具有操作简洁、方便、提供友好的图形GUI和图形界面,的优点,对入手学习的新手十分友好,从应用上讲现如今VR可视化设备、无人驾驶、智能家居等等新兴技术日复一日的出现在我们的生活中,它们都是智能电子产物里嵌入式技术的代表作。Linux则是一种自由度非常高和开放源码的类Unix操作系统,在大学生1

涯也是作为学习的重点放入众多工科学生的课程中,其庞大的使用群体和开放的体系和丰富资源使得Linux将是日后普及和推广的重点。

关键词:多功能电子相册;Linux;GEC6818开发板;嵌入式系统;

英文题目

Embedded electronic album based on gec6818 development board hardware platform

Abstract

Electronic photo album is mainly used to store some of our own digital photos in our daily

life. With the increasingly updated electronic products, electronic photo album is not

only used to store photos, but also to store documents, play videos, read e-books and even

play large games. It has become a multimedia entertainment terminal equipment. Among them,

the upgrading of hardware function is indispensable, and the powerful chip support and

storage device make it grow continuously. In this design, the electronic album based on

Embedded Linux system is a kind of multi-functional electronic album which uses gec68118

development board to realize human-computer interaction under Linux embedded system,

including photo display, video playback, music listening and other functions. The ARM chip

gec6818 development board used in this design has strong performance, and has many common

functional interfaces of development board in the market, such as Touch screen, VGA, SD

card, audio, RS serial port and other interfaces can be used to develop Linux, Android

and other systems. At present, the mainstream electronic album software in the market is

suitable for mobile phones, flat-panel and other terminal devices. The software occupies

more memory and requires high hardware, so it is very meaningful to design an embedded

Linux electronic album with many functions and small volume. As a new system in the new

era, embedded system has a bright future. It has the advantages of simple operation,

convenient, friendly GUI and GUI, and is very friendly to the novice who starts to learn.

2

From the application point of view, now VR visualization equipment, driverless, smart home

and other emerging technologies appear in our life day by day, they are the representative

of embedded technology in intelligent electronic products. Linux is a kind of UNIX like

operating system with very high degree of freedom and open source. It is also put into

the courses of many engineering students as the focus of learning in college. Its huge

user groups and open system and rich resources make Linux the focus of popularization and

promotion in the future.

Keywords: Multifunctional electronic album; Linux; gec6818 development board; embedded

system;

目录

1 前言 ............................................................................................................................................................ 1

1.1课题背景 .......................................................................................................................................... 1

1.2本设计的目的、意义及应达到的技术要求 ................................................................................... 1

1.3本设计在国内外的发展概况及存在的问题 ................................................................................... 2

1.3.1国内外的发展概况: ............................................................................................................ 2

1.3.2发展中存在的问题: ............................................................................................................ 3

1.4本设计应解决的主要问题 ............................................................................................................... 4

2.1总体设计 ................................................................................................................................................. 4

2.2程序设计 ........................................................................................................................................ 12

2.2.1 程序设计主要思路 ............................................................................................................. 12

2.2.2 核心问题分析 ..................................................................................................................... 12

2.3方案选择 ........................................................................................................................................ 20

2.3.1设计原理.............................................................................................................................. 19

3

2.3.2设计过程.............................................................................................................................. 21

3结论 ........................................................................................................................................................... 22

参考文献 ...................................................................................................................................................... 24

谢 辞 ............................................................................................................................. 错误!未定义书签。

附 录 .......................................................................................................................................................... 25

附录1 ................................................................................................................................................... 25

附录2 ................................................................................................................................................... 40

4

1 前言

近几年,计算机技术、电子技术、成像技术数字化、嵌入式技术、人工智能等技术的进步可谓是一飞冲天,这也意味着智能化时代逐步地然实现。观察近几年之后不难发现,特别是这些年来像苹果、小米、华为等大厂制出的手持设备十分的智能而且很受欢迎,像IPAD等平板电脑成为年轻人手中不可或缺的娱乐终端,而这类设备往往都具备电子相册和摄像等基础功能,而如今的年轻人也常常使用其记录自己的生活的每一刻,在大家的生活中起到举足轻重的作用。其中一般采用高性能处理器配合大屏的彩色液晶作为设计方案,在某些对数字信号处理速度或者对时序要求较高的场合还采用了多处理器相互配合工作的方式,例如ARM+DSP、ARM+FPGA 等。[4]

此次设计是以多媒体电子相册为大方向的,其中交互界面的设计为重点,简洁流畅的多功能电子相册为最终目标。采用基于ARM Cortex -M3 内核的GEC6818开发板 和7 英寸触摸显示屏通过虚拟机和ubuntu等软件实现图片的显示和切换,并且扩充了视频播放功能、音乐音频输出、无线接收传输文件等功能的设计与硬件实现,最终得到一

个以linux为系统的手娱乐终端。1.1课题背景

当下社会,电子相册作为许多智能设备的基础功能,在其中不起眼成为了它的标签。但是电子相册确实是早期的手机、mp3、mp4等电子产品的框架里不可或缺的功能,搭配拍摄功能几乎完美取代了数码相机,之所以不起眼是因为在这个快速发展的时代,电子早已潜移默化的成为人们生活的一部分了。不管是工作还是日常生活,记录着历史的变迁,时代的进步。此次研究的嵌入式电子相册系统,其体积框架往往小于市场上许多架构于安卓等系统的电子相册,十分具有研究的价值,有益于推动电子相册的发展。而其中的嵌入式系统和linux语言正是我们大学授课的一部分,不仅是对学业完成度的一种检验,更是对我技能知识的一种拔高。因此我设计了这个通过gec6818开发板硬件平台的多功能电子相册。

1.2本设计的目的、意义及应达到的技术要求

设计目的:本设计以现代手持设备娱乐多媒体终端为方向,采用基于ARM Cortex -M3 内核的GEC6818开发板 和7 英寸彩色液晶显示的触摸屏,完成对各种图片格式的解码显示且可以通过触摸显示屏切换其中的图像,扩充视频播放与音频输出的功能、无线接收传输文件、密码匹配解锁界面等功能,最终得到一个比较稳定的系统,本次设计出来的产品应该能实现实际功能,根据操作进行正确的动作,界面应该人性化且具有美观性,有一定的市场价值。

目前市场上的主流电子相册软件普遍体积庞大、占用内存多、可拓展性较差、硬件要求高所以开发一个运行速度快,占用空间小并且可拓展性强,对系统稳定的且功能实用的嵌入式Linux电子相册很有意义。

1

应该达到的技术要求:

1. 实现触摸屏上图片显示,具有相册的存储功能,切换图片显示点击屏幕左右两侧。

2. 实现视频的播放,可以触摸屏幕暂停和继续视频的播放,并且可以切换列表中上一个或者下一个视频。

3. 可以打开音频文件进行音频的播放,并且可以切换上一首或者下一首曲目,插入耳机进行收听。

4. 实现pc端与6818之间的无线wifi的传输电子文件的功能。

5. 给此次开机界面添加密码锁(拓展:进入界面后可修改任何六位数密码)。

1.3本设计在国内外的发展概况及存在的问题

嵌入式系统是一种特殊的面向应用的计算机系统,其软硬件可以根据具体的功能进行定制。其对每一个部件都有着严格的把控 ,例如成本、可靠性等等。随着电子技术和计算机行业的在市场上的发展,嵌入式已经成为电子技术以及计算机行业内重要的一员。嵌入式系统产业具有很大的关联度和良好 的市场前景,这也间接证明了其潜力的无限,之所以能有这样也归结于其自身的优质的支持开放性的体系结构。过去嵌入式系统较难普及的原因,是集成电路集成度和制造水平尚无法突破,但是现在国内外半导体IC设计企业己经可以生产出大量低成本的微型硅组件,并以此为基础发展出了许多可编程逻辑和微处理/控制器,这些组件可以用软件技术来实现或更改硬件功能,搭配特定的操作系统或用户接口,可以实现许多新型态应用,如PAD, STB、上网机等。[1]

然而随着计算机网络技术与数码产品的迅速发展,人们喜欢把自己喜欢的照片通过电脑来存储,这样使得电子相册理所应当的发展起来,人们渐渐地看到了电子相册这样一个巨大的商机, 所以各式各样与电子相册有关的网站渐渐发展起来。[2]

1.3.1国内外的发展概况:

19世纪末,随着计算机的问世,并且逐渐的更新换代,电子技术也开始蓬勃发展,电子相册也随之诞生了,刚开始也称之为数码相框,仅仅有着最基础的存储相片的功能。但是与传统的相册不同,它的可延展性十分高,根据现在电子相册的发展情况我们可以得知,电子相册不在局限于存储功能而拥有更多符合人们使用手持终端设备的拓展功能,例如视频播放和信息保留等,编辑也成为相册里最基本的功能之一,其中各式各样的多媒体服务更是让人眼花缭乱。尽管现在电子相册发展成为了趋势和潮流,不过传统相册仍是主流,仍是主导,在未来的几年或者更长时间,传统相册不会落伍于电子相册,因为两者都不能取代其一,而是需要结合发展的。

当前,我国电子相册发展前景仍然处于稳步上升阶段,因为近年来电子产品更新换代的速度快如闪电,市场需求自然地不断增大。在早期二十世纪初,MP3与MP4等数码随身听取得巨大的市场成功后,市场需求暴增,而功能不局限于存储相册并且能支持视频、游戏娱乐、图书阅读的便携式播放器逐渐成为消费者的心头好。在法国ARCHOS公2

司推出了首部MP4掌上影院后,众多企业均看好MP的发展态势,新一代MP4良好的发展前景和潜在的市场,成为移动数码产业的新亮点,吸引着众多厂商大力研发,并将其推向市场。[3]从此国内电子相册的发展也就不在仅仅局限在传统的电子相册中了,更多的是将它作为一个基础的功能嵌入进某一些手持的娱乐终端设备平台上。2007年后,老百姓普遍用上了手机这种嵌入式设备,它集成了摄影,通信,娱乐等功能。恰好其中的相册功能搭配摄影功能逐渐成为人们生活中不可或缺的记录生活的设备,而它也渐渐的代替了数码相机成为人们日常生活中存储相片与拍摄的机器。

随着各种计算机语言如java、linux、c等语言的诞生,诸如Windows、linux、mac等系统也随之产生,而电子相册也在不同系统有着不同的实现,通过软件的设计诞生不同功能的电子相册。其基础的存储功能随着科技的进步进入了‘云时代’,不同以往需要使用到拓展硬盘内存或者直接使用运行内存模块,例如苹果公司提供的云端服务iCloud可以将图像直接保存在他们公司的云端服务器中,需要时再通过网络下载,如今很多大型厂商也采取这种模式。近年来,国内的电子相册从最初的幻灯片形式,变成了以Flash动画为主的电子相册,不再是简单的照片之间的切换,其归类排版的功能也变得人性化。现如今的电子相册甚至根据客户的需求,添加特效动画、字幕等后期,使得整个相册变得更加的美观。对于电子相册人性化,国外也有了更大的突破,通过解码识别bmp等高质量图片,不单单是只能识别jpg一种格式。这样的改变致使数码相机不会成为拍摄的唯一选择。随着通信技术的发展,通过链接分享相册内的内容给好友欣赏也成为了家常便饭。

然而嵌入式系统的电子相册在新媒体技术也得到了长足发展,例如智能手机和平板电脑、监听设备等,它们都属于嵌入式电子相册的一种延伸。随着芯片技术的飞速发展,嵌入式系统的性能也在逐渐提升,其软硬件可剪裁的特性使得功能也越来越丰富。

1.3.2发展中存在的问题:

嵌入式的电子多媒体播放器在现在的发展中还是有许多问题的,相册功能已经十分完善不管是PC上的软件还是终端设备上的软件都具有相应的解码功能,对各种图片都有着相应的解码器,其中播放视频的功能并没有发展完全。在Linux系统上己经有Xmms, Xmovie, Xine,Realplayer, Quicktime,Mplayer等媒体播放器,其中既有Realplayer, Quicktinle为代表的商业软件,也有以Xine, Mplayer为代表的自由软件,但以上媒体播放器主要都是针对固定媒体类型与传输协议,具有比较强的专用性,如Xmms主要用于MIP3的播放,Xmovie主要支持MPG, MOV, VOB, MI2V等几种格式,Xine能支持MIP3, MIPEG-1, MIPEG-2、MSF等格式,不具备支持各种媒体格式的可扩展能力,其中,ReallNetworhs公司的RealPlaver与开源软件hlplayer具有较好的可扩展性,能支持多种格式。[5]

对于主流的流媒体编码算法(如RealNetworks公司的rn, Mlicrosoft公司的asf

wmv, wma以及知apple公司的mov ),都不属于国际标准,也未得到公开,此类媒体的移植还存在一些问题。目前,知apple, RealNetworks公司已基于各自流媒体编码算法开发了Linux版本的播放器,但是这些播放器支持的媒体类型都比较单一,特别对于Microsoft的各种流媒体类型都未进行很好地支持为了构建Linux平台上能够支持上述三个系列的流媒体播放器,国外已开展部分研究(国内还未见此类研究)。研究的技术路3

线可分为两种类型:一是通过‘WIN32 DLL plugin’调用 Windows下PE (Portlble

Executlble)格式的解码器。目前,Linux平台上集成化的播放器一般都采用这种方法,如遵循GNU GPL的播放器Xine与Mplayer,这两种软件都可支持包括asf格式的多种媒体的播放。然而,这种采用静态仿真的调用方式执行效率较低、可靠性差,而且在软件发布过程中存在版权问题。二是利用逆向工程(Reverse Engineering)来研究流媒体格式与编解码算法,这是流媒体编码技术移植的发展趋势。目前,人们已采用这种方法对alsf编码进行了一定分析。这种采用逆向工程的方法可获取解码器的源码,从而保证解码器的可移植性,但是该方法的难度与工作量较大。[5]

1.4本设计应解决的主要问题

拟解决的关键问题:

1. 每个窗口类的制作和设计,界面的返回键如何制作;

2. 怎么实现开机进入密码登录界面,输入密码错误时报错,在功能界面中如何修改密码;

3. 如何将图片显示设置成窗口大小,并且赋予相册搜索图片的功能;

4. 音乐播放器如何正常切换歌曲,如何对音频文件的路径进行设置,实现播放歌曲时快进和后退;

5. 怎么将无线传输文档通过外接wifi模块,与PC之间进行文件传输;

6. 如何让开发产品正常播放视频文件,如何编写它的切换程序;

2.1总体设计

本次设计总框架如下图1-1

4

本次设计

基于gec6818硬件平台

基于linux系统

使用到了lcd电容触摸屏模块与存储模块、和emmc模块等主要模块

使用QT更改交互界面和功能界面

实物的测试和检验功能完整性

使用虚拟机在ubuntu中通过vscode、gcc编译软件编写程序并移植QT到ARM中实现图片展示、视频播放与无线传输等功能。

通过软件发送可执行文件实现程序的运行

本次设计最终成品

总体设计框架图

2.1.1硬件电路设计

本次设计是以ARM 芯片GEC6818开发板为硬件平台,GEC6818开发板简介:

GEC6818是一款性能强劲的开发板,其核心为Cortex A53,属于主流智能产品常用的芯片,它采用三星S5P6818作为主处理器,运行主频可高1.4GHz。支持3D图形、可以播放高分辨率的高清视频,作为实现设计主要功能的基本性能。是因为其中的主处理器SPV540芯片的高性能图形引擎powerVR SGX540。开发板硬件总框图如下图2-1

5

2-1硬件总框图

本次使用的GEC6818控制系统中封装了很多模块,设计运用到最为重要的则是LCD触摸显示屏模块,因其可触控式液晶屏的功能实现了本次设计电子相册所需的最基本要求,并且拓展了触控操作屏幕的延展性。而GEC6818板载1GB DDR3内存,则作为运行linux系统的基本要求,DDR3性能优异也为流畅运行各种程序打好了基础。其中本次实现无线传输的wifi模块外接在USB串口上,其中主芯片系统控制原理如下图2-3和主要硬件总框图2-3。

6

图2-3主芯片系统控制原理图

内存模块

外接无线WIFI模块

触屏显示模块

ARM

Cortex-A53处理器

电源模块

主要硬件总框图

音频模块

Flash模块

2.1.2软件设计

本次设计用到的软件有虚拟机、Ubuntu、QT、vscode、secureCRT、gcc编译器等。

软件设计的步骤大致有以下几部分:

① 安装 fastboot烧写linux映像进入开发板。

下载并安装 secureCRT 工具,将开发板通过串口连接电脑,调节波特率11520和协议seral。开发板连接成功后显示启动信息, 配置完成如下图2-3:

7

图2-2配置完成图

接下来是进入 uboot 命令行模式,在 uboot 启动的 3 秒内按任意键, 执行命令fastboot,解压 fastboot 工具压缩包到一个目录下, 把 Linux 映像文件全部复制到该目录中。右键使用记事本编辑 Windows 脚本文件 。

最后在 secureCRT 终端下, 会打印出如下图2-4信息,说明烧写成功。

图2-4 linux系统烧写成功

② 在电脑上安装VMware Workstation并且新建虚拟机将光盘映像设置成自选。

③ 安装程序设计所需的编译器,编译器vscode、GCC交叉编译器。

④ 使用vscode编译并不会比QT自带的qmake方便,但基于本人习惯于vscode的编译环境,所以设计过程运用到了vscode。

8

其中C程序编写在本次设计所需过程1.在电脑上使用虚拟机运行ubuntu,运用

Linux命令。6818开发板的硬件平台搭建与交互。3.基于ubuntu使用vsode编写C代码,并使用arm-linux-gcc demo.c -o demo交叉编译器进行编译,因为在电脑上编程的C程序无法在开发板上正常运行,所以需要上述步骤。Vscode编程界面如下图2-5。

图2-5

⑤ QT安装完成后会自动打开QT-creator如下图2-6

图2-6

9

⑥ 为实现良好的人机交互体验,使用QT-creator开发各功能界面。在Qt creator界面中添加信号和槽函数的相连关系,同时在代码中添加connect函数来实现各功能界面。

图2-7

⑦ 本次设计所有功能的界面都是基于QT,并且本次实现视频播放是使用QT自带的ffmpeg解码,图片的显示也同理。使用QT-creator开发的软件,相同的代码在不经过修改的前提下就可以在其他的平台上运行,因为QT-creator支持包括 Linux/X11、Windows、Embedded Linux 在内的多种平台。[7]QT-creator开发过程如下图2-8

图2-8

10

⑧ 由于嵌入式平台的设备通常硬件配置较低,一般都不会在这个目标嵌入式平台上进行开发,而是在通用桌面系统平台上开发完成后,拷贝到嵌入式平台运行的。要能在 6818 平台上运行Qt 程序, 两个条件缺一不可: 一是 6818 平台上具有由 Qt

Embedded 开放源码包经过交叉编译移植后的 Qt 动态运行库, 二是本次我设计开发编写的 Qt 应用程序也经过交叉编译。所以说此次qt编程设计,还需要将qt移植到arm平台上。需要首先下载交叉编译器,然后编译qt源码,配置裁剪qt的功能和开发板上的相关资源匹配,然后qt的lib和板子同步上去后, 因为在qt上编写代码的时候需要链接板子上相关的lib配置编译器。其中Qt的移植包括步骤如下:

1. 配置,解压源码包到用户主文件夹中,编辑平台相关配置文件。修改其中内容为

QMAKE_CC = arm-linux-gcc

QMAKE_CXX = arm-linux-g++

QMAKE_LINK = arm-linux-g++

QMAKE_LINK_SHLIB = arm-linux-g++

然后进行 configure 配置操作。当它询问是否许可开放源码的植入选YES,配置完成。

2. 拷贝 Qt Embedded 库到 6818

通过 NFS 挂载 Ubuntu 共享的目录到/mnt 下, 然后解压移植好的 Qt Qt

Embedded 库到6818 的/usr/local 目录下。

[root@GEC6818 /]# mount -o nolock,tcp 192.168.1.196:/home/kitty/nfs_share /mnt

[root@GEC6818 /]# cd /mnt

[root@GEC6818 /]# tar Jxf -C /usr/local

3. 设置环境变量,这里改变的是6818 平台里面的 Qt 运行环境变量,在/etc 目录下有个profile 文件, 这个文件是 Linux 系统启动后会自动执行的脚本, 我们在这文件末尾添加内容:

export QTDIR=/usr/local/Qt-Embedded-5.7.0

export PATH=$QTDIR/bin:$PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins

export QT_QPA_PLATFORM_PATH=$QTDIR/plugins

export QT_QPA_PLATFORM=linuxfb

export QT_QPA_FONTDIR=/usr/share/fonts

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

#export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/event0

export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0

export QMLSCENE_DEVICE=softwarecontext

export QML2_IMPORT_PATH=$QTDIR/qml

11

保存退出后, 可以利用 source 命令让其立即生效, 重启开发板,此时设置好开发板的环境变量了。

⑨ 将开发好程序移植到6818开发板中实现ARM平台的功能。

2.2程序设计

2.2.1 程序设计主要思路

本次设计的程序主要是由几大部分组成 分别是

1.先通过QT-creator的做个桌面,主程序首先创建一个 QMain Window 类的对象,创建一个主窗口,划分出相册、视频播放器、无线传输、修改开机界面的密码等,从而用来切换那几个功能,设计一个点击对应功能的图标就创建一个线程执行对应的任务。并且设计一个可以总是存在并且浮动与界面的返回键,可拉动其位置。主界面的布局以及按键代码见附录1。

2.显示图片功能则是创建一个窗口,可以搜索图片目录。打开图片文件,图片根据后缀名解码然后再绘制到窗口上。创建两个按键,添加点击事件,最后实现点击切换图片。

3. 视频播放器:创建一个窗口来搜索视频目录。打开视频文件,使用ffmpeg解析视频数据流,添加滑块控件,设置滑块事件来切换播放位置。

4. 无线传输文档:打开文件,使用wifi通过tcp/ip协议把文件数据分块发送。

5. 密码开关:通过qt-creator创建输入框,输入密码后校验密码,成功则可以操作开关,失败返回上一级。

2.2.2 核心问题分析

本次设计核心部分是QT的程序开发对于硬件平台的推动,以下是对其中核心问题的分析

(1)密码锁匹配问题

设计主要实现开机提示输入密码,若密码正确直接进入功能选择界面若密码错误则提示“输入密码错误”。密码错误提示如下图2-10

12

图2-10

密码的实现最主要的是要用open读取中的数字并赋给一个数组,然后判断触摸屏输入位置,并将输入的数字存储在另一个数组,然后通strncmp(buf,pass,6)==0)比对输入数字串与中预设的数字是否相同,若相同则密码正确,不同则密码错误循环后继续输入密码直到密码正确,其中若输入的密码小于六位数则变成六位数的长度。

(2)显示图片

主要实现的功能包括:各类图片格式都可正常显示,触摸屏幕切换上一张或下一张图片。

截取主要函数进行分析,首先是图片显示区域的自适应问题,设置成图片缩放到new

QLabel的大小,使图片的大小随着窗口大小而改变。加载到然后是给按键定义点击事件,并且为了控制窗口的大小加弹簧QspacerItem,图片列表中上下布局调用main_layout的垂着布局,整个相册的框架显示基本可以实现,接收者参数可以设为 this 指针,其中如下代码

/* 图片显示区域 */

image_label = new QLabel();

image_label->setBackgroundRole(QPalette::Base);

image_label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

image_label->setScaledContents(true);

/* 显示和按键在上下布局 */

main_layout = new QVBoxLayout(this);

main_layout->addWidget(image_label);

/* 按钮 */

btn_prev = new QPushButton("上一张");

13

btn_next = new QPushButton("下一张");

/* 用于布局的弹簧 */

QSpacerItem* item_left = new QSpacerItem(75, 40, QSizePolicy::Expanding,

QSizePolicy::Minimum);

QSpacerItem* item_right = new QSpacerItem(75, 40, QSizePolicy::Expanding,

QSizePolicy::Minimum);

/* 按键水平布局 */

tool_layout = new QHBoxLayout();

tool_layout->addSpacerItem(item_left);

tool_layout->addWidget(btn_prev);

tool_layout->addWidget(btn_next);

tool_layout->addSpacerItem(item_right);

main_layout->addLayout(tool_layout);

/* 显示区域背景颜色 */

this->setLayout(main_layout);

this->setStyleSheet("background-color: rgb(167, 175, 159);");

/* 按键点击事件 */

connect(btn_prev, SIGNAL(clicked(bool)),

SLOT(on_click_btn_prev()));

connect(btn_next, SIGNAL(clicked(bool)),

SLOT(on_click_btn_next()));

}

相册最终框图如下图2-11

14

this,

this,

图2-11

(3)音乐播放

本次程序我们可以实现播放音乐、停止音乐、拉动进度条可实现歌曲的快进和后退、切换音源曲目。Mediaplayer本身编译自带了多种类型的解码器需,所以并不需要我而外在进行解码。先是对选择框和按钮框进行设置,判断触点和设置其坐标,形成一个音乐播放器的框架,创建MediaPlaer对象player = new QMediaPlayer;;接着就是选择播放音乐事件,调用connect()函数拖动进度条可发送事件到Player。以下截取的是播放音乐片段

//选择播放音乐事件

connect(widgetSearchFilter, SIGNAL(signal_current_select_file(QString)),

this, SLOT(on_signal_play(QString)));

connect(mview->buttonNext,

SLOT(on_signal_next()));

connect(mview->buttonPrev,

SLOT(on_signal_prev()));

编译在播放音乐的时候往往会使用多线程,所以由于开启了线程,我们必须使用QT中的QstackedWidget函数,父、子进程就能进行数据共享。完整代码见附录1

在Linux音乐播放界面中的窗口布局如下图2-12

SIGNAL(clicked()), this,

SIGNAL(clicked()), this,

15

图2-12

(4)播放视频功能

本次设计播放视频程序主要实现视频的播放与切换,根据视频文件放置的路径,设置它的播放路径,将文件添加进此路径中,然后设置列表的播放顺序设置循环;

/* 设置顺序播放模式 */

playerlist->setPlaybackMode(QMediaPlaylist::Sequential);

player->setPlaylist(playerlist);

然后启动视频输出窗口,显示视频播放界面。给按键添加“暂停”和“继续播放”的事件。我们自定义的 Button通过 用 connect 的方法连接两个槽信号。接着给设置暂停播放的图片一个if-else语句添加点击逻辑,若是点击一次暂停时则继续播放,播放时则继续暂停,分为两条语句,真假只执行其一。

/* 按键 */

this->buttonStart = buttonStart;

connect(buttonNext,&QPushButton::clicked,playerlist,&QMediaPlaylist::next);

connect(buttonPrev,&QPushButton::clicked,playerlist,&QMediaPlaylist::previous);

connect(buttonStart,&QPushButton::clicked,this,[=]{

if(player->state() == QMediaPlayer::PlayingState){

player->pause();

buttonStart->setIcon(QPixmap("://img/播放.png"));

16

}else {

player->play();

buttonStart->setIcon(QPixmap("://img/pause "));

}

完整代码见附录1

(5)无线传输

1)整体方向如下框图

无线传

Gec6818

无线网卡

Wifi信道

PC机

此次选择的wifi无线网卡的驱动在6818平台中并没有存在,所以使用前需对其驱动进行移植。移植后才可以在gec6818中使用无线网卡正常连接电脑外放出的的wifi,再通过securecrt软件配置射频出的ip地址进行传输文件,进入开发板中,程序设计核心逻辑如下:

1. 首先通过vim打开配置wifi连接的配置文件wpa_,配置可连接wifi的名称和密码,在本次设计中设置了两个个wifi。

ctrl_interface=__R=/var/run/wpa_supplicant

update_config=1

network={

ssid="lyd"

#psk="12345678"

psk=f86d64430e89fcf6a3846abec0c0779b6cae0e5cb7df532623000a20c254cd6e

}

network={

ssid="CMCC-T2Dz"

#psk="ahu8nyqv"

psk=3fcb220ebd44e845d0a50859c02340f96131c6cce0994b02608b1904e713d368

}

2. 对开机文件profile进行配置,让其开机即可连接wifi。且设置用户名root方便secureCRT的连接。

17

图2-13

3. 配置好相应的wifi后,开机后开发板自动连接电脑wifi,打开secureCRT对ip地址进行设置从而配置开发板,便可通过输入rz命令进行文件传输了。

配置wifi密码图2-14

完整代码见附录1

18

2.3.1设计原理

本次设计主要基于linux系统设计的一个嵌入式电子相册,而使用到的是ARM芯片,是Cortex-A53基于ARMv8-A架构。其设计的基本原理基于嵌入式系统的强烈的专用性,根据我本人设计需求可剪裁配置其硬件和软件。将硬件平台gec6818开发板与ubuntu和QT软件进行结合产生一个架构于linux系统的完整的嵌入式开发产品。其中完成此次设计的基本原理大概如下几点:

1、 高性能的gec6818的硬件开发平台给实验提供了一个基础,它的各个模块齐全,组成一个合格的嵌入式开发板,并且可以流畅的运行我们所使用的linux系统;

2、 嵌入式系统到的开发技术可以对软硬件剪裁设计出独一无二的产品;

3、 ubuntu这个操作系统作为linux先行版之一,它的界面十分友好并且集成了许多编译器工具,足以让我们的程序设计照班运行,并且linux自身具有优异的网络支持,不需要外挂TCP/IP协议,对于设计此次的无线网络传输有着得天独厚的优势;

4、 QT软件在其中作为现在嵌入式中常用的可视化框架的编译工具,不仅为本次设计先进行界面的绘制工作再基于事件进行编程,其中电子相册之所以能实现也是由于QT中自带的解码功能,对实现相册和视频播放功能相比其他软件较易实现。

综上所述此次设计基于linux系统的设计可行性十分的高,linux从外观上看,嵌入式系统像是一个“可编程”的电子“器件”,从功能上看,它是对目标系统(宿主对象)进行控制,使其智能化的控制器。[6]嵌入式系统之所以能完成本次设计是因为其实施特性并且嵌入式linux系统是集软硬件于一体的、可独立工作的计算机系统;本次设计通过虚拟机VMware Workstation,它提供用户体验是可以同时运行一些不同的系统操作例如Android等,并且进行开发测试和部署新型应用。所以我在此次设计选用的软件是因为其原理较为简单,容易实施和拓展。主要是通过软件的设计来达成自己的设计目的。

19

2.3方案选择

ARM系列

ARM9/9E系列

包含类型

ARM920T(经典)

ARM922T

ARM926Ej-S

ARM940T

ARM946E-S

ARM966E-S

ARM968E-S

VFP9-S

VFP10

ARM1020E

ARM1022E

ARM1026EJ-S

ARM1136J-S

ARM1136JF-S

ARM1156T2(F)-S

ARM1176JZ(F)-S

ARM11MPCore

Cortex-A(其中S5Pv210为经典,A8)

Cortex-R

Cortex-M

SC100

SC110

SC200

Sc210

StrongARM

XScale

MBX

向量浮点运算(Vector Floating Point)系列

ARM10E系列

ARM11系列

Cortex系列

SecurCore系列

其他合作伙伴产品

图2-6 ARM各系列处理器包含的类型

设计一个具有多项功能的电子相册方案众多,最早我是预估成本进行选择,而自己定下的预算太少发现很多自选的方案性能部分无法实现自己的需要,而最终通过性能和成本的两房考虑才得到了以下的一些方案从中选出了一个相对较适合自己的。最终考虑到的符合设计的主要设计方案:

一、 利用stm32单片机通过程序设计实现电子相册解决方案

二、 以FPGA 芯片等硬件为基础,而DSP则是实现动功能的算法编码。

三、 使用ARM核心的gec6818开发板设计出多功能相册。

第一种方案,stm32单片机的是以srm32F103RCT6芯片设计为方案,价格低,结构简单,实时性能很强劲,外设丰富、多媒体的编解码速度快是它的优点;该方案的缺点:拓展性较差;对无线传输和视频播放的实施不太好实现,二次开发不太可行。

第二种方案是由FPGA实现显示输出格式的算法转化,基于 Nios II 软核处理器的

SOPC 系统,从而实现一个简易并且系统稳定的电子相册。其中读卡部分,文件系统部分由DSP软件处理,其中的驱动由DSP的软件算法实现本次设计,利用的是FPGA 强大的并行处理能力、灵活性,性能稳定的SOPC 系统,并移植 uC/OS-II 操作系统及

MiniGUI 图形用户界面支持系统,设计友好的人机交互界面。[8]第二种方案也有明显的缺点,对于现有的软件上进行定制修改,功能的扩展难度十分大,并且DSP和FPGA的算法实现需要专业人员提供帮助导致本次设计成本过大;FPGA输出显示大部分是数字20

输出,而反之模拟输出显得较弱,牺牲了电子相册的一些性能。

第三种方案,以gec6818开发板设计出一个多功能的电子相册,其强大的CPU,以LINUX等操作系统为软件核心架构系统。嵌入WINCE、LINUX等操作系统,实现多媒体的编解码。该方案的优点:系统芯片功能强大,对于新的多媒体格式兼容性较好,系统运行速度快,运存非常大,实现的功能多,只需要安装虚拟机和ubuntu等软件即可;二次的开发比较方便。但是也有缺点,价格较贵,该类强大的CPU一般使用在PDA等嵌入式领域,比较耗电。

综上所述,选择了第三种方案。并且以Linux操作系统为软件核心架构。

2.3.2设计过程

设计过程大致为以下步骤:

1需求分析

首先是对本次设计的基于gec6818开发板设计的电子相册进行一个假设性的提问,设计出来的成品是能实现怎么样的预期的功能。

2收集资料和解决主要难题

前期对linux嵌入式系统设计以及QT软件的进行大量的资料查阅,总结并分析每个功能实现所需的程序是通过什么命令和函数实现的。

3总体设计和方案选择

本次设计从软件和硬件两个方面进行了分开讨论,上文有提到。接着是硬件的选择考虑下述几类可能的方案:

这次的方案选择主要是从可行性进行考虑,在每个方案的背后都反映了其成本和可实施的程度,在这之后充分权衡各中的利弊的基础上,最终得到了一个不错的方案,尽管其中成本并不是最优,但是其性能确实非常强劲,选择的则是gec6818的开发板这个硬件平台。而其中使用到的软件ubuntu等软件也属于较易上手。

4编写代码

其中最重要的一步就是代码编写,是实现所有功能的基础布置,基于ubuntu中进行代码程序的编写。

5实物测试

将程序发送进开发板中,对开发板的程序进行集成测试,程序运行时,检查开发板是否能正常运行。图片是否正常显示,切换流不流畅,音乐的播放时是否清等。其中实物演示的图片参照附录2

6程序测试复查

最后修改程序,测试程序完整性,查查看是否有视频播放卡死,或者是无线传输文件时有停滞,或者图片显示有偏差不位的情况,这些步骤对于实物演示具有至关重要的意义。

其中实物演示的图片参照附录2

21

3结论

终于在这与众不同的时期完成这篇毕业设计论文,回头看,我只想说的是纸上得来终觉浅,绝知此事要躬行,其中的困难的困难重重或许只有自己知道,指导老师黄相杰老师细心的指导,提供的开题的资料,指导老师方面:发布了“基于嵌入式系统的电子相册”任务指导书,和提供基础的解答,使我有了更清晰明了的研究手段。再经过自己近两个多月的专心研发,本次的毕业设计的课题 “基于GEC6818开发板的电子相册设计”已然完成。此次毕业的设计遇到问题的时候,很多同学往往会直接去问同学或者老师,而我喜欢先独立思考、检查,看看是否在语句或者逻辑上出现了什么问题。例如显示图片的模块中,前期运行检查时就发现发送可运行文件进入开发板系统中时会出现图片的尺寸没有适应开发板的大小,后面发现是程序里面没有定义图片全部都适应框图大小。虽然这是一个很费脑筋的过程,但是在检查出问题然后修改正确后,我往往都会得到巨大的满足感。这个满足感可以提高我对编程的热情,使我在编程中找到快乐。在编程过程中我发现很重要的一点是编程之前一定要有一个清晰的逻辑思维,要很清楚的知道每一条的代码的意义和执行的动作,要思考我下一步要进行什么动作。在执行判断的时候一定要把所有情况都考虑进去,要么就可能会出现程序运行混乱的问题,在逻辑上不能漏掉任何一步。

总的来说,这次设计我受益匪浅并且成果不错。成功实现了既定的功能。付出的努力没有付之东流,并且设计的是电子相册与自己的生活息息相关,在学习之中也找到属于自己的快乐。其实本次设计许多知识点正是反映了自己大学生涯所学的知识,在这四年内统筹地学习了《嵌入式系统及应用》、《C语言程序设计》、《可编程控制器原理及应用》等课程。从而能够更好的探究嵌入式系统的制作的知识。

这四年的知识熏陶以及实践练习我已经对嵌入式ubuntu和gcc编译器软件较为熟悉,对于程序的设计,以及测试C程序完整性我有了足够的知识积累。不过在互联网上我通也过CSDN论坛找到了许多关于linux嵌入式系统的解答,里面有众多的会员给出了不少有用的方案,并且在很多文献网站里也有许多知识,让我对linux系统内的编程有了很大的提升;硬件方面我选用GEC6818开发板很大的原因是其拥有十分强大的性能,其工作频率高达800MHZ。相对于普通的ARM芯片开发板,它具有更强的拓展性,使用AXP228 PMU的电源管理设计,在设计上更稳定可靠;

把理论的东西转换并应用到成为实物的大致过程中,有着许许多多的学问,例如:整体呈现的设计、程序的分析、编写大致模块、后期的调试、编码实现功能的顺序、主函数与子涵数的囊括、直到写入软件到开发板整个系统的整个流程准备是从最初就要不停地尝试总结的,譬如说什么图片显示的像素点不同图片的格式不同,怎么去设置窗口的距离,会出现什么样的情况,从而对每个部分的选择具体到每一个门模块做了进一步22

的探索,才能够使嵌入式电子相册系统得到最优解。

通过这次毕业设计,一边我重新找出大学时期四年的与嵌入式系统和C程序编写相关的专业书籍,相当于重新上了一遍大学的专业课,看懂了很久以前只是为了通过学期考试而死记硬背的学习点。另一边,通过回顾,我了解到的不仅仅是相关的知识而且我更加清楚认识到自动化专业的并不是单一的方向仅仅只是自动化工程师或者测试工程师,在自己的职业规划的道路中起到了一个很好的警醒作用。还有就是在这个过程中知道了嵌入式行业的发展前景有着非常广阔的未来,更深入了嵌入式的开发是多么枝繁叶茂,掌握了嵌入式控制系统的基本分析的方法和实现的方法。尽管此次设计成功完成,但是倘若要进行市场性的尝试,在我看来还是没有可能,其中的成本所带来的的回报差强人意。但其实这次最为可贵的是在研发中得到了很多的收获,坚持之后所带来的成长是无法估量的。

23

参考文献

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

范定焓. 基于ARM9平台的便携式媒体播放器的设计与开发[D].复旦大学,2009.

康志辉,曾伟渊. 电子相册管理系统设计[J]. 电脑编程技巧与维护,2015(16):20-21.

王森林. 基于嵌入式Linux的多媒体播放器设计[D].西南交通大学,2007.

孙军英. 基于ARM的多功能电子相册的硬件设计[J]. 仪表技术,2015(01):15-18+21.

郭盛荣. 基于Linux的开放式媒体播放器研究[D].重庆大学,2006.

苏曙光,沈刚.嵌入式系统原理与设计.武汉:华中科技大学出版社,2011:1-9

张增虎. 基于Qt的嵌入式多媒体播放终端的设计与实现[D].中北大学,2014.

高湛. 基于NiosII的多功能电子相册设计[D].重庆大学,2012.

24

附 录

附录1

程序源代码

主界面的布局以及按键图4-1到4-4

25

图4-1

26

图4-2

27

图4-3

图4-4

显示图片功能代码如下图4-5到4-12

28

图4-5

图4-6

图4-7

29

图4-8

图4-9

30

图4-10

图4-11

31

图4-12

密码开关具体代码如下图4-13到4-15

图4-13

32

图4-14

图4-15

33

音乐播放器的具体代码如下图4-16到4-20

图4-16

图4-17

34

图4-18

图4-19

35

图4-20

视频播放具体代码如下图4-20到4-23

36

图4-21

图4-22

37

图4-23

无线传输文件功能完整代码图2-24到图2-26

图4-24

38

图4-25

图4-26

39

附录2

实物调试图

本次实验的实物展示如下图

[1] 首先是打开电源后 开机密码锁界面,输入密码错误后报错

图4-26

[2] 输入密码正确后进入主界面如下图

40

图4-27

[3] 进入视频播放界面,选择视频后播放如下图

图4-28

41

图4-29

[4] 进入相册界面

图4-30

42

[5] 进入音乐播放界面,点击切换下一首,可正常切换。暂停功能也正常。如下图

图4-31

[6] 进入文件传输功能界面;

未连接wifi时图4-32

43

连接wifi后显示连接wifi的所属ip地址,如下图;

Wifi连接成功后图4-33

尝试传输文件如下图流程

输入rz命令传输文件;

图4-34

44

显示finished即传输成功如下图;

图4-35

最后开发板重启后可见到相册中有文件显示如下图;

图4-35

45

发布评论

评论列表 (0)

  1. 暂无评论