基于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. 参考文献-

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

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

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

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

6、器实现; 6.最终实现下载文件程序的运行。 3. 系统软件设计与实现3.1 主程序设计与实现 系统移植与实现1、新建/tftpboot名目,若有则不用新建2、将u-boot-fs4412.bin、uImage与exynos4412-origen.dtb拷贝到tftpboot名目下3、修改tftpboot名目权限 sudo chmod -R 777 /tftpboot4、新建/source名目,若有则不用新建5、将nfsdir压缩包拷贝到该名目下,解压sudo tar -xf nfsdir.ok.tar6、修改source名目权限 sudo chmod -R 777 /source7、检查tft

7、p与nfs服务器是否安装 apt-cache policy tftpd-hpa apt-cache policy nfs-kernel-server 假如没有安装,则在终端输入sudo apt-get install tftpd-hpa sudo apt-get install nfs-kernel-server进行安装8、修改配置文档: tftp服务器: 1、 sudo vim /etc/default/tftpd-hpa # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboo

8、t" TFTP_ADDRESS=":69" TFTP_OPTIONS="-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、查

9、看nfs服务器状态 sudo service nfs-kernel-service status 若为正在运行,则重启:sudo service nfs-kernel-server restart 若停止,则启动:sudo service nfs-kernel-server start9、启动开发板 设置参数:setenv ipaddr 00 setenv serverip saveenv tftp 41000000 u-boot-fs4412.bin movi write u-boot 41000000 重启开发板,重新设置参数: set

10、env ipaddr 00 setenv serverip setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-origen.dtb;bootm 41000000 - 42000000 set bootargs noinitrd root=/dev/nfs nfsroot=:/source/nfsdir rw rootwait console=ttySAC2,115200n8 init=/linuxrc ip=00 cl

11、k_ignore_unusedsaveenv3.2 服务器端程序设计与实现 开头3.2.1服务器端主流程图(如图1) socket connect 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("00&

12、quot;);/socketint cliFd=socket(PF_INET,SOCK_STREAM,0);if(-1=cliFd)perror("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(

13、"connect 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 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客户

14、端流程图(如图2) 开头 socket bind listen accept 结束 图23.3.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("00");/socketint servFd=socket(PF_INET,SOCK_STREAM,

15、0);if(-1=servFd)perror("socket error");return -1;printf("socket ok");/bindint ret=bind(servFd,(struct sockaddr*)&servAddr,sizeof(servAddr);if(-1=ret) perror("bind error!"); close(servFd); return -1;printf("bind ok!n");/listenret=listen(servFd,10);if(-1=ret

16、)perror("listen error!n");close(servFd); return -1;printf("listen ok!n");/acceptint connFd=accept(servFd,NULL,NULL);if(-1=connFd) perror("accept error!"); close(servFd); return -1; printf("accept ok!n");/send/recvint fd=open("2.txt",O_RDONLY);if(-1=f

17、d) 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);printf("recv from server %s success!n",buf);/closeclose(servFd);close(connFd);return 0;4. 系统测试4.1 系统软件测试Serv

18、er端运行结果如下图所示 图3Client端运行如下图所示 图44.2 系统硬件测试程序在虚拟机上运行结果如下所示 图5程序在开发板上运行如下所示 图65. 总结和展望 在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、牢靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的把握、监视或管理功能。嵌入式系统已经应用于科学争辩、工业把握、军事技术、交通通信、医疗卫生、消费消遣等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。老师在讲解过程中,首先交给我们的是一些简洁的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发觉有些命令的操作还是很简洁的,不过在操作的过程中,我也有遇到有些困难,会消灭你依据书上学习的例子,将命令输入终端时会消灭你不想要的结果,也就是错误的结果。这是问问旁边的同学或是懂的同学就可以解决了。在对于这部分的学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中全部的功

温馨提示

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

评论

0/150

提交评论