粤嵌开发板电子相册嵌入式课程设计报告书Word下载.docx
《粤嵌开发板电子相册嵌入式课程设计报告书Word下载.docx》由会员分享,可在线阅读,更多相关《粤嵌开发板电子相册嵌入式课程设计报告书Word下载.docx(29页珍藏版)》请在冰点文库上搜索。
在Linux软件国策的指引下,Linux已经得到很大的普与。
很多学生已经自发地通过书籍、互联网等资源学习Linux。
综上所述,提高技术水平就是以市场流行需求为导向进展研发,特别是像嵌入式种工程类的技术。
在条件允许的情况下,我们甚至应该时刻与国际接轨,掌握当前最领先的技术。
1.2任务分析
设计的目标是制作5种电子相册特效,每个人负责制作一种。
在制作前期,首先要查阅资料,了解电子相册的背景和制作原理,对其形成大致的设计方案。
然后,根据资料安装linux和虚拟机软件,搭建开发环境,安装穿插编译。
最后,根据自己设计的方案进展尝试,不断修改错误,直到到达目标。
1.3课题项目管理计划进度表
序号
各阶段完成的容
完成时间
1
查阅相关文献资料、课题调研
2017.5.20-2017.5.23
2
掌握设计软件、制订进度计划
2017.5.23-2017.5.27
3
系统方案的比拟和选定
2017.5.27-2017.5.28
4
编写实现特效的代码
2017.5.29-2017.6.5
5
编译,运行目标文件,查看结果,根据结果进展代码的修改
2017.6.05-2017.6.08
6
制作辩论PPT
2017.6.08-2017.6.09
7
撰写课程设计说明书
2017.6.09-2017.6.11
8
辩论
2017.6.12
2.工程设计方案
2.1系统方案设计
目前市场上的主要设计方案:
1单芯片解决方案
以单芯片的解决方案,以ESS/AMLOGIC/MPX等芯片设计为代表,PHILIP/Sony等品牌厂商也以该方式为主。
该方案的优点:
〔1〕结构简单,本钱低,芯片功能强大;
〔2〕多媒体的编解码速度快。
该方案的缺点:
〔1〕可扩展的余地缺乏;
〔2〕对读卡局部,某些方案使用硬件实现,不能支持新类型的卡;
〔3〕应客户要求的二次开发比拟不方便。
②以DSP+FPGA等硬件为根底,用软件算法实现功能
这种方案,是以DSP来实现多媒体局部的编解码算法,再由FPGA实现显示输出格式的算法转化;
读卡局部,文件系统局部由DSP软件处理,外围设备大的驱动由DSP的软件算法实现。
这种方案的优点:
功能扩展升级性强,软件实现读卡局部,新的类型卡,外围设备可以通过升级方式实现。
这种方案的缺点:
〔1〕整体本钱比拟大;
〔2〕客户二次开发难度大。
DSP和FPGA的算法实现需要专业人员;
〔3〕显示输出由FPGA实现,该类输出大局部是数字的输出,模拟输出支持比拟弱。
③ARM核心方案
以ARM等强大的CPU为核心,以WINCE、LINUX等操作系统为软件核心架构系统。
此方案以ARM如S3C2410、Intelxscale等强大的嵌入式CPU为架构,速度在200M-300MHZ。
嵌入WINCE、LINUX等操作系统,实现多媒体的编解码。
该方案的优点:
〔1〕系统芯片功能强大,实现的功能多,对于新的多媒体格式支持好,只需要安装更新的软件;
〔2〕硬件电路简单;
〔3〕二次开发容易实现。
〔1〕本钱较大,该类强大的CPU一般使用在PDA等嵌入式领域;
〔2〕比拟耗电,使用软件解码功耗与频率相关性很大。
本设计选用的是第三种方案:
以CortexA8为核心,以Linux操作系统为软件核心架构。
基于CortexA8的微处理器具有低功耗、低本钱、高性能等特点。
GEC210开发板简介:
GEC210是一款高性能的CortexA8核心板,它由粤嵌股份设计、生产和发行销售。
它采用三星S5PV210作为主处理器,运行主频可高1GHz。
S5PV210部集成了PowerVRSGX540高性能图形引擎,支持3D图形流畅运行,并可流畅播放1080P大尺寸视频。
GEC210主要采用了2.0mm间距的双排针,引出CPU大局部常用功能引脚,,另外还根据S5PV210芯片的特性,分别引出了标准的miniHDMI接口,如下图。
GEC210板载512MDDR2存,可流畅运行Android,Linux和WinCE6等高级操作系统。
它非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。
图2-1GEC210开发板(a)图2-2GEC210开发板(b)
2.2硬件电路设计
粤嵌GEC210开发板为硬件平台,Ubuntu为开发环境,通过串口进展文件的传输,在工程师给定的项目根底函数上,通过修改和运用“voidlcd_draw_bmp(char*name,intx0,inty0,intw,inth)〞函数实现图片位置,大小的改变,再加上延时函数的运用,实现五种图片特效。
图2-3硬件总框图
2.3软件程序设计
总设计方案:
大
小
3.方案实施
3.1软件程序调试过程
①安装虚拟机和linux软件。
②搭建环境和安装穿插编译。
1)找到ubuntu系统工作目录
图3-1
2)在windos
图3-2
3)启用共享文件夹
图3-3
4)主机路径为windos
图3-4
图3-5
5)可以在文件系统中/mnt/hgfs/share目录下看到这些。
图3-6
图3-7
7)将文件复制到/opt目录下。
图3-8
8)执行如下解压命令。
2聚焦逐现特效局部调试
原本打算做图片翻转的特效,在网上查到图片翻转特效的算法并经过修改如下:
//24bitto32bit
for(x=0,y=800*480*4-1;
x<
800*480*3;
x+=3)
{
pic_mem[y-3]=bmp_mem[x];
pic_mem[y-2]=bmp_mem[x+1];
pic_mem[y-1]=bmp_mem[x+2];
y-=4;
}
但是在调试时总是出错,寻找最终的原因,应该是图片转换为矩阵时和图片翻转之间的步骤有误,导致调试时一直报错。
因此转变设计方案,先确定所要出现图片的位置,再通过在不同位置处显示不同图片的大小依次出现到达一个三维视觉动态效果,最后经过反转函数实现图片的反转,在制作过程中想要参加音乐,但是由于时间有限就未能实现。
图片显示函数如下:
//显示一24位的bmp图片,图片的宽度必须为4的倍数
voidlcd_draw_bmp(char*name,intx0,inty0,intw,inth)
{
intfd;
fd=open(name,O_RDWR);
if(-1==fd)
{
printf("
open%serror!
\n"
name);
return;
}
图片反转函数如下:
//位运算
intx,y,k,i=0;
for(y=0;
y<
h;
y++)
for(x=w;
x>
0;
x--)
{
b=ch[i];
g=ch[i+1];
r=ch[i+2];
i+=3;
color=(r<
<
16)|(g<
8)|b;
lcd_draw_point(x+x0,h-y+y0,color);
}
}
显示界面调用函数如下:
//显示BMP图片
lcd_draw_bmp("
zs.bmp"
1,1,796,477);
delayms(3000000);
zsone.bmp"
100,60,600,360);
zstwo.bmp"
200,120,400,240);
zsthree.bmp"
300,140,200,200);
lcd_draw_bmpop("
图片效果的速度可通过改变延时函数的时间来改变。
4.结果与结论
4.1设计结果
设计结果实现了以下4点:
1)在LCD上显示图片,文字;
2)关于GEC210芯片的使用,Ubuntu环境下的操作;
3)可随时更换图片,具有串行通信功能;
4)聚焦逐现图片特效。
效果分布展示如下:
图4-1开场界面
图4-2逐步缩小界面
图4-3放大反转界面
4.2结论
设计优缺点:
1)实现了多种不同的图片播放特效。
2)二次开发容易实现。
3)图片的自动播放。
4)未实现手动播放和音乐功能。
设计的核心与工程实用价值:
随着数码相机的大量普与和人们对多媒体播放的需求,不同用户的计算机中存满各种照片,连桌上相框中照片的更换频率也提高了。
对数码相片进展便捷的显示、分享、编辑、删除、打印等操作逐渐成为市场的需求。
电子相框,数码伴侣等概念型产品逐渐出现在数码市场,电子相册也由概念型产品进入市场已有六、七年。
目前,电子相册产品主要应用于礼品市场,其真正的目标用户却是非常广的,并且它的最终消费人群应该是以家庭为主的普通消费者,其应用的领域将更广阔。
改良意见:
1〕实现通过触屏实现图片特效间的切换。
2〕音乐播放功能的增加。
3〕多图片合成一图片播放功能的实现。
展望:
电子相框结合液晶显示技术、电视技术、数字存储技术,日益成为面向时尚个性的数码相机、数码摄像的最正确伴侣。
随着核心器件NandFlash和LCD屏的降价,必将进一步刺激电子相框的市场需求。
多功能电子相册方便携带、重量轻、样式丰富,在今后必定有更大开展空间。
5.收获与致
在本次设计开场前,我们最先开场的是查资料,通过查找资料了解图片显示和各种特效的实现原理,然后再自己尝试设计特效,一开场我们想的特效都很复杂,想要一步实现,尝试了很多方法,都没能成功。
最后,我们改变了思路,用图片逐层显示来实现动态过程,这个特效虽然简单,但它是复杂特效的一个根底,让我明白了复杂的设计要从简单开场,不能想着一口吃个大胖子。
到辩论前一天我们各自设计的特效才有了一点自己想要的效果,当时还很想实现触屏和音乐播放功能,但前期尝试时一直调试不成功所以就没有来得与实现,这是本次设计中的一个遗憾。
通过本次设计也更加熟悉了linux的操作流程,熟悉了做实验中的搭建环境和穿插编译,开场时很多步骤都记不太清楚了,所以又复习了一遍以前的实验。
在这里我体会到了平时的学习都是为了以后的复杂工程做铺垫,让我们能更好的解决一些设计工程,理论是根底,只有根底打好了,上层建筑才会更加稳和顺利。
同时完成了图片在LED屏上的显示和聚焦逐现特效。
在显示图片的操作上,开场屏幕总是会花,显示的图片不理想,后来仔细看了工程师给的显示图片代码和清屏代码,通过和同学商量最终完成了图片的显示。
在特效的实现过程中,一开场很想做一个立体的炫酷的特效,也通过查找资料理解了其原理和算法实现流程,但在调试时总是不成功,在这里用了很长时间。
最后,改变了设计思路,觉得应该从简单的开场做,再一步步增加功能,通过和同学的商量与摸索,终于实现了简单的特效。
虽然从设计到实现的过程有很多困难,但是体会到了和同学一起完成同一个任务的快了,也收获了很多课本上没有的知识,体会到了实践的乐趣。
在此,感我的队友给予的帮助,教师和粤嵌工程师给的平台和时机,尤其是粤嵌工程师给我的学习指导。
6.参考文献
[1]童凯.基于Linux以与Qt的网络电子相框设计与实现[D].电子科技大学,2014.
[2]林锋.基于ARM7TDMI芯片的嵌入式LINUX穿插调试器的设计和实现[D].大学,2002.
[3]王浩,邦琼.嵌入式Qt开发项目教程[M].中国水利水电,2014.
[4]梁融凌,余昌嵩.基于嵌入式Linux电子书的设计与实现[J].师学院学报(自然科学版),2014(4):
12-14.
[5]YanH,LiuL,XueT.SPLIT-SCREENPROCESSINGMETHODANDDEVICE,ANDCOMPUTERSTORAGEMEDIUM:
WO/2015/123937[P].2015.
[6]燕丽红,林志雄,星.基于Windows7操作系统和Qt技术的电子相册设计DesignofelectronicphotoalbumbasedonWindows7operatingsystemandQT[J].现代电子技术,2013.
[7]定焓.基于ARM9平台的便携式媒体播放器的设计与开发[D].复旦大学,2009.
[8]朱涛.一种基于互联网络的电子相册:
CN,CN201846349U[P].2011.
[9]定焓.基于ARM9平台的便携式媒体播放器的设计与开发[D].复旦大学,2009.
[10]ZhuM.CATERINGINFORMATIONSYSTEMBASEDONDIGITALMENUSUPPORTINGCARDSWIPING:
WO2013152620A1[P].2013.
[11]燕,祝.一种基于Cortex核的家用电子相册设计[C]//2014`全国半导体器件产业开展、创新产品和新技术研讨会暨第七届中国微纳电子技术交流与学术研讨会.2014.
7.附件
1〕辩论问题答复记录〔必需〕
问:
有没有实现手动播放功能?
答:
没有,目前我们完成的只有自动播放和图片替换功能。
2〕元器件清单
粤嵌GEC210开发板、安装有虚拟机和LINUX的电脑。
3〕设计代码
/*
NAME
openandpossiblycreateafileordevice
SYNOPSIS
#include<
sys/types.h>
sys/stat.h>
fcntl.h>
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
filedescriptor:
文件描述符
*/
#include<
stdio.h>
stdlib.h>
string.h>
//foropen
sys/mman.h>
linux/input.h>
#include<
termios.h>
unistd.h>
//forclose
int*plcd=NULL;
charwo[]={
0x04,0x40,0x0E,0x50,0x78,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x44,
0x0A,0x44,0x0C,0x48,0x18,0x30,0x68,0x22,0x08,0x52,0x08,0x8A,0x2B,0x06,0x10,0x02
};
voidlcd_draw_point(intx0,inty0,intcolor)
*(plcd+y0*800+x0)=color;
//在顶点为x0,y0的位置开场显示一个颜色矩形,矩形的宽//度为w,高度为h,颜色为color
voidlcd_draw_rect(intx0,inty0,intw,inth,intcolor)
intx,y;
for(y=y0;
y0+h;
for(x=x0;
x<
x0+w;
x++)
lcd_draw_point(x,y,color);
//把lcd清成color颜色
voidlcd_clean_screen(intcolor)
480;
for(x=0;
800;
voiddelayms(intxms){
inti,j;
for(i=0;
i<
xms;
i++)
for(j=110;
j>
0;
j--);
//1、跳过前54个byte
lseek(fd,54,SEEK_SET);
charch[w*h*3];
read(fd,ch,sizeof(ch));
close(fd);
//lcd的像素点占4byte,24位bmp3byte
intcolor;
charr,g,b;
//位运算
intx,y,i=0;
w;
lcd_draw_point(x+x0,h-y+y0,color);
delayms
(1);
//显示一24位的bmp图片,图片的宽度必须为4的倍数,左右颠倒
voidlcd_draw_bmpop(char*name,intx0,inty0,intw,inth)
voidmonitor_touch()
fd=open("
/dev/event0"
O_RDWR);
structinput_eventev;
while
(1)
read(fd,&
ev,sizeof(ev));
//如何判断该事件是一个触摸事件
if((ev.type==EV_ABS)&
&
(ev.code==ABS_X))
x=ev.value;
elseif((ev.type==EV_ABS)&
(ev.code==ABS_Y))
y=ev.value;
//手指弹起
(ev.code==ABS_PRESSURE)&
(ev.value==0))
printf("
x:
%d,y:
%d\n"
x,y);
//显示一个字
voidlcd_draw_word(unsignedchar*ch,intcolor,intlen,intw,intx,