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

上传人:b****4 文档编号:6883456 上传时间:2023-05-10 格式:DOCX 页数:12 大小:133.65KB
下载 相关 举报
基于Linux下载文件的功能设计与实现.docx_第1页
第1页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第2页
第2页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第3页
第3页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第4页
第4页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第5页
第5页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第6页
第6页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第7页
第7页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第8页
第8页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第9页
第9页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第10页
第10页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第11页
第11页 / 共12页
基于Linux下载文件的功能设计与实现.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《基于Linux下载文件的功能设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Linux下载文件的功能设计与实现.docx(12页珍藏版)》请在冰点文库上搜索。

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

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

 

信息工程学院

嵌入式系统设计课程设计报告

 

题目

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

学号

学生姓名

专业名称

计算机科学与技术

班级

1.课题研究意义和现状-0-

1.1课题研究意义-0-

1.2课题研究现状-0-

2.系统总体方案设计及功能模块介绍-1-

2.1系统概述及总体方案设计-1-

3.系统软件设计与实现-1-

3.1主程序设计与实现-1-

3.2服务器端程序设计与实现-2-

3.3客户端程序设计与实现-4-

4.系统测试-7-

4.1系统软件测试-7-

4.2系统硬件测试-7-

5.总结和展望-9-

6.参考文献-9-

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目录权限

sudochmod-R777/tftpboot

4、新建/source目录,若有则不用新建

5、将nfsdir压缩包拷贝到该目录下,解压sudotar-xfnfsdir.ok.tar

6、修改source目录权限

sudochmod-R777/source

7、检查tftp与nfs服务器是否安装

apt-cachepolicytftpd-hpa

apt-cachepolicynfs-kernel-server

如果没有安装,则在终端输入sudoapt-getinstalltftpd-hpa

sudoapt-getinstallnfs-kernel-server进行安装

8、修改配置文档:

tftp服务器:

1、sudovim/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服务器状态

sudoservicetftpd-hpastatus

若为正在运行,则重启:

sudoservicetftpd-hparestart

若停止,则启动:

sudoservicetftpd-hpastart

nfs服务器:

1、sudovim/etc/exports

/source/nfsdir*(rw,sync,no_subtree_check,no_root_squash)

2、查看nfs服务器状态

sudoservicenfs-kernel-servicestatus

若为正在运行,则重启:

sudoservicenfs-kernel-serverrestart

若停止,则启动:

sudoservicenfs-kernel-serverstart

9、启动开发板

设置参数:

setenvipaddr192.168.100.200

setenvserverip192.168.100.2

saveenv

tftp41000000u-boot-fs4412.bin

moviwriteu-boot41000000

重启开发板,重新设置参数:

setenvipaddr192.168.100.200

setenvserverip192.168.100.2

setenvbootcmdtftp41000000uImage\;tftp42000000exynos4412-origen.dtb\;bootm41000000-42000000

setbootargsnoinitrdroot=/dev/nfsnfsroot=192.168.100.2:

/source/nfsdirrwrootwaitconsole=ttySAC2,115200n8init=/linuxrcip=192.168.100.200clk_ignore_unused

saveenv

3.2服务器端程序设计与实现

3.2.1服务器端主流程图(如图1)

图1

3.2.2服务器端主代码

intmain()

{

structsockaddr_inservAddr;

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

intcliFd=socket(PF_INET,SOCK_STREAM,0);

if(-1==cliFd)

{

perror("socketerror!

");

return-1;

}

//printf("socketok!

\n");

//connect

intret=connect(cliFd,(structsockaddr*)&servAddr,sizeof(servAddr));

if(-1==ret)

{

perror("connecterror!

");

close(cliFd);

return-1;

}

printf("connectok!

\n");

//send/recv

intfd=open("2.txt",O_RDONLY);

if(-1==fd)

{

perror("openerror");

return-1;

}

charbuf[100];

memset(buf,0,sizeof(buf));

while

(1)

{

intret=read(fd,buf,sizeof(buf));

if(0==ret)

{

break;

}

send(cliFd,buf,sizeof(buf),0);

}

//close

close(cliFd);

return0;

}

3.3客户端程序设计与实现

3.3.1客户端流程图(如图2)

 

 

 

图2

3.3.2客户端主代码

intmain()

{

structsockaddr_inservAddr;

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

intservFd=socket(PF_INET,SOCK_STREAM,0);

if(-1==servFd)

{

perror("socketerror");

return-1;

}

printf("socketok");

//bind

intret=bind(servFd,(structsockaddr*)&servAddr,sizeof(servAddr));

if(-1==ret)

{

perror("binderror!

");

close(servFd);

return-1;

}

printf("bindok!

\n");

//listen

ret=listen(servFd,10);

if(-1==ret)

{

perror("listenerror!

\n");

close(servFd);

return-1;

}

printf("listenok!

\n");

//accept

intconnFd=accept(servFd,NULL,NULL);

if(-1==connFd)

{

perror("accepterror!

");

close(servFd);

return-1;

}

printf("acceptok!

\n");

//send/recv

intfd=open("2.txt",O_RDONLY);

if(-1==fd)

{

perror("openerror");

return-1;

}

charbuf[100];

memset(buf,0,sizeof(buf));

while

(1)

{

intsevc=recv(connFd,buf,sizeof(buf),0);

if(0==sevc)

{

break;

}

write(fd,buf,sizeof(buf));

puts(buf);

printf("recvfromserver%ssuccess!

\n",buf);

}

//close

close(servFd);

close(connFd);

return0;

}

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那些事儿》——华清远见嵌入式培训中心任桥伟老师著

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2