欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数码相框嵌入式大作业报告(共5页).doc

    • 资源ID:14499315       资源大小:25.50KB        全文页数:5页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数码相框嵌入式大作业报告(共5页).doc

    精选优质文档-倾情为你奉上 武汉工业学院 数学与计算机学院嵌入式系统开发实验报告 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 赵文浩 指导老师: 易 奎 2011年 12月2日课题名:动态数码相框一. 实验目的通过本次实验,系统地复习在课堂上学习的理论知识,涉及到的主要知识点有Linux环境下Smb、NFS等服务器的配置与使用;程序的编译、运行操作以及交叉编译和运行的过程;Makefile文件以及shell脚本的编写;JPEG库的使用以及图像显示的基本原理(帧缓存FrameBuffer)。二. 实验环境软件环境:上位机为Windows XP系统,目标机为Linux 2.4的系统。硬件环境:上位机为基于X86体系的传统PC,目标机为创维特的ARM9开发板。开发工具:vi编辑器,gcc本地编译器以及arm-linux-gcc3.4.1交叉编译工具,smb、nfs等服务器工具。三. 实验原理在本实验中要显示jpeg格式的图像,需要用到libjpeg,libjpeg是一个被广泛使用的JPEG压缩/解压缩函数库,对于libjpeg而言,图像数据是一个二维的像素矩阵。对于彩色图像,每个像素通常用三个分量表示,即R(Red)、G(Green)、B(Blue)三个分量,每个分量用一个字节表示,因此每个分量的取值范围从0到255;对于灰度图像,每个像素通常用一个分量表示,一个分量同样由一个字节表示,取值范围从0到255。在libjpeg中,图像数据是以扫描线的形式存放的。每一条扫描线由一行像素点构成,像素点沿着扫描线从左到右依次排列。对于彩色图像,每个分量由三个字节组成,因此这三个字节以R、G、B的顺序构成扫描线上的一个像素点。另外由于我们实验环境所用的Framebuffer设备的颜色深度为16位,颜色格式为5-6-5格式即R(红色)在16bit中占据高5位,G(绿色)在16bit中占据中间6位,B(蓝色)在16bit中占据低5位;而libjpeg解压出来的图像数据为24位RGB格式,因此必须进行转换。对于24位的RGB,每个字节表示一个颜色分量,因此转换的方式为:对于R字节,右移3位,对于G字节,右移2位,对于B字节,右移3位,然后将右移得到的值拼接起来,就得到了16位的颜色值。有了上述通过Framebuffer画点的基础,将通过libjpeg编码获得的每个像素点的16位值分别写入内存即可获得一副完整的图像。有了上述的基础,通过更改图像文件的获取方式、图片的像素点向内存写的方式等可以获得循环播放加了特效(如百叶窗)多幅图片的效果。四. 实验步骤1、首先获能取libjpeg库的源文件,更改其配置文件后进行交叉编译,并且进行安装。具体步骤是首先进入源文件内,输入命令./configure -enable-shared,产生Makefile文件,然后修改Makefile文件的配置参数如下:prefix=/usr/local/arm/3.4.1/arm-linuxCC=arm-linux-gccAR=arm-linux-ar rcAR2=arm-linux-ranlib接着分别输入以下命令#cp jconfig.doc jconfig.h#mkdir -p /usr/local/arm/3.4.1/arm-linux/man#mkdir -p /usr/local/arm/3.4.1/arm-linux/man1#make#make install-lib除了將JPEG安裝于toolchain之外,ARM 的执行平台也需要JPEGLIB,必须將执行需用到的库文件(/usr/local/arm/3.4.1/arm-linux/lib/libjpeg.so*)复制到ARM的嵌入式系统。指令如下。2、开发环境的配置,即配置好Smb服务器、NFS服务器、tftp服务器。测试使用正常。3、编写源代码以及Makefile文件。4、编译,如出现错误及时查错并纠正,直至编译通过,生成可执行文件。5、这一步是将可执行文件和图片资源文件拷贝到目标机上。方法是通过NFS服务器,先将工程文件挂载到/mnt/nfs下,然后将可执行文件和图片资源文件拷贝到目标去的JFFS分区然后执行。不能直接在nfs分区运行时是因为我的工程写了一个shell脚本需要生成记录图片资源的文件,在此款开发板的nfs分区没有写权限,因此需要拷贝到JFFS分区。然后运行,验证效果!如果效果不理想则重新修改源代码,从第3步开始循环直至满足要求。五、程序分析本环节主要是将程序中几个核心的功能实现加以分析解释,力求简单明了。1、主程序中访问帧缓存设备并为其分配存储空间,为后续图片的显示打下基础。int fd;struct fb_var_screeninfo fb_var;fd = open("/dev/fb0", O_RDWR);ioctl(fd, FBIOGET_VSCREENINFO, &fb_var);w = fb_var.xres;h = fb_var.yres;fbmem = mmap(0, w*h*2, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);2、将工程目录下存储图片的文件夹里的所有图片文件名(包含程序访问的路径)存入一个临时文本文件,便于后续的访问,通过shell脚本实现。如下#!bin/shfor f in echo ./image/*doif $f != $0 thenecho $f >>image_listfidone3、建立图片信息的双向循环链表,首先需要建立一张图片信息的结构体如下struct imagechar imgname20;struct image *prev;struct image *next;然后访问shell脚本建立的临时存放图片文件名(包含访问路径)的文本文件,建立双向循环链表,如下:fd = fopen("image_list","r");/访问临时文本文件if(fd=NULL)exit(EXIT_FAILURE);p1 = (struct image *)malloc(sizeof(struct image);size = getline(&line,&len,fd);/获取文本的第一行信息即第一张图片的完整路径strncpy(p1->imgname,line,strlen(line);head = p1;while(size = getline(&line,&len,fd) != -1)p2 = p1;p1 = (struct image *)malloc(sizeof(struct image);strncpy(p1->imgname,line,strlen(line);p2->next = p1;p1->prev = p2;/通过循环不断创建节点并连接起来成为一个双向循环链表p1->next = head;head->prev = p1;p1 = NULL;p2 = NULL;/无用的指针置空避免错误system("rm -rf image_list");/调用系统命令删除临时文件4、图片显示实现,由于一张jpeg图片通过jpeg编码后的颜色表示是24位的,故首先需要将24位的颜色深度改为16位的颜色深度,然后将图片的分辨率改成目标机屏幕的分辨率,最后通过显示图片的每一个像素点来显示整幅图片。本程序添加了一个百叶窗效果,实现原理是图片的所有像素点按传统的顺序显示,而是将一个图片分为上下两大块,这两块独立的从上到下显示其所有像素点,就可以达到一个百叶窗的效果。void display_scale_jpeg(char *filename)unsigned char *buf24;short imgw,imgh;int i,j;short color;buf24=decode_jpeg(filename,&imgw,&imgh);buf24to16(buf24,imgw,imgh);/颜色深度转换(24位转换成16位)scale(unsigned short *)buf24,imgw,imgh);/换算屏幕的分辨率for(j=0;j<OH/2;j+)for(i=0;i<OW;i+)color=obufj*OW+i;alpha_16point(i,j,color,200);for(i=0;i<OW;i+)color=obuf(j+OH/2)*OW+i;alpha_16point(i,(j+OH/2),color,200);usleep(10000);专心-专注-专业

    注意事项

    本文(数码相框嵌入式大作业报告(共5页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开