粤嵌开发板电子相册嵌入式课程设计.docx
- 文档编号:29559518
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:22
- 大小:707.61KB
粤嵌开发板电子相册嵌入式课程设计.docx
《粤嵌开发板电子相册嵌入式课程设计.docx》由会员分享,可在线阅读,更多相关《粤嵌开发板电子相册嵌入式课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
粤嵌开发板电子相册嵌入式课程设计
CompanyDocumentnumber:
WTUT-WT88Y-W8BBGB-BWYTT-19998
粤嵌开发板电子相册嵌入式课程设计
课程设计说明书
题目:
电子相册
课程名称:
嵌入式系统
学院:
专业:
学号:
姓名:
指导教师:
完成日期:
2017年6月10日
1.设计的工程背景
任务阐述
设计任务:
制作一个电子相册,要求每个人一种特效,结果显示在ARM开发板上。
开发平台为LINUX。
电子相册简介:
以数字照片的存储和浏览为主要功能,具有内置数据存储器、USB等卡接口、强大的文件管理等特征。
背景:
在市场需求上,随着数码相机的普及,作为一种以数字照片的保存、回放和浏览为核心的功能产品迎合了消费者需求,嵌入式linux的电子相册比一般电子相册更具优越性和实用性。
目前市场,目前主流电子相册软件普遍体积庞大、占用内存多、硬件要求高。
所以开发一个运行速度快,占用空间小,对硬件要求较低的功能实用的嵌入式Linux电子相册很有意义。
Linux开发优势:
Linux是一种自由和开放源码的类Unix操作系统。
目前存在着许多不同的Linux,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。
Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
Linux是我国软件的国策,尤其是在IT行业,庞大的使用群体、开放的体系和丰富资源使得Linux将是日后普及和推广的重点。
Linux的优越性日益凸显Linux将是我们学习和工作实用的首选。
目前,很多网络技术、服务器、网络设备都是基于Linux操作系统,并且在不少时尚的手机、PDA、媒体播放器等消费类电子产品中已经广泛使用Linux作为操作系统。
在Linux软件国策的指引下,Linux已经得到很大的普及。
很多学生已经自发地通过书籍、互联网等资源学习Linux。
综上所述,提高技术水平就是以市场流行需求为导向进行研发,特别是像嵌入式种工程类的技术。
在条件允许的情况下,我们甚至应该时刻与国际接轨,掌握当前最领先的技术。
任务分析
设计的目标是制作5种电子相册特效,每个人负责制作一种。
在制作前期,首先要查阅资料,了解电子相册的背景和制作原理,对其形成大致的设计方案。
然后,根据资料安装linux和虚拟机软件,搭建开发环境,安装交叉编译。
最后,根据自己设计的方案进行尝试,不断修改错误,直到达到目标。
课题项目管理计划进度表
序号
各阶段完成的内容
完成时间
1
查阅相关文献资料、课题调研
.
2
掌握设计软件、制订进度计划
3
系统方案的比较和选定
4
编写实现特效的代码
5
5
编译,运行目标文件,查看结果,根据结果进行代码的修改
6
制作答辩PPT
撰写课程设计说明书
答辩
工程设计方案
系统方案设计
目前市场上的主要设计方案:
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主要采用了间距的双排针,引出CPU大部分常用功能引脚,,另外还根据S5PV210芯片的特性,分别引出了标准的miniHDMI接口,如图所示。
GEC210板载512MDDR2内存,可流畅运行Android,Linux和WinCE6等高级操作系统。
它非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。
图2-1GEC210开发板(a)图2-2GEC210开发板(b)
硬件电路设计
粤嵌GEC210开发板为硬件平台,Ubuntu为开发环境,通过串口进行文件的传输,在工程师给定的项目基础函数上,通过修改和运用“voidlcd_draw_bmp(char*name,intx0,inty0,intw,inth)”函数实现图片位置,大小的改变,再加上延时函数的运用,实现五种图片特效。
图2-3硬件总框图
软件程序设计
总设计方案:
大
大
3.方案实施
软件程序调试过程
①安装虚拟机和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聚焦逐现特效部分调试
原本打算做图片翻转的特效,在网上查到图片翻转特效的算法并经过修改如下:
结果与结论
设计结果
设计结果实现了以下4点:
1)在LCD上显示图片,文字;
2)关于GEC210芯片的使用,Ubuntu环境下的操作;
3)可随时更换图片,具有串行通信功能;
4)聚焦逐现图片特效。
效果分布展示如下:
图4-1开始界面
图4-2逐步缩小界面
图4-3放大反转界面
结论
设计优缺点:
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]
[9]范定焓.基于ARM9平台的便携式媒体播放器的设计与开发[D].复旦大学,2009.
[10]
[11]杨燕,陈祝.一种基于Cortex内核的家用电子相册设计[C]2014.
7.附件
1)答辩问题回答记录(必需)
问:
有没有实现手动播放功能
答:
没有,目前我们完成的只有自动播放和图片替换功能。
2)元器件清单
粤嵌GEC210开发板、安装有虚拟机和LINUX的电脑。
3)设计代码
/*
NAME
openandpossiblycreateafileordevice
SYNOPSIS
#include
#include
#include<>
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
filedescriptor:
文件描述符
*/
#include<>
#include<>
#include<>
#include
#include
#include<>//foropen
#include
#include
#include<>
#include<>//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;y { for(x=x0;x lcd_draw_point(x,y,color); } } //把lcd清成color颜色 voidlcd_clean_screen(intcolor) { intx,y; for(y=0;y<480;y++) { for(x=0;x<800;x++) lcd_draw_point(x,y,color); } } voiddelayms(intxms){ inti,j; for(i=0;i for(j=110;j>0;j--); } //显示一张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; } //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; for(y=0;y { for(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); delayms (1); } } } //显示一张24位的bmp图片,图片的宽度必须为4的倍数,左右颠倒 voidlcd_draw_bmpop(char*name,intx0,inty0,intw,inth) { intfd; fd=open(name,O_RDWR); if(-1==fd) { printf("open%serror! \n",name); return; } //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,k,i=0; for(y=0;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); } } } voidmonitor_touch() { intfd; fd=open("/dev/event0",O_RDWR); if(-1==fd) return; structinput_eventev; intx,y; while (1) { read(fd,&ev,sizeof(ev)); //如何判断该事件是一个触摸事件 if(==EV_ABS)&&==ABS_X)) { x=; } elseif(==EV_ABS)&&==ABS_Y)) { y=; } //手指弹起 if(==EV_ABS)&&==ABS_PRESSURE)&&==0)) { printf("x: %d,y: %d\n",x,y); } } close(fd); } //显示一个字 voidlcd_draw_word(unsignedchar*ch,intcolor,intlen,intw,intx,inty) { inti,j; inthigh; //32*64 //一个字的显示: 画点(一个一个像素点) //八个点用一个unsignedchar //已知: 数组长度: len=>像素点的个数: len*8 //已知: 字的宽度=>高度: len*8/w high=len*8/w;//64 intflag; flag=w/8;//4 for(i=0;i { for(j=7;j>=0;j--) { if((ch[i]>>j)&1==1) { if(i%flag==0) lcd_draw_point(7-j+x,i/flag+y,color); else lcd_draw_point(8*(i%flag)+7-j+x,i/flag+y,color); } } } } intmain(intargc,char*argv[]) { intfd; //O_RDWR: 可读可写 fd=open("/dev/fb0",O_RDWR); //if(fd==-1) //if(fd=-1) if(-1==fd) { printf("opendev/fb0error! \n"); return0; } //内存映射,吧一个文件或者设备映射到一个进程的///地址空间中(内存),在进程中操作这块映射的内///存就相当于操作被映射的文件 //plcd存储了映射的地址空间的首地址 plcd=mmap(NULL,800*480*4, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); //如何把lcd上的第n个像素点显示成红色 //*(plcd+n)=0x00ff0000; //如何把坐标为(x,y)的像素点,显示成红色 //*(plcd+y*800+x)=0x00ff0000; //如何把整个屏幕全部显示白色 //循环 lcd_clean_screen(0xFFFFFFFF); //如何显示一个矩形 //lcd_draw_rect(50,50,100,100,0x00ff0000); //显示BMP图片 lcd_draw_bmp("",1,1,796,477); delayms(3000000); lcd_draw_bmp("",100,60,600,360); delayms(3000000); lcd_draw_bmp("",200,120,400,240); delayms(3000000); lcd_draw_bmp("",300,140,200,200); delayms(3000000); lcd_draw_bmpop("",1,1,796,477); //初始化串口 //intcom_fd=init_serial("/dev/s3c2410_serial3",9600); //lcd_draw_word(wo,0x00ff0000,32,16,100,100); monitor_touch(); close(fd); return0; } 5) 实物上电效果图 图7-1效果图1 图7-1效果图2 图7-1效果图3 附件1: 答辩问题回答记录表 学号: 姓名: 陈茜茜专业、班级: 14电子信息工程4班 老师所提问题: 能不能手动播放,实现上一张下一张和暂停 学生回答问题: 还未实现,我们只实现了图片显示,每人一种特效和自动播放以及照片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开发 电子相册 嵌入式 课程设计