基于Linux下载文件的功能设计与实现_第1页
基于Linux下载文件的功能设计与实现_第2页
基于Linux下载文件的功能设计与实现_第3页
基于Linux下载文件的功能设计与实现_第4页
基于Linux下载文件的功能设计与实现_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息工程学院嵌入式系统设计课程设计报告题目: 基于Linux的文件下载功能的设计与实现学号:学生姓名:专业名称:计算机科学与技术班级:目录1。 课题研究意义和现状- 1 -1。1课题研究意义- 1 1.2课题研究现状 1 2。 系统总体方案设计及功能模块介绍- 2 2.1 系统概述及总体方案设计- 2 -3. 系统软件设计与实现 2 3。1 主程序设计与实现- 2 3。2 服务器端程序设计与实现- 3 3。3 客户端程序设计与实现 5 4。 系统测试- 8 4.1 系统软件测试 8 4。2 系统硬件测试 8 5. 总结和展望- 9 -6.参考文献 10 信息工程学院嵌入式系统设计课程设计1.

2、课题研究意义和现状1。1课题研究意义 随着微机技术的不断发展,在许多工程领域单片机的应用日趋广泛,已逐渐取代了单板机.为了适应这一新形势的变化,目前许多高校及一些中等专科学校已不再开设以单板机为主的“微机原理、接口及应用”课程,而直接讲授单片机及有关技术.但是目前缺少相应的实验设备及教材.鉴于这种情况,从教学和科研两个角度出发,我们此次的毕业设计尝试设计一种单片机教学实验板,来满足有关单片机教学实验的要求.从教学实验的角度出发,该实验板可适用于电类专业和非电类专业不同层次单片机教学实验的要求,如:自动化,仪器仪表,电子技术,电子测量,计算机应用,机电一体化等各专业,及机械专业.利用该

3、板可以做各种编程实验,和一些简单的输入输出接口实验。如彩灯实验,数码管显示,音乐盒播放设计,键盘输入,模拟量的输入、输出,数模转换及电机正反转等。上述实验都不需要扩展硬件,该板上将提供全部接口和器件。同时为了强调学生的动手能力,在设计该实验板时,我们把AT89C51单片机的所有控制线、地址线和数据线经驱动后,将全部引入一排接线端子上,这就给系统的扩展提供了便利条件,我们可以在面包板上设计自己的接口电路,由单片机来控制实现。如存储器的扩充、键盘/显示接口芯片的扩展等、若连续做的话,可以使每个同学在自己占用的实验板上,设计成一个独立的应用系统。这对于同学们的实际工作能力,将会有一个很大的促进和提高

4、.1。2课题研究现状嵌入式系统作为一个的热门领域,涵盖了微电子技术、电子信息技术、计算机软件和硬件等多项技术领域的应用.随着后PC时代来临,嵌入式应用呈现系统复杂化,应用多样化,硬件集约化、软件平台化等特点。行业发展现状与趋势:     目前,在上海地区,嵌入式系统开发涉及的行业众多, 水平参差不齐, 大多数停留在8位单片机开发这个层面上, 一部分单位开始采用32位机,并采用了实时操作系统.而具有能够同时进行软件设计和芯片设计的SOC系统设计的系统级高端人才几乎没有, 国际上领先的多核嵌入式系统设计, 可重构嵌入式系统设计在上海市的应用还停留在少数研究单位的研究中

5、。2。 系统总体方案设计及功能模块介绍2。1 系统概述及总体方案设计2。1。1系统概述 通过uboot,内核,根文件系统的移植实现文件的下载。2.1.2 总体方案设计 1。通过SD启动开发板; 2。将u-boot下载到开发板的内存中,并将uboot烧写到开发板的EMMC上; 3.重新启动开发板,(从EMMC启动); 4。将内核下载到开发板的内存中; 网络传输(tftp服务器和客户端,tftp为文件传输协议); 5。将虚拟机中的一个叫做nfsdir的目录挂载到开发板的根目录; 挂载:nfsdir这个目录下的内容,虚拟机可以和开发板实现共享; 挂载:通过nfs服务器实现; 6.最终实现下载文件程序

6、的运行。3. 系统软件设计与实现3.1 主程序设计与实现系统移植与实现1、新建/tftpboot目录,若有则不用新建2、将uboot-fs4412。bin、uImage与exynos4412origen。dtb拷贝到tftpboot目录下3、修改tftpboot目录权限 sudo chmod -R 777 /tftpboot4、新建/source目录,若有则不用新建5、将nfsdir压缩包拷贝到该目录下,解压sudo tar xf nfsdir。ok。tar6、修改source目录权限 sudo chmod -R 777 /source7、检查tftp与nfs服务器是否安装 aptcache

7、policy tftpdhpa aptcache policy nfskernel-server 如果没有安装,则在终端输入sudo aptget install tftpdhpa sudo apt-get install nfs-kernel-server进行安装8、修改配置文档: tftp服务器: 1、 sudo vim /etc/default/tftpdhpa # /etc/default/tftpdhpa TFTP_USERNAME=”tftp” TFTP_DIRECTORY="/tftpboot” TFTP_ADDRESS=”0.0.0。0:69” TFTP_OPTION

8、S=”l -c s"0 保存退出 2、查看tftp服务器状态 sudo service tftpd-hpa status 若为正在运行,则重启:sudo service tftpd-hpa restart 若停止,则启动:sudo service tftpd-hpa start nfs服务器: 1、sudo vim /etc/exports /source/nfsdir *(rw,sync,no_subtree_check,no_root_squash) 2、查看nfs服务器状态 sudo service nfs-kernelservice status 若为正在运行,则重启:sud

9、o service nfskernelserver restart 若停止,则启动:sudo service nfs-kernelserver start9、启动开发板 设置参数:setenv ipaddr 192。168.100.200 setenv serverip 192.168.100。2 saveenv tftp 41000000 uboot-fs4412。bin movi write uboot 41000000 重启开发板,重新设置参数: setenv ipaddr 192.168。100。200 setenv serverip 192。168。100.2 setenv boot

10、cmd tftp 41000000 uImage;tftp 42000000 exynos4412origen。dtb;bootm 41000000 - 42000000 set bootargs noinitrd root=/dev/nfs nfsroot=192。168。100。2:/source/nfsdir rw rootwait console=ttySAC2,115200n8 init=/linuxrc ip=192。168。100。200 clk_ignore_unusedsaveenv3。2 服务器端程序设计与实现 开始3.2.1服务器端主流程图(如图1) socket con

11、nect recv/send close 结束 图13.2。2服务器端主代码int main()struct sockaddr_in servAddr;memset(&servAddr,0,sizeof(servAddr));servAddr。sin_family=PF_INET;servAddr。sin_port=htons(8888);servAddr.sin_addr。s_addr=inet_addr("192。168.100。200”);/socketint cliFd=socket(PF_INET,SOCK_STREAM,0);if(-1=cliFd)perror(

12、"socket error!”);return 1;/printf(”socket ok!n”);/connectint ret=connect(cliFd,(struct sockaddr)servAddr,sizeof(servAddr);if(1=ret) perror(”connect error!"); close(cliFd); return 1;printf("connect ok!n”);/send/recvint fd=open("2。txt",O_RDONLY);if(1=fd) perror(”open error&quo

13、t;); return -1;char buf100;memset(buf,0,sizeof(buf);while(1)int ret=read(fd,buf,sizeof(buf);if(0=ret) break;send(cliFd,buf,sizeof(buf),0);/closeclose(cliFd);return 0;3.3 客户端程序设计与实现3.3。1客户端流程图(如图2) 开始 socket bind listen accept 结束 图23。3。2客户端主代码int main()struct sockaddr_in servAddr;memset(servAddr,0,si

14、zeof(servAddr));servAddr。sin_family=PF_INET;servAddr。sin_port=htons(8888);servAddr.sin_addr。s_addr=inet_addr(”192.168.100。200");/socketint servFd=socket(PF_INET,SOCK_STREAM,0);if(-1=servFd)perror(”socket error”);return -1;printf("socket ok”);/bindint ret=bind(servFd,(struct sockaddr*)servA

15、ddr,sizeof(servAddr);if(1=ret) perror("bind error!"); close(servFd); return 1;printf("bind ok!n”);/listenret=listen(servFd,10);if(1=ret)perror(”listen error!n");close(servFd); return 1;printf(”listen ok!n");/acceptint connFd=accept(servFd,NULL,NULL);if(1=connFd) perror(”acce

16、pt error!"); close(servFd); return 1; printf("accept ok!n”);/send/recvint fd=open(”2。txt",O_RDONLY);if(-1=fd) perror("open error”); return -1;char buf100;memset(buf,0,sizeof(buf);while(1)int sevc=recv(connFd,buf,sizeof(buf),0);if(0=sevc) break;write(fd,buf,sizeof(buf);puts(buf);p

17、rintf("recv from server s success!n”,buf);/closeclose(servFd);close(connFd);return 0;4。系统测试4。1 系统软件测试Server端运行结果如下图所示 图3Client端运行如下图所示 图44。2 系统硬件测试程序在虚拟机上运行结果如下所示 图5程序在开发板上运行如下所示 图65. 总结和展望 在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬

18、件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。老师在讲解过程中,首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,我也有遇到有些困难,会出现你按照书上学习的例子,将命令输入终端时会出现你不想要的结果,也就是错误的结果.这是问问旁边的同学或是懂的同学就可以解决了。在对于这部分的学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论