1、广州大学华软软件学院本科毕业论文论文题目 嵌入式数码相框的设计与实现 专 业 电子信息工程 班 级 11级嵌入式应用软件开发1班 姓 名 许家淇 学 号 1140907104 指导教师 徐礼国 广州大学华软软件学院电子系2015年 4 月摘要 本设计采用搭载s3c2440芯片的TQ2440开发板作为硬件平台,并在该硬件平台上移植了u-boot,linux内核,根文件系统,构成一个嵌入式linux操作系统,该系统的最大特点就是,可以根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求,主要用途就是对软硬件资源的调度与分配。 在搭载了linux嵌入式系统的TQ2440开发板上
2、,本文设计了一个界面应用程序,该应用程序主要功能为:用户通过对界面的操作就可对数码相框中图片的浏览与管理,以及进行幻灯片播放功能。关键词: TQ2440;嵌入式系统;数码相框;2ABSTRACT This curriculum designt uses the TQ2440 development board with the S3C2440 chip as the hardware platform and transplant u-boot, the hardware platform in the Linux kernel, root file system, constitute an
3、 embedded Linux operating system, the biggest feature of the system is that can be tailored to meet the hardware and software according to the demand of application, function, reliability, cost, volume requirements of application system, the main purpose is to soft hardware resource allocation and s
4、cheduling. When equipped with a TQ2440 development board Linux embedded system, this paper designed an interface application program, the main function of the application program so that the user can browse and management of the image in the digital photo frame through the interface, and a slideshow
5、 feature.KEY WORDS: TQ2440; Embedded System; Digital Photo Frame目 录1.前 言11.1背景与研究意义11.2本论文的主要研究内容12. 数码相框总体设计与论证22.1数码相框总体设计方案22.2.器件选型:32.3论证33. 嵌入式linux系统构建43.1 u-boot的移植43.2 Linux内核的移植53.2.1 准备工作63.2.2 修改内核源码顶层63.2.3 设置 flash 分区63.2.4 修改机器码63.2.5 配置编译内核73.2.6 Linux内核编译与烧写103.3制作根文件系统113.4.驱动的设计11
6、3.4.1关于USB驱动设计113.4.2 关于LCD驱动设计123.4.3关于触摸屏驱动设计134. 界面应用程序144.1程序作用简介:144.2界面功能总框架:144.3程序主流程介绍164.4程序模块介绍174.4.1程序模块实现概述:174.4.2页面规划模块:184.4.3调试模块:184.4.4图片解析模块:184.4.5字体解码模块:194.4.6输入模式模块:194.4.7显示模块:205.系统分析和测试215.1系统分析方法简述215.2测试215.2.1 bmp图标显示测试215.2.2 jpeg图片解析测试215.2.3 u盘挂载测试235.3测试结论246. 总结25
7、参考文献26附 录27致 谢28IV1.前 言1.1背景与研究意义 随着PC时代数码技术的发展,数码相机以其低廉的价格,方便的操作成为摄影器材的发展方向。目前,很多家庭都持有数码相机,一次拍摄下来的照片往往会有上百张,使用PC机来查看拍摄下来的图片,过于依赖PC机。 并且众多的数码摄影产生的相片保存起来后,查看过程繁琐不方便,要想再把这些相片都冲印出来回味、欣赏,即浪费又不环保。数码相框将彻底解放那些积压下来的数码相片,让你人生中值得记忆的每一个瞬间从此不再被埋没在硬盘里面。数码相框可以不但可以节约了照片冲印的纸张,而且还可用来美化家居,构造精致生活享受。分享快乐、展示成功;带给父母,缓解思念
8、。作为数码相机的一种附属产品,数码相框不仅具有传统相框的特点,而且可以直接从数码相机中选择心仪的照片,随时更新照片。数码相框还可以摆放在家居显眼之处,成为现代家庭一道靓丽的风景线。1.2本论文的主要研究内容 本设计是以TQ2440为硬件平台并搭载嵌入式Linux操作系统为基础,完成图片可轮播、查看的数码相框系统设计。主要研究内容包括以下几个方面:(1)分析数码相框系统需求,对所用硬件器件选型,嵌入式系统的选择,以及确定界面程序实现方式。(2)在基于ARM9微处理器的TQ2440平台上搭建嵌入式系统开发环境。(3)在嵌入式Linux操作系统平台上完成实现了uboot、内核的移植和构建根文件系统等
9、工作。(4)对数码相框的界面进行研究,通过界面程序实现了友好的人机交互UI界面。292. 数码相框总体设计与论证2.1数码相框总体设计方案本文设计的数码相框系统,完成了实现图片的查看、轮播功能的系统设计方案设计。该数码相框系统依靠ARM微处理器和嵌入式Linux操作系统作为平台,同时结合界面应用程序,通过对触摸屏的操作,在LCD屏幕上显示图片,实现数码相框系统与外界的信息交互,从而能在TQ2440上实现数码相框的基本功能。如图2.1所示图2-1 数码相框系统2.2.器件选型: 本文选择以搭载ARM处理器的三星s3c2440芯片为核心,搭建硬件平台,主要原因是ARM处理器具有以下特点:(1)体积
10、小、低功耗、低成本、高性能。(2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位 器件。(3)大量使用寄存器,指令执行速度更快。(4)大多数数据操作都在寄存器中完成。(5)寻址方式灵活简单,执行效率高。(6)指令长度固定。2.3论证 本课程设计采用的是linux系统,属于嵌入式系统的一种。对比开发常见的嵌入式操作系统WinCE、uCOS-II、VxWorks等。嵌入式linux操作系统用途更为广泛,并且是开源系统软件,其主要功能是分配、调度工作,控制协调并分发软、硬件资源;该系统是功能模块化的,即一个功能对应一个模块,添加一个功能只需要增加一个对应模块就可以。嵌入
11、式linux操作系统突出的特点是系统实时的高效性、移植性好、,众多的系统软件开源等。嵌入式操作系统与普通的计算机操作系统相比,除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等,还有系统功能可裁剪、系统工具开源里面以及与嵌入式ARM微处理器兼容性好等特点。3. 嵌入式linux系统构建3.1 u-boot的移植 TQ2440的启动需要Bootloader,Bootloader是硬件启动的引导程序,是启动操作系统的根本,是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状
12、态,以便为最终调用准备好环境。本课程设计采用的u-boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。简单的说,u-boot就是开源的且通用的Bootloader。由于u-boot源代码十分庞大,本文无法一一列出代码,而且,移植u-boot到TQ2440开发板的过程十分的复杂与繁琐,所以,本文只对移植u-boot关键部分作出说明:(1) 获取u-boot源码: 登录官网下载u-boot-源码 ,然后解压:# tar xzf u-boot-2010.03.tar.bz2 此时我们就得到了u-boot 2010.03版本的源码。(2) 根据系统的处理器平台选
13、择对应的目标编译项:(A)在uboot-2010.03的根目录下面的Makefile中为TQ2440建立编译, 以sbc2410x为模板例子。在Makefile中加上对TQ2440板子的支持,将这个编译项命名为TQ2440:TQ2440_config : unconfig$(MKCONFIG) $(:_config=) arm arm920t TQ2440 NULL s3c24x0 各项的意思如下:arm:CPU的架构为arm架构。arm920t:CPU的类型为arm920t。TQ2440:开发板的型号为TQ2440。NULL:开发者/或经销商(vender),NULL表示没有。s3c24x0
14、:片上系统为s3c24x0。(B)由于本文使用arm架构处理器,故需要设置交叉编译工具链,修改顶层Makefile的CROSS_COMPILE定义如下:CROSS_COMPILE = arm-linux-(C)仿造sbc2410x模板,在/board目录下建立TQ2440文件夹,并在include/configs/中建立开发板的配置头文件,拷贝sbc2410x的文件到TQ2440和include/configs/中,并将sbc2410x命名的文件和定义改为TQ2440。(3) 修改cpu/arm920t/start.S,根据S3C2440A数据手册时钟参数,修改代码使得u-boot从NAND
15、Flash启动或者从Nor flash启动。(4) 根据TQ2440上的NAND Flash芯片手册,增加NAND Flash读写函数,实现NAND Flash的读写操作,实现加载Uboot、内核和文件系统硬件到NAND Flash功能。(5) 修改u-boot代码中对分区表的设置,使得分区表与内核设置的一致。(6) 进入目录配置编译,生成相应平台的uboot映像: 配置#make TQ2440_config #make 编译结果生成u-boot.bin烧入开发板(7) 把编译生成的u-boot.bin使用OPENJTAG烧写工具,安装驱动程序后,把它烧写到开发板nor flash上就可以了。
16、3.2 Linux内核的移植 Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统,是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统,还需要有配套的文件系统和硬件平台才能构成一个完整的嵌入式系统。基于Linux内核的完整操作系统叫作Linux操作系统,其设备驱动程序可以完全访问硬件,且设备驱动程序可以方便地以模块化的形式设置,即使在系统运行期间也可直接装载或卸载。 linux-2.4.3 内核已经支持 S3C2440 处理器的多种
17、硬件开发板,由于 S3C2410 跟 S3C2440 同属于 ARM920T 系列芯片,且寄存器等硬件电路基本一致,所以本文,参考 SMDK2410 参考板来移植linux-2.4.3 内核到TQ 2440 开发板上。3.2.1 准备工作 在linux系统中,建立工作目录,下载内核源码:linux-2.6.30.4.tar.bz2。步骤如下:#tar jxvf linux-2.6.30.4.tar.gz解压后会在当前目录下生成一个 linux-2.6.30.4 的内核源码目录3.2.2 修改内核源码顶层修改内核目录树根下的的 Makefile,指明体系结构是 arm,交叉编译工具是 arm-l
18、inux-gcc。找到 ARCH 和 CROSS_COMPILE,修改ARCH ?= armCROSS_COMPILE ?= /usr/local/arm/4.1.2/bin/arm-linux-3.2.3 设置 flash 分区(1)修改内核分区信息(本示例分设四个分区),让内核知道 NAND Flash 的分区信息,设置成跟u-boot一致, (2)修改时钟 将archarmmach-s3c24xxmach-smdk2440.c中的s3c24xx_init_clocks(16934400);修改为:s3c24xx_init_clocks(12000000); (3)修改 NAND Flas
19、h 的校验方式,去掉 ECC 校验,否则上电启动会提示 ECC 错误或 者 I/O 读取错误。在drivers/mtd/nand/s3c2410.c 中将 chip-ecc.mode = NAND_ECC_SOFT,改为 chip-ecc.mode = NAND_ECC_NONE;3.2.4 修改机器码在 u-boot-2009.11 的/board/samsun/TQ2440/TQ2440.c 中定义了机器码为 193,需要使得u-boot 和 linux 内核的同样类型的机器码都为 193,那么我们就修改 kernel 的 MACH_TYPE 代码引用部分,确定 kernel 的 MACH
20、_TYPE。 如下:在 arch/arm/mach-s3c2440/mach-smdk2440.c 中: MACHINE_START(S3C2440, SMDK2440)修改为:MACHINE_START(SMDK2410, SMDK2440)在 arch/arm/kernel/head.S中的ENTRY(stext)下添加如下代码ENTRY(stext)movr0, #0movr1, #0xc1/ MACH_TYPE_SMDK2410值193换成十六进制就是 0xc13.2.5 配置编译内核#make s3c2410_defconfig #make menuconfig /进入设置界面,配置
21、内核make menuconfig命令运行后进入内核配置主菜单,如图3-1,这时根据自己的硬件需求对内核进行配置,即在菜单中选择合适的选项,对内核的裁剪,就是使用make menuconfig命令来调出配置菜单,通过在菜单上选择所需的选项,去掉不需要的选项的方式来裁剪。(选项前按“y”则显示“*”表示需要此项;按n则空,不要此项)。图3.1 配置主菜单根据开发板情况,在配置中主要考虑的有:(1)CPU类型的选择图3-2 cpu类型选择(2)引导设置图3-3 引导设置Boot options - Default kernel command string: noinitrd root=/dev/
22、mtdblock2 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2说明:mtdblock2 代表第 3 个 flash 分区,它是预设的 rootfs 分区,console=ttySAC0,115200 使 kernel 启动期间的信息全部输出到串口 0 上。(3)系统调用方式设置如下图3-4图3-4 系统调用方式设置Kernel Features-* Use the ARM EABI to compile the kernel/防止出现内核恐慌,内核指针跑飞。主菜单中选最后一项“Save an Alternate Configura
23、tion File”,按回车,进入配置文件名编辑,默认文件名,ok保存,exit退出,产生.config内核配置文件,该文件会在 make 的时候被调用。 (4)文件系统的支持。接下来做的是针对文件系统的设置,本课程设计上的文件系统是 cramfs/ jffs2,故做如下配置,如图3-5图3-5Miscellaneous filesystems -*JFFS2 XATTR support (EXPERIMENTAL)支持 jffs2 和 cramfs 文件系统,配置如下图3-5图3-6Network File Systems -支持 NFS 文件系统,配置如下图3-7 NFS client s
24、upport for the NFSv3 ACL protocol extension*NFS client support for NFS version 4 (EXPERIMENTAL) NFS server support图3-73.2.6 Linux内核编译与烧写 配置完成后,会在内核目录下生产.config文件,然后回到内核目录编译内核,具体操作如下:#make /编译内核此时,在arch/arm/boot目录下生成uImage镜像,然后进行uImage镜像的烧写:打开DNW软件,在菜单Configuration中选择Options,然后配置波特率和端口参数,配置好参数后,选择菜单S
25、erial Port-.Connect,然后给开发板上电,选择菜单USB Port-Transmit,导入uImage镜像即可。3.3制作根文件系统 制作基本的根文件系统:使用busybox定制一个基本的文件系统,使用到的软件包有busybox和bash。其过程也是比较繁琐,大致分为以下几步: (A)设定工作目录为/root/build_rootfs/,该目录主要用来编译busybox,bash等制作根文件系统的软件。 (B)使用MDEV创建节点。 (C)拷贝动态链接库,交叉应用程序的开发需要用到交叉编译的链接库,交叉编译的链接库是在交叉工具链的lib目录下,我们在移植应用程序到我们的目标板的
26、时候,需要把交叉编译的链接库也一起移植到目标上。 (D)交叉编译busybox之后,运行make menuconfig 会看到和kernel一样的配置菜单,可以对其进行配置,大多配置项都是对一些命令支持的选择,只需要根据菜单选项进行相应的配置选择即可。 (E)交叉编译bash(交互程序) (F)建立系统配置文件,并配置好inittab,fstab,rcS等系统配置文件 最后使用mkfs.jffs2工具,来制作jffs2文件系统映象,并把根文件系统烧入NAND Flash。3.4.驱动的设计3.4.1关于USB驱动设计由于我们需要查看U盘中的图片,此时U盘连接开发板TQ2440就需要用到USB驱
27、动。(1)修改arch/arm/mach-s3c2410/mach-smdk2410.c文件,添加如下代码:static struct s3c2410_hcd_info usb_tq2410_info = .port0=.flags = S3C2410_HCDFLG_USED,;int usb_tq2410_init(void)/USB初始化函数unsigned long upllvalue = (0x7812)|(0x024)|(0x03);printk(“USB Control,(c)tq2410n”);s3c_device_usb.dev.platform_data = &usb_tq2
28、410_info;while(upllvalue!=_raw_readl(S3C2410_UPLLCON)_raw_write(upllvalue,S3C2410_UPLLCON);mdelay(1);return 0;(2)在static void_init smdk2410_map_io()函数中添加usb_sbc2410_init()函数(3)内核配置使用”make menuconfig”命令调出内核配置菜单,主要的设置为:(A)内核支持USB设备(B)支持热插拔(C)加入 MSDOS 文件系统和 VFAT 文件系统支持(为适应挂载 U 盘)(D)添加对中文字体库的支持 (E) 编译3.
29、4.2 关于LCD驱动设计(1)关于LCD的配置文件:在Linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c的smdk2410_lcd_cfg_initdata函数中添加如下内容:(A) 配置好LCD控制寄存器(B) 设置LCD类型为TFT(C) LCD的宽度与长度(D) 设置时序(E) 设置分辨率以及BPP等(2)初始化函数中添加LCD初始化功能Static void_init smdk2410_init(void)S3c24xx_fb_set_platdata(&smdk2410_fb_info);/添加部分(3)配置内核菜单,使得内核支
30、持frame buffer:在make menuconfig中选择 Support for frame buffer devices(4)编译 3.4.3关于触摸屏驱动设计对于触摸屏驱动的设计,本文采用的是基于linux本身自带的输入子系统方式设计的,由于涉及的代码比较繁杂,所以本文主要列出其主要设计方法,主要的设计方法如下:1. 设置输入结构input_dev:(A)通过设置struct input_dev 的evdev数组表示能产生KEY和ABS类事件。(B)设置产生KEY和ABS类事件里面的触摸按键事件, X/Y绝对位移,绝对位移压力事件。2. 硬件操作:(A)ioremap寄存器(B)
31、设置AD分频系数和ADCDLY (C) 注册INT_TS和AD中断4. 界面应用程序4.1程序作用简介: 界面应用程序的主要作用是,使用户能够通过对触摸屏的操作,来实现对数码相框中图片的管理以及把图片显示在LCD屏幕上,通过对屏幕不同图标的点击,可以进入相对应的模式,选择相应的功能,从而实现数码相框对图片的显示,连播等基本功能。4.2界面功能总框架: 本文未使用QT图形用户界面应用程序开发框架,而是直接使用C语言编写出界面程序。界面功能总框架如图4-1图4-1 功能总框架界面功能说明: (1)主界面:在程序的一开始LCD显示界面上,有三种模式给用户选择,分别是浏览模式,连播模式,设置模式。根据
32、点击的模式图标进入对应的界面。 (2)文件浏览模式界面:若点击浏览模式,则进入文件浏览界面,可以看到TQ2440搭载的根文件系统的各种目录,以及系统中的图片。在文件浏览模式中,可以选择的操作方式有:向上,选择,上一页,下一页。 (3)图片浏览模式界面:点击图片就可以进入,图片浏览模式,在该模式中可以选择的操作有:返回,放大,缩小,上一页,下一页,连播模式。 (4)设置模式界面:点击设置,就可进入设置模式,设置模式的主要功能就是选择,某个目录,连播目录中的所有支持格式的图片。 (5)设置间隔界面:设置时间间隔,通过点击上下箭头可以设置图片连播显示时间间隔,即每隔几秒显示下一张图片,使得数码相框以
33、幻灯片的模式播放图片。4.3程序主流程介绍图4-2 程序流程图主流程解析:(1) 初始化调试通道: 可以通过标准输出在PC机终端secureCRT串口软件窗口打印调试信息。(2) 选择显示设备:本课程设计使用的显示设备是4.3寸的LCD屏幕。(3) 分配5块内存:为加快显示速度,我们事先在内存中构造好即将显示的页面的数据 (这个内存称为VideoMem), 显示时再把VideoMem中的数据复制到设备的显存上。从而在LCD上显示出来(4) 输入设备:本课程设计的输入设备为电阻触摸屏。(5) 字库与字库模块:文件的名字显示依赖freetype库(FreeType库是一个完全免费(开源)的、高质量
34、的且可移植的字体引擎)。(6) 图片解析模块:界面的图标显示使用的是BMP格式。浏览的图片只支持常用的jpeg格式。Jpeg格式图片需要使用jpeg库来对其解析才可显示在LCD上。(7) 主界面:提供三种模式浏览模式,连播模式,设置模式。点击不用模式图标,会进入不同的界面。(8) 根据用户点击屏幕,进入不同的模式界面。4.4程序模块介绍4.4.1程序模块实现概述:该界面使用面对对象思想进行程序设计,简单来说,就是把各个功能模块化,每个模块对应一个功能。对于界面各幅图片的规划就设计为页面规划模块,对图片解析方式就设计为图片解析模块,输入方式设计为输入模块。这样的模块化思想,能把各个功能从整个界面
35、程序作为模块分离出来,但却不是独立的,而是彼此分层次的,它们之间可以互相调用,协作来实现数码相框的基本功能。这样一来,我们对数码相框系统某一个功能的改造,只需要修改对应的模块即可。比如,我们暂时实现数码相框输入功能模块只有两种模式:触摸屏输入,终端标准输入,这两种模式对应着touchscreen.c 和stdin.c这两个文件,这两个文件能实现的是对于触摸屏和标准输入功能,对于系统选择哪种输入模式由它们的上一级文件input_manager.c中的函数来定义和管理的。input_manager.c中构建了一个链表和链表成员添加函数,用于触摸屏输入方式结构体和标准输入结构体的注册(放入链表)。假
36、设我们此时想添加按键输入方式,我们只需要编写一个按键输入方式文件,并在该文件中,把本文件实现的函数都放在一个结构体中,然后在按键输入方式文件中的初始化函数中,调用input_manager.c中的链表成员添加函数把这个结构体放到input_manager.c构建的链表中,上层文件只需要访问这个链表中的按键输入方式结构体成员就可以调用到按键输入方式中的各个函数。从而,实现在输入方式模块中增加了按键输入功能。4.4.2页面规划模块:Page_manager.c的功能是在程序的开始就调用main_page.c文件中的函数,从而在LCD的主页面上显示出三种模式:选择目录模式、连播模式目录和设置模式目录
37、。点击不同的模式就会调用到另外不同的文件下定义的函数,从而显示出对应的界面。图4-3 页面规划模块4.4.3调试模块: 主要用于测试阶段的调试,在串口软件界面输出调试信息。图4-4 页面规划模块4.4.4图片解析模块: 图片解析模块的功能是对图片格式的解析和对图片大小的操作。因为ARM处理器只识别二进制,而我们日常的图片大多数是jpeg格式,jpeg格式是一种压缩的图片格式,我们需要解析该格式数据,jpg.c的任务就是来解析这种格式。对于图片大小的操作就交给operation子模块了。图4-5页面规划模块4.4.5字体解码模块: 文件的名字ARM处理器是不会帮我们智能翻译的,只能程序使用asc
38、ii.c来解码,转变成ARM处理器认识的数据格式,然后把这些数据转换为位图,从而在LCD上面显示出来文件名。图4-6 字体解码模块4.4.6输入模式模块: 想要数码相框更加智能,以及能对数码相框系统中图片进行管理,我们需要能对系统中的文件以及系统模式的选择进行操作,简单来说,就是把用户的信息输入给系统,告诉它我们想要做什么。输入模式模块就定义了这个功能,我们可以选择在PC机上通过串口软件secureCRT来操作,更简单直接的,就是直接对通过触摸屏操作了。所以stdin.c和touchscree.c实现的功能分别就是支持终端操作,触摸屏操作。图4-7输入模块4.4.7显示模块: 输入模块是告诉了
39、系统用户想做什么,而显示模块就是对用户输入的反馈。我们对数码相框操作的同时,它就把系统中的信息通过LCD屏幕反馈显示出来,反馈给用户。图4-8 字体解码模块5.系统分析和测试5.1系统分析方法简述本设计设计一个能够浏览U盘中存储的照片,并且能够进行幻灯片播放的数码相框,对其进行分析,只需要触摸LCD屏幕,判断其界面工作状况,能否正常显示界面,便可判断数码相框系统的性能。5.2测试5.2.1 bmp图标显示测试 界面程序上的图标都是使用BMP格式,对于典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压
40、缩方法,以及定义颜色等信息。对于这种格式的图标需要我们自己编写程序来对其放大缩小,以便于支持我们的界面,方便操作。下图就是对bmp图标的放大缩小,选择一个合适的大小,来作为界面图标。图5-1 bmp测试5.2.2 jpeg图片解析测试 JPEG 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是国际图像压缩标准。该格式实现的图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。对于这种图片的解析,有专门开源库来解析,在网络上可以直接下载libjpeg压缩包,在解压压缩包,编译安装之后,我们只需要调用lib
41、jpeg库中的函数就可以对图标解析,从而显示在图片上了。图5-2jpeg测试5.2.3屏幕点击测试:通过点击图5-3主页面的浏览模式图标来测试屏幕是否具有反应。经测试,点击浏览模式图标屏幕成功能进入浏览模式界面,表明屏幕图标点击测试成功。如图5-4。图5-3 主页面图5-4 浏览模式页面5.2.3 u盘挂载测试 为了支持更多图片的查看,我们想在数码相框系统中,实现能够查看U盘中的图片的功能,刚开始,本文以为研究以为,有了USB驱动之后,插上U盘即可查看到其中的图片,测试结果如图5-5所示,找不到U盘目录中的任何一张图片。图5-5经过一段时间的研究,找得解决方法,本文在开发板根文件系统中输入了挂
42、载命令“mount /dev/sda1 /mnt”便实现了U盘对开发板根文件系统目录的挂载,如图5-6所示。图5-65.3测试结论通过上述测试,验证了本设计的数码相框系统是有效的、安全的和可靠的,能够实现图片的显示以及连播,能达到通过触摸屏操作数码相框界面的目的,达到了预期的设计目的。6. 总结本文初步探讨了数码相框研究现状和意义,设计了一个基于ARM9处理器搭配linux操作系统技术的数码相框系统。设计和分析了数码相框硬件设计、嵌入式系统平台构建和界面软件,使得数码相框系统基本功能实现。由此证明了本文提出的数码相框系统与设计是有效、安全且可行的。本文整体设计的结论如下:(1) 硬件平台采用了
43、ARM微处理器的嵌入式硬件系统,其特点是低成本、低能耗、高性能,有效地提高了数码相框的性能,降低了数码相框的成本。搭载三星S3C2440A芯片的TQ2440硬件平台,不但性能强大,而且具有丰富的外围接口,如LCD接口,触摸屏,USB接口等,使得在数码相框在硬件设计上简单高效。(2) 为了使数码相框系统软件设计简单高效,本文采用了开源、免费的Linux操作系统,linux内核自带了大量的硬件驱动,而且并且能从网上下载多个资源开源库。其提供的多线程,进程和网络编程等一系列应用接口,大幅度提升了数码相框开发的效率。(3) 为了支持界面程序的运行,本文在TQ2440搭建了完整的嵌入式环境平台,该平台的
44、搭建主要工作内容为:u-boot和内核的移植,构建文件系统,部分驱动的设计。(3)为了使图片能够正常显示,采用了libjpeg库,libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。尽管数码相框系统已显示了本设计的基本功能,但是仍有地方可以去改进与完善,如:(1) 数码相框不支持中文显示。(2) 只支持jpeg,bmp图片的显示,不支持其他格式图片。(3) 可添加的功能:添加音频播放,使得数码相框成为一个更加有趣的多媒体设备。参考文献1 华清远见嵌入式培训中心.嵌入式Linux应用程序开发M.北京:人民邮电出版社,2009.2 韦东山.嵌入式Linux应用开发完全手册M.北京:人民邮电出版社,2008.3 “libjepg详解”,4 王小强.ARM处理器裸机开发实战M.北京:电子工业出版社,2012.5 邱铁. ARM嵌入式系统结构与编程M.北京:清华大学出版社,2009.6 三星公司.S3C2440A数据手册D.20027 广州天嵌技术中心.TQ2440开发板说明文档,TQ2440开发板实验指导手册.8 任岩松.基于嵌入式Linux的多媒体数码相框设计
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100