基于Linux的课程设计报告题目:数码相框班级:1311电科姓名:张俊(2013111162)万成龙(2013111143)黄娇(2013111120)组号:第18组数码相框一、课程设计的目的:本课程设计的目的是为了提高学生分析问题、解决问题的能力,巩固嵌入式系统的基本理论知识,进一步了解和掌握课程中所讲授的概念,方法。同时通过本课程设计,全面综合应用所学过的基础知识,建立一个完整的嵌入式系统的开发过程的概念,并掌握其中的主要原理和方法。本课程设计是通过开发一个消费类电子产品——数字相框,了解嵌入式产品开发的主要步骤,包括需求分析、系统结构设计、图形界面设计、驱动程序、功能优化、系统测试等,从而培养学生独立完成比较复杂的实际系统设计的能力。二、嵌入式系统和嵌入式Linux:嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的“器件”。嵌入式处理器目前趋向用32位甚至64位的高性能处理器,相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通讯设备等等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(FlashMemory)作为存储介质。本章主要介绍嵌入式系统的概念,及Linux操作系统的特点和优势,并就开发平台Linux内核做主要说明和分析。三、数码相框的操作步骤:1、数码相框编译、运行步骤1.1安装交叉编译器cp/home/book/Desktop/arm-linux-gcc-4.3.2.tgz./tarzxvfarm-linux-gcc-4.3.2.tgz-C/sudogedit/root/.bashrc,在文件末尾添加以下语句exportPATH=$PATH:/usr/local/arm/4.3.2/bin关闭终端,重新启动终端使环境变量修改生效1.2安装freetype库cp/home/book/Desktop/freetype-2.4.10.tar.bz2./tarjxvffreetype-2.4.10.tar.bz2cdfreetype-2.4.10./configure--host=arm-linuxmakemakeDESTDIR=$PWD/tmpinstallcptmp/usr/local/lib/*so*/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/-d-rfcptmp/usr/local/include/*/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include/-rf1.3交叉编译安装libjpeg库2、JZ2440开发板系统移植步骤:2.1安装openJtag驱动2.2安装dnw驱动2.3安装串口软件2.4安装sourceinsight2.5制作uboot,kernel,rootfs镜像把arch/arm/boot/uImage拷贝出来cd/work/nfs_root/mkdirtmpcpfs_qtopia.tar.bz2tmp/cdtmp/tarjxvffs_qtopia.tar.bz2mv/home/book/Desktop/mkyaffs2image./chmod777mkyaffs2image./mkyaffs2imagefs_qtopiafs_qtopia.yaffs2拷贝fs_qtopia.yaffs2到桌面2.6烧写uboot,kernel,rootfs镜像文件1将开发板设置从norflash启动,重启开发板,按任意键进入uboot输入q,进入uboot命令模式,输入命令nanderase擦除整个nandflash内容2设置开发板从nand启动,发现开发板已经无法正常启动,需要重新烧写系统使用oflash烧写u-boot.bin,从windows命令窗口使用oflash,将oflash烧写到nandflash烧写内核和根文件系统可以使用dnw(WIN7以上系统不能使用)或者tftp方式,下面以tftp方式来烧写a.从norflash启动开发板b.输入任意键进入bootc.输入q,进入命令行界面d.输入printenv命令查看开发板环境变量,查看开发板ip,将PC的IP设置为serverip,在boot命令模式下输入pingserveripe.打开tftp软件,设置镜像目录和serveripf.在串口上输入tftp30000000uImage将内核镜像从PC上下载到开发板然后使用以下命令烧写内核nanderasekernelnandwrite.jffs230000000kernel烧写内核g.烧写根文件系统到nandflashtftp30000000fs_qtopia.yaffs2nanderaserootnandwrite.yaffs300000000x00260000$(filesize),如果此处出错,则使用nandscrub命令将nandflash重新擦除,再重复上面步骤将开发板设置从nandflash启动,重启开发板。//数码相框tarjxvfrootfs_digitpic.tar.bz2arm-linux-gccdisp_pic.c-odisp_pic-ljpegcpdisp_picdog.jpgfs_mini_mdev_digitpic/./mkyaffs2imagefs_mini_mdev_digitpic/rootfs_yaffs2chmod777rootfs_yaffs2tftp30000000rootfs_yaffs2nanderaserootnandwrite.yaffs300000000x00260000$(filesize)./disp_picdog.jpg四、实验效果图及分析1、数字相框软件系统功能可以划分为三个模块:1)图片浏览模块,可以通过按键控制选定某个图像或更新图像页(上一页、下一页)。2)播放模块,对浏览界面选定的图片进行循环播放。3)系统设置模块,可设置循环播放更换频率等。实验图如下:本设计中包括了浏览、循环播放和配置三个界面模块。这些模块之间需要进行通信,利用Qt提供的信号/槽机制很好地解决了这几问题,每个模块中都有自己定义的一些信号和槽,已发送给其他模块或者从其他模块接受到对应信号后作出回应。数字相框在初始化时会扫描指定目录下(包括子目录)的所有支持图片文件,并将其存放在列表中,以备之后的浏览界面生成缩略图。本系统使用Qt提供的QDir类实现遍历目录的功能,在遍历目录的同时通过设置文件类型过滤位来获得指定文件,并使用一个双向的字符串指针链表来记录扫描得到的结果。运行程序后的调出的图片:任意显示的图库中图片:五、课程设计总结与体会本次设计是在Linux平台上,基于QT编译数码相框。在设计的过程中,利用虚拟机创建一个系统,然后在ubuntu10操作系统中搭建开发环境。熟悉嵌入式Linux系统的特点和结构,利用开发板,进行软件程序的编写及烧写,最后实现简单的数码相框功能。数码相框要求简洁实用,界面美观,力求给人以精神上的享受。本设计围绕这一目标,突出界面的美化,如幻灯片的切换等。该数码相框功能简单,大体框架已具备。本设计基本实现了数码框的功能,但其设计的硬件极其简单,由于成本,时间,技术等客观条件,无法实现较复杂的功能。本设计对嵌入式系统中很重要的一个部分,驱动程序的开发并未全部涉及。驱动程序开发是嵌入式系统中一个非常重要的环节,要开发一个数码相框系统,需要编写大连设备的驱动程序代码。