粤嵌开发板电子相册嵌入式课程设计文档格式.doc
《粤嵌开发板电子相册嵌入式课程设计文档格式.doc》由会员分享,可在线阅读,更多相关《粤嵌开发板电子相册嵌入式课程设计文档格式.doc(29页珍藏版)》请在冰豆网上搜索。
2.1系统方案设计 3
2.2硬件电路设计 5
2.3软件程序设计 5
3.方案实施 6
3.1软件程序调试过程 6
4.结果与结论 12
4.1设计结果 12
4.2结论 13
5.收获与致谢 14
6.参考文献 15
7.附件 16
附件1:
答辩问题回答记录表 27
1.设计的工程背景
1.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。
综上所述,提高技术水平就是以市场流行需求为导向进行研发,特别是像嵌入式种工程类的技术。
在条件允许的情况下,我们甚至应该时刻与国际接轨,掌握当前最领先的技术。
1.2任务分析
设计的目标是制作5种电子相册特效,每个人负责制作一种。
在制作前期,首先要查阅资料,了解电子相册的背景和制作原理,对其形成大致的设计方案。
然后,根据资料安装linux和虚拟机软件,搭建开发环境,安装交叉编译。
最后,根据自己设计的方案进行尝试,不断修改错误,直到达到目标。
1.3课题项目管理计划进度表
序号
各阶段完成的内容
完成时间
查阅相关文献资料、课题调研
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系统方案设计
目前市场上的主要设计方案:
①单芯片解决方案
以单芯片的解决方案,以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)”函数实现图片位置,大小的改变,再加上延时函数的运用,实现五种图片特效。
ARM芯片
CortexA8
时钟电路
LCD显示
USB接口
电路
图2-3硬件总框图
2.3软件程序设计
总设计方案:
大
层叠(图形浮现大小及位置)
反转(反转函数)
小
3.方案实施
3.1软件程序调试过程
①安装虚拟机和linux软件。
②搭建环境和安装交叉编译。
1)找到ubuntu系统工作目录
图3-1
2)在windos系统下找到该工作目录并创建一个文件夹,将arm-2009q3.tar.bz2复制过去。
图3-2
3)启用共享文件夹
图3-3
4)主机路径为windos系统下arm-2009q3.tar.bz2的目录,名称自动生成
图3-4
图3-5
5)可以在文件系统中/mnt/hgfs/share目录下看到这些。
图3-6
6)为了可以将arm-2009q3.tar.bz2复制到/opt目录下,/opt默认所有者为root,所以要更改/opt的所有者为我登陆的账户。
图3-7
7)将文件复制到/opt目录下。
图3-8
8)执行如下解压命令。
②聚焦逐现特效部分调试
原本打算做图片翻转的特效,在网上查到图片翻转特效的算法并经过修改如下:
//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);
lcd_draw_bmp("
zsone.bmp"
100,60,600,360);
zstwo.bmp"
200,120,400,240);