基于Linux下载文件的功能设计与实现.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 下载 文件 功能设计 实现
- 资源描述:
-
信息工程学院 嵌入式系统设计课程设计报告 题目 : 基于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。 课题研究意义和现状 1。1课题研究意义 随着微机技术的不断发展,在许多工程领域单片机的应用日趋广泛,已逐渐取代了单板机。为了适应这一新形势的变化,目前许多高校及一些中等专科学校已不再开设以单板机为主的“微机原理、接口及应用”课程,而直接讲授单片机及有关技术。但是目前缺少相应的实验设备及教材。鉴于这种情况,从教学和科研两个角度出发,我们此次的毕业设计尝试设计一种单片机教学实验板,来满足有关单片机教学实验的要求。从教学实验的角度出发,该实验板可适用于电类专业和非电类专业不同层次单片机教学实验的要求,如:自动化,仪器仪表,电子技术,电子测量,计算机应用,机电一体化等各专业,及机械专业。利用该板可以做各种编程实验,和一些简单的输入输出接口实验.如彩灯实验,数码管显示,音乐盒播放设计,键盘输入,模拟量的输入、输出,数模转换及电机正反转等.上述实验都不需要扩展硬件,该板上将提供全部接口和器件.同时为了强调学生的动手能力,在设计该实验板时,我们把AT89C51单片机的所有控制线、地址线和数据线经驱动后,将全部引入一排接线端子上,这就给系统的扩展提供了便利条件,我们可以在面包板上设计自己的接口电路,由单片机来控制实现.如存储器的扩充、键盘/显示接口芯片的扩展等、若连续做的话,可以使每个同学在自己占用的实验板上,设计成一个独立的应用系统。这对于同学们的实际工作能力,将会有一个很大的促进和提高. 1.2课题研究现状 嵌入式系统作为一个的热门领域,涵盖了微电子技术、电子信息技术、计算机软件和硬件等多项技术领域的应用。随着后PC时代来临,嵌入式应用呈现系统复杂化,应用多样化,硬件集约化、软件平台化等特点。行业发展现状与趋势: 目前,在上海地区,嵌入式系统开发涉及的行业众多, 水平参差不齐, 大多数停留在8位单片机开发这个层面上, 一部分单位开始采用32位机,并采用了实时操作系统。而具有能够同时进行软件设计和芯片设计的SOC系统设计的系统级高端人才几乎没有, 国际上领先的多核嵌入式系统设计, 可重构嵌入式系统设计在上海市的应用还停留在少数研究单位的研究中。 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.最终实现下载文件程序的运行。 3。 系统软件设计与实现 3。1 主程序设计与实现 系统移植与实现 1、新建/tftpboot目录,若有则不用新建 2、将u—boot-fs4412.bin、uImage与exynos4412—origen.dtb拷贝到tftpboot目录下 3、修改tftpboot目录权限 sudo chmod —R 777 /tftpboot 4、新建/source目录,若有则不用新建 5、将nfsdir压缩包拷贝到该目录下,解压sudo tar —xf nfsdir。ok。tar 6、修改source目录权限 sudo chmod -R 777 /source 7、检查tftp与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="/tftpboot" TFTP_ADDRESS=”0.0。0。0: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、查看nfs服务器状态 sudo service nfs—kernel-service status 若为正在运行,则重启:sudo service nfs—kernel—server restart 若停止,则启动:sudo service nfs-kernel-server start 9、启动开发板 设置参数:setenv ipaddr 192。168。100。200 setenv serverip 192。168.100.2 saveenv tftp 41000000 u—boot—fs4412.bin movi write u—boot 41000000 重启开发板,重新设置参数: setenv ipaddr 192。168。100。200 setenv serverip 192.168.100。2 setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412—origen.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_unused saveenv 3。2 服务器端程序设计与实现 开始 3。2。1服务器端主流程图(如图1) socket connect recv/send close 结束 图1 3。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”); //socket int cliFd=socket(PF_INET,SOCK_STREAM,0); if(-1==cliFd) { perror("socket error!"); return —1; } //printf(”socket ok!\n”); //connect int ret=connect(cliFd,(struct sockaddr*)&servAddr,sizeof(servAddr)); if(-1==ret) { perror(”connect error!”); close(cliFd); return —1; } printf(”connect ok!\n”); //send/recv int fd=open(”2.txt”,O_RDONLY); if(—1==fd) { perror(”open error”); return -1; } char buf[100]; memset(buf,0,sizeof(buf)); while(1) { int ret=read(fd,buf,sizeof(buf)); if(0==ret) { break; } send(cliFd,buf,sizeof(buf),0); } //close close(cliFd); return 0; } 3。3 客户端程序设计与实现 3。3。1客户端流程图(如图2) 开始 socket bind listen accept 结束 图2 3.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(”192。168。100。200”); //socket int servFd=socket(PF_INET,SOCK_STREAM,0); if(-1==servFd) { perror(”socket error”); return —1; } printf(”socket ok”); //bind int ret=bind(servFd,(struct sockaddr*)&servAddr,sizeof(servAddr)); if(—1==ret) { perror(”bind error!"); close(servFd); return —1; } printf(”bind ok!\n"); //listen ret=listen(servFd,10); if(—1==ret) { perror("listen error!\n"); close(servFd); return -1; } printf(”listen ok!\n"); //accept int connFd=accept(servFd,NULL,NULL); if(—1==connFd) { perror(”accept error!"); close(servFd); return —1; } printf("accept ok!\n"); //send/recv int fd=open(”2。txt”,O_RDONLY); if(-1==fd) { perror(”open error"); return —1; } char buf[100]; 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); } //close close(servFd); close(connFd); return 0; } 4。系统测试 4.1 系统软件测试 Server端运行结果如下图所示 图3 Client端运行如下图所示 图4 4。2 系统硬件测试 程序在虚拟机上运行结果如下所示 图5 程序在开发板上运行如下所示 图6 5. 总结和展望 在嵌入式的学习过程中,让我了解了什么是嵌入式系统.它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表. 老师在讲解过程中,首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,我也有遇到有些困难,会出现你按照书上学习的例子,将命令输入终端时会出现你不想要的结果,也就是错误的结果。这是问问旁边的同学或是懂的同学就可以解决了。在对于这部分的学习中,让我知道了命令对于嵌入式的重要性.它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,为了减少系统开销,经常不使用图形界面,此时,对系统的所有操作都需要以命令方式来执行。在嵌入式系统开发过程中,由于目标机的性能和配置比较低,因此,一般情况下目标机仅具有命令窗口而没有图形界面,对目标机的所有操作都通过命令来实现。 6。参考文献 《Linux设备驱动开发详解(第2版)》——华清远见嵌入式培训中心宋老师著 《Cortex—M3+uC/OS—IT嵌入式系统开发入门与应用》—-华清远见嵌入式培训中心著 《精通Linux设备驱动程序开发》-—华清远见嵌入式培训中心宋老师翻译 《Linux内核修炼之道》——华清远见嵌入式培训中心任桥伟老师著 《Linux那些事儿》—-华清远见嵌入式培训中心任桥伟老师著 - 7 -展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




基于Linux下载文件的功能设计与实现.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/3969685.html