基于嵌入式系统的数字相框设计大学课程设计说明书.docx

上传人:b****6 文档编号:4733374 上传时间:2022-12-08 格式:DOCX 页数:31 大小:156.20KB
下载 相关 举报
基于嵌入式系统的数字相框设计大学课程设计说明书.docx_第1页
第1页 / 共31页
基于嵌入式系统的数字相框设计大学课程设计说明书.docx_第2页
第2页 / 共31页
基于嵌入式系统的数字相框设计大学课程设计说明书.docx_第3页
第3页 / 共31页
基于嵌入式系统的数字相框设计大学课程设计说明书.docx_第4页
第4页 / 共31页
基于嵌入式系统的数字相框设计大学课程设计说明书.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

基于嵌入式系统的数字相框设计大学课程设计说明书.docx

《基于嵌入式系统的数字相框设计大学课程设计说明书.docx》由会员分享,可在线阅读,更多相关《基于嵌入式系统的数字相框设计大学课程设计说明书.docx(31页珍藏版)》请在冰豆网上搜索。

基于嵌入式系统的数字相框设计大学课程设计说明书.docx

基于嵌入式系统的数字相框设计大学课程设计说明书

长春大学

课程设计说明书

 

题目名称基于嵌入式系统的数字相框设计

院(系)运算机科学技术学院

专业(班级)软件10407

学生姓名王雅楠(03)刘阳(19)廖泉亮(15)李凯(25)

王志廷(28)刘福强(29)尹双霞(02)李铁成(23)

指导教师李念峰

起止日期2013-6-24至2013-7-14

目录错误!

未概念书签。

一设计目的错误!

未概念书签。

二设计内容错误!

未概念书签。

三设计要求错误!

未概念书签。

四设计进程错误!

未概念书签。

1设计原理错误!

未概念书签。

2程序结构分析错误!

未概念书签。

3功能实现错误!

未概念书签。

五系统测试错误!

未概念书签。

1测试目的错误!

未概念书签。

2测试条件错误!

未概念书签。

3测试方式错误!

未概念书签。

六设计心得错误!

未概念书签。

参考文献错误!

未概念书签。

附录错误!

未概念书签。

 

一、设计题目

基于嵌入式系统的数字相框设计

二、设计目的

开设本课程设计的目的是,通过本课程设计,提高学生的分析问题、解决问题的能力,巩固嵌入式系统的大体理论知识,进一步了解和把握课程中所教学的概念,方式。

同时通过本课程设计,全面综合应用所学过的基础知识,成立一个完整的嵌入式系统的开发进程的概念,并把握其中的要紧原理和方式,对已学过的嵌入式开发知识进行综合运用。

本课程设计的目的是通过开发一个消费类电子产品——数字相框,了解嵌入式产品开发的要紧步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培育学生独立完成比较复杂的实际系统设计的能力。

三、设计任务

作为一个消费类电子产品,数码相框整个系统要完成的大体功能大致如下:

1、用户界面友好,操作简便。

由于该产品的利用者大多是非专业人士,用户界面是不是清楚明了、操作是不是简捷方便成为用户是不是能迅速同意此产品的重要因素。

2、数字相框的功能应包括以下方面:

(1)在LCD屏上全屏循环显示多幅图像文件;

(2)人机交互界面设定各个模式的播放形式、输入信息

(2)支持触摸屏换页功能;

(3)支持在阅读图片的同时播放背景音乐

(4)支持JPEG格式的图片及wav格式的音乐

(5)支持图片特效切换功能

 

四、设计进程

1、设计原理

数字相框,也称为数码相框,其大体原理:

外观采纳一般相框的造型,把原先相框中间的照片部份换成液晶显示屏,配上电源,存储介质等,能够直接播放数码照片,使得一个相框内能够循环播放照片,比一般相框的单一功能更有优势。

性能方面,由于数字图像的解码算法比较复杂,而且大量图片需要从外部Flash存储器中读取,因此对嵌入式微处置器的性能要求比较高。

外部接口方面,该芯片最好能在外围直接支持CF卡的CompactFlash接口,还应提供按钮、LCD显示屏、触摸屏、声音输出通道等。

在本课程设计中,采纳了Intel的PXA270作为微处置器,完全能知足上述硬件平台的要求。

数字相框软件系统功能能够划分为五个模块:

(1)图片阅读模块,能够通过按键操纵选定某个图像或更新图像页(上一页、下一页)。

单击按钮时,主线程接收信号并传递给次线程,次线程依照信号给出相应的动作:

显示上一页或下一页的内容。

每一页中放置图片。

当抵达最后一页以后,不能当即返回到首页,在首页中,也不能当即抵达最后一页。

(2)播放模块,对阅读界面选定的图片进行循环播放。

按钮区域创建进程运行预览模块,右击退出返回到主菜单,退出时将进程杀死,释放内存空间。

(3)系统设置模块,可设置循环播放改换频率等。

(4)音乐模块,播放,关闭,音量大小。

右击并非退出音乐,只有单击关闭按钮才会关闭音乐。

2程序结构分析

(1)整体结构设计:

依照以上的功能要求,程序的模块划分和功能分析如以下图所示:

 

开始

 

开机界面

主菜单

图片浏览

扩展功能

退出模块

音乐模块

 

主题更改

显示时间

 

图1整体功能模块图

(2)图片阅读模块:

要紧有四个部份组成的,阅读上一张图片,下一张图片,扩放图片,和缩小图片。

此模块的功能是图片的显示。

在此模块中成立显卡与内存的映射,实现图片显示,在显示的进程中还需要实现图片的预览,这就需要拥有图片的缩放功能。

为了增强图片显示的美感,在此模块中,咱们还设计了多种图片显示的特效。

还要实现进程间的通信,获取其他进程发送来的信号,并执行相应操作。

图片浏览模块

扩放图片

缩小图片

下一张图片

上一张图片

 

图2图片阅读模块

 

(3)音乐模块:

在阅读优美的图片时,还能够听到悦耳的音乐。

播放,暂停。

那个模块的要紧功能确实是在整个程序运行的进程中进行音乐的播放。

此模块关于咱们来讲比较陌生,具有必然的难度,只是咱们会尽最大尽力将它设计成功,让数码相框在图片显示的同时配上优美的音乐。

音乐模块

 

返回主界面

播放列表

右击

播放所选歌曲

 

选择下一首

选择上一首

图3音乐播放流程图

3功能实现

(1)开发工具的选择:

本课程设计采纳嵌入式Linux作为软件开发平台。

在Linux操作系统平台上有多种嵌入式图形界面开发工具可供利用,要紧包括MicroWindows、MuniGUI、TinyX和Qt/Embedded等几种。

本课程设计将集中讨论在Qt/Embedded系统上数字相框的实现技术。

操作系统:

QTCreator.

QT/Embeded界面介绍:

当前嵌入式Linux在电话、PAD等手持信息设备领域的应用十分普遍。

各类手持设备是不是拥有图形用户办(GUI)已经成为其人机交互技术的关键表现,因此一个十分友好的图形用户界面(GUI)是必不可少的。

由于嵌入式系统硬件本身的多样性,嵌入式GUI应具有高度可移植性与可裁减性。

 

(2)文件治理共利用四个文件夹

image:

用于寄存所有要演示的图片

用于寄存处置文字所需的工具

jpeg-8:

用于寄存处置图片所需的工具

src:

用于寄存咱们编写的各类函数。

如:

特效函数,主函数,Makefile函数等。

(3)图片显示:

设置图片不透明:

effect:

:

effect()

{

setEffectType("opacity");

setStartValue;

setEndValue;

setDuration(10);

setDirection(QAbstractAnimation:

:

Forward);

m_easingCurve=QEasingCurve:

:

Linear;

}

设置图片预览的时刻:

intsequenceModel:

:

duration()

(4)WAV音乐:

voidslideShowEngine:

:

startSound()

{

QSoundbells(“G:

/”);

();

}

(5)图片的特效播放:

直接画图,Intdraw_jpeg0(fb_infofb_inf,u32_t*buf32,char*filename);百叶窗,intdraw_jpeg4(fb_infofb_inf,u32_t*buf32,char*filename);周围到中间,intdraw_jpeg8(fb_infofb_inf,u32_t*buf32,char*filename);第一设置第一个图片的EnterEffect的属性:

rotationForwardOutInquad开始坐标和终止坐标都为0。

DisplayEffect的属性:

scaleForwardOutInQuadStartVal的值为6。

Duration的值为3000。

ExitEffect的属性为:

posForwardInOutQuad其中的所有坐标都为0;设置第二个图片的EnterEffect的属性:

rotationForwardOutInquad开始坐标和终止坐标都为0,Duration为500。

DisplayEffect的属性:

rotationForwardOutInQuadEndVal的值为360。

Duration的值为4000。

ExitEffect的属性为:

posForwardInOutQuad其中的所有坐标都为0;设置第三张图片的属性值:

posForwardOutInQuad.EndPointF为600,Val值为650Duration值为3500。

DisplayEffect的值为:

opacityForwardOutQuad值都为Effect属性的值为:

posForwardOutQuad值为0.设置第四张图片的属性值:

EnterEffect属性的值:

posForwardLinearDuiation的值为Effect的属性值为:

posForwardInCubicEndVal的值为的值为Effect的属性值为:

posForwardOutQuad值都为0。

(6)停止图片的播放:

voidslideShowEngine:

:

stop()

{

m_currentState=Stopped;

endOfSlideShow();

}

(7)设置图片的属性:

<1>duration图片显示的时刻:

intsequenceModel:

:

duration()

{

nodeitemNode;

inttotalTime=0;

for(inti=0;i

{

itemNode=(i);

totalTime+=().duration();

totalTime+=().duration();

totalTime+=().duration();

}

returntotalTime;

}

<2>插入图片:

insertRow

boolsequenceModel:

:

insertRow(introw,constQModelIndex&parent)

{

Q_UNUSED(parent);

beginInsertRows(QModelIndex(),row,row+1);

nodeitem;

(item);

setModified(true);

endInsertRows();

returntrue;

}

<3>图片的保留:

voidsequenceModel:

:

save(constQString&filename)

{

.civuoleunaprogressbar

QFilefile(filename);

if(!

(QIODevice:

:

WriteOnly))

{

qDebug()<

")<

(8)U-boot的移植

<1>成立工作目录

下载源码Uboot的源码:

#mkdir/root/build_uboot

#cd/root/build_uboot

把下载的源码拷贝到该目录,解压:

并把解压后目录更名为u-boot

#tarjxvfu-boot

创建主代码复制board/Samsung/smdk2410目录为board/Samsung/gec2440

#cp–arfboard/Samsung/smdk2410board/Samsung/gec2440

并修改目录下的Makefile将COBJS:

=修改成COBJS:

=复制include/config/为include/config/

#cpinclude/config/include/config/gec2440

修改顶层Makefile:

创建目标板信息,在smdk2410_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920t

Smdk2410samsungs3c24x0后面添加gec2440_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920tgec2440samsungs3c24x0修改Makefile规那么,将

_LIBS:

=$(subst$(obj),,$(LIBS))$(subst$(obj),,$(LIBBOARD))改成:

_LIBS:

=$(subst$(obj),,$(LIBBOARD))$(subst$(obj),,$(LIBS)

<2>进入目录配置编译

配置#makegec2440_config

#make

编译结果生成烧入开发板

<3>关于触摸板驱动移植

①添加代码:

将touchscreen驱动源码(复制drivers/input/touchscreen目录下的添加到源码目录drivers/input/touchscreen中。

将ADC驱动源码(复制drivers/char目录下的及头文件添加到源码目录drivers/char中。

②修改drivers/input/touchscreen/Makefile文件。

#vimdrivers/input/touchscreen/Makefile

Obj-$(CONFIG_TOUCHSCREEN_GEC2440)+=gec2440_ts.

③修改drivers/input/touchscreen/Kconfig文件

#vimdrivers/input/touchscreen/Kconfig添加

ConfigTOUCHSCREEN_GEC2440

Tristate”GEC2440touchscreeninputdriver”

Help

SayYhereifyouhavethes3c2440touchscreen.

④修改drivers/char/Makefile文件

#vimdrivers/char/Makefile添加

Obj-$(CONFIG_GEC2440_ADC)+=

⑤修改drivers/char/Kconfig文件

#vidriver/char/Kconfig

添加configGEC2440_ADC

Tristate”GEC2440_ADC”

----help--------

SayYhereifyouhavethes3c2440ADC.

⑥修改arch/arm/plat-s3c/include/plat/文件

#vimarch/arm/plat-s3c/include/plat/devs.

添加:

structs3c2410_ts_mach_info{intdelay;}

⑦修改arch/arm/mach-s3c2410/文件

#vimarch/arm/mach-s3c2410/

添加

Staticstructs3c2410_ts_mach_infogec2410_ts_cfg_initdata={

.delay=10000,

.presc=49,

.oversampling_shift=2,

};

在staticvoid_initsmdk2410_map_io(void)函数中添加:

s3c24xx_init_touchscreen(&gec2410_ts_cfg);

⑧修改arch/arm/mach-s3c2410/文件

#vimarch/arm/mach-s3c2410/

在staticstructplatform_device*smdk2440_devices[]_initdata

结构体中添加:

&s3c_device_ts,

⑨编译配置内核

#makemenuconfig

配置菜单添加驱动到内核:

DeviceDrivers--→

Inputdevicesupport---→

[*]Touchscreens-----→

<*>GEC2440touchscreeninputdriver

Characterdevices---→

<*>GEC2440_ADC

编译内核生成静态驱动模块

#make

⑩修改arch/arm/plat-s3c/include/plat/文件

#vimarch/arm/plat-s3c/include/plat/

添加:

structs3c2410_ts_mach_info{

intdelay;

intpresc;

intoversampling_shift;

};

void_init3c24xx_init_touchscreen(structs3c2410_ts_mach_info*hard_s3c2410_ts_info);

externstructplatform_devices3c_device_ts;

修改arch/arm/plat-s3c24xx/文件

#vimarch/arm/plat-s3c24xx/

在文件后面添加

/*Touchscreen*/

staticstructs3c2410_ts_mach_infos3c2410_ts_info;

void_inits3c24xx_init_touchscreen(structs3c2410_ts_mach_info*hard_s3c2410_ts_info);

{

memcpy($s3c2410_ts_info,hard_s3c2410_ts_info,sizeof(structs3c2410_ts_mach_info));

}

EXPORT_SYMBOL(s3c24xx_init_touchscreen);

structplatform_devices3c_device_ts={

.name=”s3c2410_ts”,

.id=-1,

.num_resources=ARRAY_SIZE(s3c_adc_resource),

.resource=s3c_adc_resource,

.dev={

.platform_data=$s3c2410_ts_info,

}

EXPORT_SYMBOL(s3c_device_ts);

在根文件系统中成立相关设备节点:

#mkdir/dev/input

#mknod/dev/inputevent0c1364

#mknod/dev/input/mouse0c1332

提示“…Read-onlyfilesystem”,或”mkdir:

cannotcreatedirectory‘/dev/input’:

Fileexists”.

解决方式如下:

#chmod777/dev/#mount–oremountrw/

基于qt3平台的应用程序

 

<9>

 

(9)驱动的移植

<1>关于USB驱动移植

①修改arch/arm/mach-s3c2410/文件

#include

#include

#include

#include

Staticstructs3c2410_hcd_infousb_gec2410_info={

.port[0]={

.flags=S3C2410_HCDFLG_USED,

};

Intusb_gec2410_init(void){

Unsignedlongupllvalue=(0x78<<12)|0xo2<<4)|(0x03);

Prink(“USBControl,(c)gec2410\n”);

&usb_gec2410_info;

while(upllvalue!

=_raw_readl(S3C2410_UPLLCON)){

_raw_write(upllvalue,S3C2410_UPLLCON);

mdelay

(1);

}

}return0;}

<2>在staticvoid_initsmdk2410_map_io()函数中添加usb_sbc2410_init()函数usb_getc2410_init();

<3>内核配置

支持热插拔

Generalsetup->

[*]Configurestandardkernelfeatures(forsmallsystems)->

<*>Supportforhot-pluggabledevices

让内核支持USB设备

Devicedrivers

Blockdevices-->

<*>LowPerformanceUSBBlockdriverSCSIdevicesupport-->

<*>SCSIgenericsupport

<*>ProbeallLUNsoneachSCSIdeviceUSBsupport-->

<*>SupportforHost-sideUSB

[*]USBdevicefilesystem

<*>USBMassStoragesupport

<*>USBMonitor

加入MSDOS文件系统和VFAT文件系统支持(为适应挂载U盘)

Filesystems-->

DOS/FAT/NTFilesystems-->

<*>MSDOSfssupport

<*>VFAT(Windows-95)fssupport

(936)DefaultcodepageforFAT

(cp936)DefaultiocharsetforFAT

使能(DOS分区)CONFIG_MSDOS_PARTITION

Filesystems-->

PartitionTypes-->

[*]PCBIOS(MSDOSpartitiontables)support

添加对中文字体库的支持

Filesystems-->

-*-Nativelanguagesupport-->

<*>SimplifiedChinesecharset(CP936,GB2312)

<*>NLSUTF8编译#make

五、系统测试

1测试目的

软件测试是软件开发的最后一个时期,测试的目的不是证明所开发的软件没有错误,而是尽可能的多发觉软件设计开发全周期中各个时期的错误,以便分析错误的性质与位置而加以纠正,纠正进程涉及到更正或从头设计相关的文档活动。

从而幸免用户在利历时显现不可预测的异样而致使整个系统崩溃。

二、测试条件

(1)系统条件

Linux操作系统

(2)人员选择

单元测试:

每一个模块的设计人员

系统测试:

设计小组的全部成员

验收测试:

α测试:

在咱们设计小组成员的指导下,进行测试

β测试:

完全由不是本小组的人员进行测试

3、测试方式

采纳黑盒测试和白盒测试兼并的测试方式,每当完成一项事件的处置时,便执行程序,进行测试,每完成一个模

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1