嵌入式课程设计报告毕业论文_第1页
嵌入式课程设计报告毕业论文_第2页
嵌入式课程设计报告毕业论文_第3页
嵌入式课程设计报告毕业论文_第4页
嵌入式课程设计报告毕业论文_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

通信与信息工程学院嵌入式开发技术课程设计报告班级姓名学号指导教师设计时间2016年1月11日2016年1月14日成绩评语通信与信息工程学院二一六年目录嵌入式课程设计11设计要求111基本题型112综合题型22开发环境、开发工具23设计过程及结果531实现交叉编译环境532第几小组成员步骤533实现LINUX系统下的简易聊天室74设计总结20参考文献22嵌入式课程设计1设计要求11基本题型(1)嵌入式开发环境配置采用VMWARELINUX配置开发主机系统,要求构建LINUX系统,配置NFS,SAMBA;掌握MINICOM、SAMBA及NFS使用,能利用其实现WINDOWS、LINUX开发主机与嵌入式实验系统间的通信;利用NFS服务实现主机与实验系统间文件共享;利用提供的工具构建交叉编译环境;要求在下图时间上面一行显示小组成员姓名ARMV4LUNKNOWNLINUXGCC是否在/OPT/HOST/ARMV4L/BIN/,如果不是这个路径,请使用VI修改/ROOT/BASH_PROFILE文件中。ATH变量为PATHPATHHOME/BIN/OPT/HOST/ARMV4L/BIN/,存盘后执行SOURCE/ROOT/BASH_PROFILE(2)熟悉VI、GCC、GDB及MAKE文件使用;(3)在开发系统中编写一个程序,实现打印“通信工程13级第3小组嵌入式开发技术课程设计基础内容”功能,编写MAKEFILE文件,并通过NFS下载到实验箱中,验证交叉编译环境配置。12综合题型基于SOCKET编程的简单聊天室程序设计(1)掌握LINUX下SOCKET编程方法;(2)基于C语言设计一个简单的聊天室程序,PC运行客户端程序,嵌入式系统运行服务器端程序,服务器随时侦听客户端请求并将其接入,要求至少实现2个客户端接入服务器并进行通信的功能;(3)编写MAKEFILE文件;(4)利用NFS将程序下载到实验箱中,编译执行。(5)课程设计报告中应包含服务器端SOCKET创建、绑定、监听、允许接入及接收数据等关键代码及其说明,客户端请求及数据发送等关键代码及说明;2开发环境、开发工具(1)安装VWWARE软件开始安装加载文件双击该文件的图标,进入加载安装文件的界面。设置安装类型。安装文件加载完毕后进入开始安装界面。单击NEXT按钮后,进入安装类型选择界面,选择TYICAL选项。执行软件包的安装选项,依据所做的选择,把对应的软件组件安装到系统中,输入正确的序列号。(2)配置VMWARE打开桌面上VMWARE图形,双击打开再打开原来的文件夹,把汉化包打开执行软件的安装选项,依据所做的选择,确认安装。确认完后,即配置完成。点击打开虚拟机,选择标准,下一步,执行软件的安装选项。接下是密钥,填写老师所给的密码。安装完成。(3)安装驱动点击安装包,根据软件的安装选项,点击NEXT按钮,即可安装完成。注在电脑上安装好虚拟机之后配置相关参数配置NFS点击菜单运行系统设置点击服务器设置NFS服务器,点击增加,在目录中选择共享目录的路径,在主机(HOST)中填入主机IP地址(192168112),并选择客户对共享目录的操作位读写READ/WRITE在常规选项中选择允许来自高于1024的端口的连接,点击确定后即可配置好NFS。配置完成后,可以简单测试一下NFS是否配置好了在虚拟机上自己MOUNT自己,看是否成功就可以判断NFS是否配好了。MOUNT192168112/ARM2410CL/HOST之后LS命令查看ARM2410CL之下的文件目录,如果文件目录在,那么说明NFS配置成功。端口配置用串口线连接好笔记本电脑和2410经典版平台。计算机,属性,设备管理器,端口高级设置下端口号COM1进入虚拟机设置,串行端口3设计过程及结果31实现交叉编译环境结果32第几小组成员步骤(1)创建工作目录【ROOTVMDEV】MKDIRWINTER【ROOTVMDEVWINTER】CDWINTER(2)编写WINTERC文件【ROOTVMDEV】VIWINTERC(3)编写MAKEFILE文件CCARMV4LUNKNOWNLINUXGCCEXECCLIENTSERVEROBJSCLIENTOSERVEROCFLAGSLDFLAGSSTATICALLEXECEXECOBJSCCLDFLAGSOOBJSCLEANRMFELFGDBO其中,CC指明编译器EXEC表示编译后生成的执行文件名称OBJS目标文件列表CFLAGS编译参数LDFLAGS连接参数ALL编译主入口CLEAN清除编译结果(4)运行MAKE编译程序【ROOTVMDEV】MAKECLEAN【ROOTVMDEVWINTER】MAKE(5)源程序INCLUDEINTMAINVOIDPRINTF“通信工程13级第三小组嵌入式开发技术课程设计基础内容“6结果由于电脑与开发板不匹配,结果没有办法出来33实现LINUX系统下的简易聊天室(1)程序流程图返回1NUMBYTES010NUMBYTES返回0是否连接上服务器CONNECT输入文字关闭SOCKET结束开始创建套接字SOCKET初始化结构体SERVER_ADDR000111111开始定义套接字类型结构体初始化绑定端口BIND监听端口LISTEN()定义线程PPIDPID接收信息ACCEPT接收成功,发送SEND()创建子进程PPID创建子进程PIDPID接收信息,大小为RECVBYES睡眠USLEEP10000将信息发回给客户SEND()结束111(2)程序工作过程服务端处于监听状态,客户端发送请求,连接成功并通信。首先服务端调用SOCKET函数创建一个套接字,然后把协议,端口号,IP信息通过BIND()进行绑定。以上操作完后服务端就开始监听客户端的请求,并设置监听的最大数目。当客户端发送链接请求时,服务端就调用ACCEPT函数接受客户端的请求。然后对于客户端来说,也是要先调用SOCKET函数创建客户端的套接字,这里是用的TCP协议,所以可以不用BIND函数。接着调用CONNECT函数与服务端建立连接。当服务端和客户端建立连接时,可以通过彼此之间的套接字描述符来进行数据传输。其中一方通过SEND函数把数据写入数据缓冲区,另一方通过RECV函数从缓冲区内读出数据,这样就完成了服务端与客户端之间的数据传输。当双方数据传输完成后,函数CLOSE关闭各自的套接字,使客户端和服务端通信中断。(3)SOCKET编程方案设计一个简单的聊天室程序,PC运行客户端程序,嵌入式系统运行服务器端程序,服务器随时侦听客户端请求并将其接入,要求至少实现2个客户端接入服务器并进行通信的功能;MAKEFILE文件NFS将程序下载到实验箱中,编译执行。注程序里的函数解释(1)SOCKET作用SOCKET函数为客户机或服务器创建一个SOKCET格式INTSOCKETINTFAMILY,INTTYPE,INTPROTOCOL参数说明FAMILY表示地址族,可以去AF_UNLX和AF_INT。其中,AF_UNLX只能够用于单一的UNIX系统进程间通信AF_INT是针对INTERNET的,因而可以允许在远程主机之间通信,实验中使用AF_INT。TYPE网络程序所采用的通信协议,可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使用的是TCP协议,这样提供按顺序的、可靠的、双向、面向连接的比特流;SOCKE_DGRAM表明使用的是UDP协议,这样只会提供定长、不可靠、无连接的通信。(2)BIND格式INTBINDINTSOCKFD,STRUCTSOCKADDRADDR,INTADDRLEN参数说明SOCKFDSOCKET的文件描述符号。SOCKADDR表示名字所用的一个数据结构,用来保存地址包括IP地址和端口ADDRLEN设置结构大小长度。(3)LISTEN格式INTLISTENINTSOCKFD,INTBACKLOG作用监听连接信号,和ACCEPTED函数合同。参数说明SOCKFD表示SOCKET调用返回的文件描述符。BACKLOG表示接入队列允许的连接数目,大多数系统允许20个,也可以子定义510个。(4)ACCEPT格式INTACCEPTINTSOCKFD,VOIDADDR,INTADDRLEN作用与LISTEN函数合用,监听信息、接收客户端请求。参数说明SOCKFD表示SOCKET的文件描述符。ADDR表示指向局部的数据结构STRUCTSOCKADDRIN的指针。ADDRLEN表示地址的长度。(5)CONNECT格式INTCONNECTINTSOCKFD,STRUCTSOCKADDRSERV_ADDR,INTADDRLEN作用在面向连接的系统中客户及连接服务器时使用,CONNECT必须在BIND后使用。参数作用SOCKFD表示SOCKET的文件描述符。SERVADDR表示村访目的端口和IP地址(套接字)的数据结构。(6)SEND和RECV格式1INTSENDINTSOCKFD,CONSTVODMSG,INTLEN,INTFLAGS功能发送信息。格式2INTRECVINTSOCKFD,VOIDBUF,INTLEN,USIGNEDINTFLAGS作用用于流式SOCKET、数据报SOCKET内部之间的通信。(7)CLOSE和SHUTDOWN格式CLOSEINTSOCKFD或INTSHUTDOWNINTSOCKFD,INTF参数说明F的值为下面一种0不允许继续接收;1不允许继续发送;2不允许继续发送和接收。(8)有关线程的系统调用函数PTHREAD_CREATE、PTHREAD_JOIN实验过程说明(使用TCP/IP)1监听连接利用SOCKET、BIND、LISTEN建立连接,步骤是1先用SOCKET函数初始化SOCKET,创建新的SOCKFD。SOCKFDSOCKET(AF_INT,SOCK_STREAM,0)2此步骤涉及到IP地址及其处理过程。参数说明INET_ADDR函数INADDR_ANY该函数把由小数点分开的十进制IP地址转为UNSINGEDLONG类型,而在实验中所使用的为INADDR_ANY,使用利用自已的IP地址自动填充。A利用BIND函数绑定端口和IP地址。MY_ADDRSIN_FAMILYAF_INET/将地址族类型设定好/MY_ADDRSIN_PORTHTONSMYPORT/将端口给其赋值/MY_ADDRSIN_ADDRS_ADDRINADDR_ANY/用连接地址自动填充IP/BINDSOCKFD,STUCTSOCKADDR/SOCKFD是分配的SOCKET名字,MYADDR则便是分配好的端口与IP,用BIND绑定/B利用LISTEN监听请求2发送请求1利用GETHOSTBYNAME获取主机信息。2初始化SOCKET端口。3利用CONNECT函数将自己的IP地址等信息发送到主机,等待主机调用ACCEPT函数来接受请求。3主机接收请求,进行数据通信1主机利用ACCEPT接收请求。2创建子进程,显示欢迎信息;3接收返回信息,显示连接成功,并推出连接;4关闭客户端口SOCKET;5关闭服务端SOCKET,结束子线程。(4)实现步骤建立工作目录【ROOTVMDEV】MKDIRSERVER【ROOTVMDEVSERVER】CDSERVER【ROOTVMDEVSERVER】VISERVERC【ROOTVMDEV】MKDIRCLIENT【ROOTVMDEVCLIENT】CDCLIENT【ROOTVMDEVCLIENT】VICLIENTC编写程序源代码程序附后编译实现过程在编写完TCP服务端程序SERVERC后,用ARMV4LUNKNOWNLINUXGCCLPTHREADOSERVERCSERVER生成程序SERVER。在编写完TCP客户端程序CLIENTC后,用ARMV4LUNKNOWNLINUXGCCOCLIENTCCLIENT生成程序CLIENT在嵌入式系统上运行SERVER。在主机上打开一个窗口,运行CLIENT,输入服务器的IP地址,并检查器结果的正确性。输入/SERVER/CLIENT192168112(192168112为本机的IP地址)输出SERVERGOTCONNECTIONFROM192168112客户端发送信息服务器端接收信息。客户端通过键盘输入消息内容平回车,以发送消息给服务器端;结果服务端客户端注源程序CLIENTC程序INCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEDEFINEEHCO_PORT8888/端口号DEFINEMAX_COMMAND5/最大发送消息的次数INTMAININTSOCK_FDSTRUCTSOCKADDR_INS_ADDRCHARBUFF100/缓冲区的大小CHARTMP_BUF100INTN,ISOCK_FDSOCKETAF_INET,SOCK_STREAM,0/创建SOCKET套接字,协议为IPV4协议,并且为字节流套接字IFSOCK_FD1PERROR“CREATESOCKETFAIL“RETURN0ELSEPRINTF“CREATESOCKETDN“,SOCK_FD/设置SERVER地址结构/BZERO/初始化结构占用的内存S_ADDRSIN_FAMILYAF_INET/IPV4协议S_ADDRSIN_PORTHTONSEHCO_PORT/设置监听的端口S_ADDRSIN_ADDRS_ADDRINET_ADDR“1921680121“/设置服务器的地址BZEROIF1CONNECTSOCK_FD,STRUCTSOCKADDRCLOSESOCK_FDRETURN0PRINTF“CONNECTTOSERVEROKN“FORI0IINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEINCLUDEDEFINEEHCO_PORT8888/定义端口号DEFINEMAX_CLIENT_NUM5/最大监听客户端数INTMAININTSOCK_FDSTRUCTSOCKADDR_INS_ADDRINTCLIENTFDSTRUCTSOCKADDR_INCLIENTADDCHARBUFF101/设置缓冲区的大小SOCKLEN_TLENINTN/创建SOCKET/SOCK_FDSOCKETAF_INET,SOCK_STREAM,0/协议设置为IPV4协议,并设置为字节流套接字IFSOCK_FD1PERROR“CREATESOCKETFAIL“RETURN0ELSEPRINTF“CREATESOCKETOKDN“,SOCK_FDBZERO/初始化结构体占用的内存S_ADDRSIN_FAMILYAF_INET/客户端协议为IPV4S_ADDRSIN_PORTHTONSEHCO_PORT/把16位值的端口号从主机字节转换为网络字节S_ADDRSIN_ADDRS_ADDRINET_ADDR“1921680121“/设置服务器地址BZERO/将内存块的前8个字节清零IFBINDSOCK_FD,STRUCTSOCKADDRCLOSESOCK_FDRETURN0ELSEPRINTF“BINDOKN“IF1LISTENSOCK_FD,MAX_CLIENT_NUM/设置套接字监听PERROR“LISTENFAILN“CLOSESOCK_FDRETURN0ELSEPRINTF“LISTENOKN“LENSIZEOFCLIENTADDCLIENTFDACCEPTSOCK_FD,STRUCTSOCKADDR/创建新连接对应的套接字IFCLIENTFD0BUFFN0/给字符串加入结束符PRINTF“THEDATAOFRECEIVESN“,BUFF/打印字符串的内容FFLUSHSTDOUT/清除文件缓冲区PRINTF“PUTTHEDATAOFSENDN“SCANF“S“,BUFFSENDCLIENTFD,BUFF,N,0/发送内容给客户端PRINTF“THEMESSAGEOFSENDSN“,BUFFIFSTRNCMPBUFF,“QUIT“,40/判断是否退出命令BREAKCLOSECLIENTFD/关闭新建的连接CLOSESOCK_FD/关闭服务端监听的SOCKETRETURN04设计总结在本学期的最后一周,我们被要求完成嵌入式的设计总结,虽然只有不到一周的时间,但是大家都感觉收获颇丰。把课堂上遗忘的、遗落的知识都捡了起来,旧的知识新的知识都掌握了很多,并且切实的体会到软件开发的困难与乐趣,认识到了自己的不足,并且慢慢摸索,不耻下问,在老师和小组成员的共同努力下,结束了这次的实践。此次课程设计老师要求我们完成两道基础题目,以及一道三选一的综合题目。前面的基础题目大家有在课堂上接触过,并且通过查找资料,大家分工合作一个上午就有了很大的进展,但是在下午的完善工作中还是被卡住了,一个小的程序调试不出来,不能出现要求的结果,最后在其他组一个同学的帮助下完成了基础题目。第二天大家开始做综合题,经过商量选择了基于SOCKET编程的简单聊天室程序设计,其实三道题目大家都没有把握能完成,对这道题比较有兴趣就敲定了。开始就是大量的查找资料,因为大家在课堂上学习的知识都太浅,并且大都停留在理论上,没有开发经验,所以大量工作都依靠互联网,不过因为我们组成员的C的能力都挺好,所以能够对代码程序理解并修改以及调试,最终还是尽我们最大努力完成了这次设计。下面整理一下这次课程设计中个人的总结。齐秀搜集资料,写论文这次的实践中,我负责搜集资料以及论文编撰。在刚拿到题目的时候,因为大家都比较束手无策,所以就必须要借用别人的东西,加以修改整理变成自己的东西。我查找了很多论文和书籍,然后根据设计要求将可用的东西整理打包给其他人,包括一些代码和思想,在程序调试成功后进行了总结并参与撰写论文。在这中间,我认识到了我们的不

温馨提示

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

评论

0/150

提交评论