1、基于嵌入式系统的数字相框设计大学课程设计说明书长 春 大 学课 程 设 计 说 明 书题目名称 基于嵌入式系统的数字相框设计 院(系) 运算机科学技术学院 专业(班级) 软件 10407 学生姓名 王雅楠(03) 刘阳(19) 廖泉亮(15) 李凯(25) 王志廷(28) 刘福强(29) 尹双霞(02) 李铁成(23) 指导教师 李 念 峰 起止日期 2013-6-24至2013-7-14 目 录 错误!未概念书签。一 设计目的 错误!未概念书签。二 设计内容 错误!未概念书签。三 设计要求 错误!未概念书签。四 设计进程 错误!未概念书签。1 设计原理 错误!未概念书签。2 程序结构分析 错
2、误!未概念书签。3 功能实现 错误!未概念书签。五 系统测试 错误!未概念书签。1 测试目的 错误!未概念书签。2 测试条件 错误!未概念书签。3 测试方式 错误!未概念书签。六 设计心得 错误!未概念书签。参考文献 错误!未概念书签。附录 错误!未概念书签。一、设计题目 基于嵌入式系统的数字相框设计二、设计目的开设本课程设计的目的是,通过本课程设计,提高学生的分析问题、解决问题的能力,巩固嵌入式系统的大体理论知识,进一步了解和把握课程中所教学的概念,方式。同时通过本课程设计,全面综合应用所学过的基础知识,成立一个完整的嵌入式系统的开发进程的概念,并把握其中的要紧原理和方式,对已学过的嵌入式开
3、发知识进行综合运用。本课程设计的目的是通过开发一个消费类电子产品数字相框,了解嵌入式产品开发的要紧步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培育学生独立完成比较复杂的实际系统设计的能力。三、设计任务作为一个消费类电子产品,数码相框整个系统要完成的大体功能大致如下:1、用户界面友好,操作简便。由于该产品的利用者大多是非专业人士,用户界面是不是清楚明了、操作是不是简捷方便成为用户是不是能迅速同意此产品的重要因素。2、数字相框的功能应包括以下方面:(1)在LCD屏上全屏循环显示多幅图像文件;(2)人机交互界面设定各个模式的播放形式、输入信息(2)支持触摸屏换
4、页功能;(3)支持在阅读图片的同时播放背景音乐 (4)支持JPEG格式的图片及wav格式的音乐 (5)支持图片特效切换功能四、设计进程1、设计原理数字相框,也称为数码相框,其大体原理:外观采纳一般相框的造型,把原先相框中间的照片部份换成液晶显示屏,配上电源,存储介质等,能够直接播放数码照片,使得一个相框内能够循环播放照片,比一般相框的单一功能更有优势。性能方面,由于数字图像的解码算法比较复杂,而且大量图片需要从外部Flash存储器中读取,因此对嵌入式微处置器的性能要求比较高。外部接口方面,该芯片最好能在外围直接支持CF卡的Compact Flash接口,还应提供按钮、LCD显示屏、触摸屏、声音
5、输出通道等。在本课程设计中,采纳了Intel的PXA270作为微处置器,完全能知足上述硬件平台的要求。数字相框软件系统功能能够划分为五个模块:(1)图片阅读模块,能够通过按键操纵选定某个图像或更新图像页(上一页、下一页)。单击按钮时,主线程接收信号并传递给次线程,次线程依照信号给出相应的动作:显示上一页或下一页的内容。每一页中放置图片。当抵达最后一页以后,不能当即返回到首页,在首页中,也不能当即抵达最后一页。(2)播放模块,对阅读界面选定的图片进行循环播放。按钮区域创建进程运行预览模块,右击退出返回到主菜单,退出时将进程杀死,释放内存空间。(3)系统设置模块,可设置循环播放改换频率等。(4)音
6、乐模块,播放,关闭,音量大小。右击并非退出音乐,只有单击关闭按钮才会关闭音乐。 2程序结构分析(1)整体结构设计:依照以上的功能要求,程序的模块划分和功能分析如以下图所示:开始开机界面主菜单图片浏览扩展功能退出模块音乐模块主题更改显示时间 图1整体功能模块图(2) 图片阅读模块:要紧有四个部份组成的,阅读上一张图片,下一张图片,扩放图片,和缩小图片。此模块的功能是图片的显示。在此模块中成立显卡与内存的映射,实现图片显示,在显示的进程中还需要实现图片的预览,这就需要拥有图片的缩放功能。为了增强图片显示的美感,在此模块中,咱们还设计了多种图片显示的特效。还要实现进程间的通信,获取其他进程发送来的信
7、号,并执行相应操作。图片浏览模块扩放图片缩小图片下一张图片上一张图片 图2图片阅读模块(3)音乐模块:在阅读优美的图片时,还能够听到悦耳的音乐。播放,暂停。那个模块的要紧功能确实是在整个程序运行的进程中进行音乐的播放。此模块关于咱们来讲比较陌生,具有必然的难度,只是咱们会尽最大尽力将它设计成功,让数码相框在图片显示的同时配上优美的音乐。音乐模块返回主界面播放列表右击播放所选歌曲选择下一首选择上一首 图3音乐播放流程图3功能实现(1)开发工具的选择:本课程设计采纳嵌入式Linux作为软件开发平台。在Linux操作系统平台上有多种嵌入式图形界面开发工具可供利用,要紧包括MicroWindows、M
8、uniGUI、TinyX和Qt/Embedded等几种。本课程设计将集中讨论在Qt/Embedded系统上数字相框的实现技术。操作系统: QT Creator.QT/Embeded界面介绍: 当前嵌入式Linux在电话、PAD等手持信息设备领域的应用十分普遍。各类手持设备是不是拥有图形用户办(GUI)已经成为其人机交互技术的关键表现,因此一个十分友好的图形用户界面(GUI)是必不可少的。由于嵌入式系统硬件本身的多样性,嵌入式GUI应具有高度可移植性与可裁减性。(2)文件治理 共利用四个文件夹 image:用于寄存所有要演示的图片 :用于寄存处置文字所需的工具 jpeg-8:用于寄存处置图片所需
9、的工具 src:用于寄存咱们编写的各类函数。如:特效函数,主函数,Makefile函数等。(3)图片显示:设置图片不透明:effect:effect() setEffectType(opacity); setStartValue; setEndValue; setDuration(10); setDirection(QAbstractAnimation:Forward); m_easingCurve=QEasingCurve:Linear;设置图片预览的时刻:int sequenceModel:duration()(4)WAV音乐: void slideShowEngine:startSoun
10、d() QSound bells(“G:/”);(); (5)图片的特效播放:直接画图,Int draw_jpeg0(fb_info fb_inf,u32_t *buf32, char *filename);百叶窗,int draw_jpeg4(fb_info fb_inf,u32_t *buf32, char *filename); 周围到中间,int draw_jpeg8(fb_info fb_inf,u32_t *buf32, char *filename);第一设置第一个图片的Enter Effect 的属性: rotation Forward OutInquad 开始坐标和终止坐标都
11、为0。Display Effect 的属性: scale Forward OutInQuad Start Val的值为6。Duration的值为3000。Exit Effect的属性为:pos Forward InOutQuad 其中的所有坐标都为0;设置第二个图片的Enter Effect 的属性: rotation Forward OutInquad 开始坐标和终止坐标都为0,Duration 为500。Display Effect 的属性: rotation Forward OutInQuad End Val的值为360。Duration的值为4000。Exit Effect的属性为:p
12、os Forward InOutQuad 其中的所有坐标都为0;设置第三张图片的属性值:pos Forward OutInQuad .End Point F 为600, Val 值为650 Duration 值为3500。Display Effect 的值为:opacity Forward OutQuad 值都为 Effect 属性的值为:pos Forward OutQuad 值为0.设置第四张图片的属性值:Enter Effect 属性的值:pos Forward Linear Duiation的值为 Effect的属性值为:pos Forward InCubic End Val的值为的值
13、为 Effect的属性值为:pos Forward OutQuad 值都为0。(6)停止图片的播放:void slideShowEngine:stop() m_currentState=Stopped; endOfSlideShow();(7)设置图片的属性: duration图片显示的时刻:int sequenceModel:duration() node itemNode; int totalTime=0; for(int i=0; irowCount();i+) itemNode=(i); totalTime+=().duration(); totalTime+=().duration(
14、); totalTime+=().duration(); return totalTime;插入图片:insertRowbool sequenceModel:insertRow (int row, const QModelIndex &parent) Q_UNUSED(parent); beginInsertRows(QModelIndex(), row, row +1); node item; (item); setModified(true); endInsertRows(); return true; 图片的保留:void sequenceModel:save(const QString
15、 &filename) . ci vuole una progress bar QFile file(filename); if(!(QIODevice:WriteOnly) qDebug() tr(cannot open file for writing: ) qPrintable() endl; return;(8)U-boot的移植 成立工作目录 下载源码Uboot的源码: #mkdir/root/build_uboot #cd/root/build_uboot把下载的源码拷贝到该目录,解压:并把解压后目录更名为u-boot#tar jxvf u-boot创建主代码 复制board/Sa
16、msung/smdk2410 目录为board/Samsung/gec2440#cp arf board/Samsung/smdk2410 board/Samsung/gec2440并修改目录下的Makefile将COBJS:= 修改成COBJS:=复制include/config/为include/config/ #cp include/config/ include/config/gec2440修改顶层Makefile: 创建目标板信息,在smdk2410_config:unconfig$(MKCONFIG)$(:_config=)arm arm920tSmdk2410 samsung s
17、3c24x0 后面添加gec2440_config:unconfig$(MKCONFIG)$(:_config=)arm arm920t gec2440 samsung s3c24x0 修改Makefile规那么,将_LIBS:=$(subst$(obj),$(LIBS)$(subst$(obj),$(LIBBOARD)改成:_LIBS:=$(subst$(obj),$(LIBBOARD)$(subst$(obj),$(LIBS)进入目录配置编译配置#make gec2440_config#make编译结果生成烧入开发板关于触摸板驱动移植 添加代码:将touchscreen驱动源码(复制dri
18、vers/input/touchscreen目录下的添加到源码目录drivers/input/touchscreen中。将ADC驱动源码(复制drivers/char目录下的及头文件添加到源码目录drivers/char中。修改drivers/input/touchscreen/Makefile文件。#vim drivers/input/touchscreen/MakefileObj-$(CONFIG_TOUCHSCREEN_GEC2440) +=gec2440_ts.修改drivers/input/touchscreen/Kconfig文件#vim drivers/input/touchsc
19、reen/Kconfig添加Config TOUCHSCREEN_GEC2440 Tristate”GEC2440 touchscreen input driver” Help Say Y here if you have the s3c2440 touchscreen.修改drivers/char/Makefile文件#vim drivers/char/Makefile添加Obj-$(CONFIG_GEC2440_ADC)+=修改drivers/char/Kconfig文件#vi driver/char/Kconfig添加config GEC2440_ADC Tristate”GEC2440
20、_ADC” -help-Say Y here if you have the s3c2440 ADC.修改arch/arm/plat-s3c/include/plat/文件#vim arch/arm/plat-s3c/include/plat/devs.添加:struct s3c2410_ts_mach_info int delay; 修改arch/arm/mach-s3c2410/文件#vim arch/arm/mach-s3c2410/添加Static struct s3c2410_ts_mach_info gec2410_ts_cfg_initdata= .delay = 10000,
21、.presc = 49, .oversampling_shift=2,;在 static void_init smdk2410_map_io(void)函数中添加:s3c24xx_init_ touchscreen(&gec2410_ts_cfg);修改arch/arm/mach-s3c2410/文件#vim arch/arm/mach-s3c2410/在 static struct platform_device*smdk2440_devices_initdata结构体中添加:&s3c_device_ts,编译配置内核 #make menuconfig配置菜单添加驱动到内核:Device D
22、rivers- Input device support- * Touchscreens- GEC2440 touchscreen input driver Character devices - GEC2440_ADC编译内核生成静态驱动模块#make修改arch/arm/plat-s3c/include/plat/文件#vim arch/arm/plat-s3c/include/plat/添加:struct s3c2410_ts_mach_info int delay; int presc; int oversampling_shift;void_init 3c24xx_init_touc
23、hscreen(struct s3c2410_ts_mach_info*hard_s3c2410_ts_info);extern struct platform_device s3c_device_ts;修改arch/arm/plat-s3c24xx/ 文件#vim arch/arm/plat-s3c24xx/ 在文件后面添加/*Touchscreen*/static struct s3c2410_ts_mach_info s3c2410_ts _info;void_init s3c24xx_init_touchscreen(struct s3c2410_ts_mach_info*hard_s
24、3c2410_ts_info);memcpy($s3c2410_ts_info, hard_s3c2410_ts_info,sizeof(struct s3c2410_ts_mach_info);EXPORT_SYMBOL(s3c24xx_init_touchscreen);struct platform_device s3c_device_ts= .name=” s3c2410_ts”, .id=-1, .num_resources=ARRAY_SIZE(s3c_adc_ resource), . resource = s3c_adc_ resource,.dev= .platform_da
25、ta=$s3c2410_ts_info,EXPORT_SYMBOL(s3c_device_ts);在根文件系统中成立相关设备节点:#mkdir /dev/input#mknod/dev/input event0 c 13 64 #mknod /dev/input/mouse0 c 13 32提示“Read-only file system”,或”mkdir:cannot create directory /dev/input:File exists”.解决方式如下: #chmod 777/dev/ #mount o remount rw/基于qt3平台的应用程序(9)驱动的移植 关于USB驱动
26、移植 修改arch/arm/mach-s3c2410/文件#include#include#include#includeStatic struct s3c2410_hcd_info usb_gec2410_info= .port0= .flags=S3C2410_HCDFLG_USED,;Int usb_gec2410_init(void) Unsigned long upllvalue=(0x7812)|0xo24)|(0x03);Prink(“USB Control,(c)gec2410n”);&usb_gec2410_info;while(upllvalue!=_raw_readl(S
27、3C2410_UPLLCON) _raw_write(upllvalue,S3C2410_UPLLCON); mdelay(1);return 0;在static void_init smdk2410_map_io()函数中添加usb_sbc2410_init()函数usb_getc2410_init();内核配置 支持热插拔 General setup- *Configure standard kernel features(for small systems)- Support for hot-pluggable devices让内核支持USB设备Device drivers Block
28、devices - Low Performance USB Block driver SCSI device support- SCSI generic support Probe all LUNs on each SCSI device USB support- Support for Host-side USB *USB device filesystem USB Mass Storage support USB Monitor加入 MSDOS文件系统和VFAT文件系统支持(为适应挂载U盘)File systems- DOS/FAT/NT Filesystems- MSDOS fs sup
29、port VFAT (Windows-95) fs support (936) Default codepage for FAT (cp936) Default iocharset for FAT使能(DOS分区) CONFIG_MSDOS_PARTITIONFile systems-Partition Types- *PC BIOS (MSDOS partition tables) support添加对中文字体库的支持File systems-*- Native language support- Simplified Chinese charset(CP936,GB2312) NLS UT
30、F8 编译 #make五、系统测试1测试目的软件测试是软件开发的最后一个时期,测试的目的不是证明所开发的软件没有错误,而是尽可能的多发觉软件设计开发全周期中各个时期的错误, 以便分析错误的性质与位置而加以纠正,纠正进程涉及到更正或从头设计相关的文档活动。从而幸免用户在利历时显现不可预测的异样而致使整个系统崩溃。二、测试条件(1)系统条件Linux操作系统(2)人员选择单元测试: 每一个模块的设计人员系统测试: 设计小组的全部成员验收测试:测试:在咱们设计小组成员的指导下,进行测试测试:完全由不是本小组的人员进行测试3、测试方式采纳黑盒测试和白盒测试兼并的测试方式,每当完成一项事件的处置时,便执行程序,进行测试,每完成一个模
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1