嵌入式课程设计报告毕业论文.doc
《嵌入式课程设计报告毕业论文.doc》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告毕业论文.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、通信与信息工程学院嵌入式开发技术课程设计报告班 级:姓 名:学 号:指导教师:设计时间:2016年1月11日2016年1月14日成 绩:评 语:通信与信息工程学院二一六年目 录嵌入式课程设计11 设计要求11.1 基本题型11.2 综合题型22 开发环境、开发工具23设计过程及结果53.1 实现交叉编译环境53.2第几小组成员步骤53.3实现Linux系统下的简易聊天室74 设计总结20参考文献22嵌入式课程设计1 设计要求1.1 基本题型(1)嵌入式开发环境配置采用vmware+linux配置开发主机系统,要求构建linux系统,配置nfs,samba;掌握minicom、samba及NFS
2、使用,能利用其实现windows、linux开发主机与嵌入式实验系统间的通信;利用NFS服务实现主机与实验系统间文件共享;利用提供的工具构建交叉编译环境;要求:在下图时间上面一行显示小组成员姓名Armv4l-unknown-linux-gcc 是 否 在/opt/host/armv4l/bin/,如果不是这个路径,请使用 vi 修改/root/.bash_profile 文件中 。ATH变 量 为 PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ , 存 盘 后 执 行 : source /root/.bash_profile(2)熟悉VI、GCC、GDB及
3、MAKE文件使用;(3)在开发系统中编写一个程序,实现打印“通信工程13级第3小组嵌入式开发技术课程设计基础内容”功能,编写makefile文件,并通过NFS下载到实验箱中,验证交叉编译环境配置。1.2 综合题型基于socket编程的简单聊天室程序设计:(1)掌握linux下socket编程方法;(2)基于C语言设计一个简单的聊天室程序,PC运行客户端程序,嵌入式系统运行服务器端程序,服务器随时侦听客户端请求并将其接入,要求至少实现2个客户端接入服务器并进行通信的功能;(3)编写Makefile文件;(4)利用NFS将程序下载到实验箱中,编译执行。(5)课程设计报告中应包含服务器端socket
4、创建、绑定、监听、允许接入及接收数据等关键代码及其说明,客户端请求及数据发送等关键代码及说明;2 开发环境、开发工具(1)安装VWware软件 开始安装加载文件.双击该文件的图标,进入加载安装文件的界面。 设置安装类型。安装文件加载完毕后进入开始安装界面。单击next按钮后,进入安装类型选择界面,选择tyical选项。 执行软件包的安装选项,依据所做的选择,把对应的软件组件安装到系统中,输入正确的序列号。 (2)配置VMware 打开桌面上VMware图形,双击打开 再打开原来的文件夹,把汉化包打开 执行软件的安装选项,依据所做的选择,确认安装。确认完后,即配置完成。 点击打开虚拟机,选择标准
5、,下一步,执行软件的安装选项。接下是密钥,填写老师所给的密码。安装完成。(3)安装驱动 点击安装包,根据软件的安装选项,点击next按钮,即可安装完成。注:在电脑上安装好虚拟机之后配置相关参数 配置NFS:点击菜单运行系统设置-点击服务器设置-NFS服务器,点击增加,在目录中选择共享目录的路径,在主机(host)中填入主机IP地址(192.168.1.12),并选择客户对共享目录的操作位读写(Read/write);在常规选项中选择允许来自高于1024的端口的连接,点击确定后即可配置好NFS。配置完成后,可以简单测试一下NFS是否配置好了: 在虚拟机上自己 mount 自己,看是否成功就可以判
6、断NFS是否配好了。mount 192.168.1.12:/arm2410cl /host之后ls命令查看arm2410cl之下的文件目录,如果文件目录在,那么说明NFS配置成功。端口配置 用串口线连接好笔记本电脑和 2410 经典版平台。 计算机,属性,设备管理器,端口高级设置下端口号COM1进入虚拟机设置,串行端口3设计过程及结果3.1 实现交叉编译环境结果:3.2第几小组成员步骤(1)创建工作目录【rootvm-dev】# mkdir winter【rootvm-dev winter】# cd winter(2)编写winter.c文件 【rootvm-dev】# vi winter.c
7、(3)编写Makefile文件 CC =armv4l-unknown-linux-gccEXEC=client serverOBJS=client.o server.oCFLAGS+=LDFLAGS+=-staticall:$(EXEC)$(EXEC):$(OBJS)$(CC) $(LDFLAGS) o $ $(OBJS)clean:-rm f *.elf *.gdb *.o 其中,CC 指明编译器EXEC 表示编译后生成的执行文件名称OBJS 目标文件列表CFLAGS 编译参数LDFLAGS 连接参数all: 编译主入口clean: 清除编译结果(4)运行make编译程序【rootvm-de
8、v】# make clean【rootvm-dev winter】# make(5)源程序 #include int main(void) printf(“ 通信工程13级第三小组嵌入式开发技术课程设计基础内容“);6)结果由于电脑与开发板不匹配,结果没有办法出来3.3实现Linux系统下的简易聊天室(1)程序流程图返回-1numbytes0返回0是否连接上服务器connect()输入文字关闭socket结束开始创建套接字socket初始化结构体server_addr =0=0=0!=-1!=-1!=-1=-1=-1=-1开始定义套接字类型结构体初始化绑定端口bind()监听端口listen(
9、)定义线程ppid pid接收信息accept()接收成功,发送send()创建子进程ppid创建子进程pidPid接收信息,大小为recvbyes睡眠usleep(10000)将信息发回给客户send()结束=-1=-1=-1(2)程序工作过程服务端处于监听状态,客户端发送请求,连接成功并通信。首先服务端调用socket()函数创建一个套接字,然后把协议,端口号,ip信息通过bind()进行绑定。以上操作完后服务端就开始监听客户端的请求,并设置监听的最大数目。当客户端发送链接请求时,服务端就调用accept()函数接受客户端的请求。然后对于客户端来说,也是要先调用socket()函数创建客户
10、端的套接字,这里是用的TCP协议,所以可以不用bind()函数。接着调用connect()函数与服务端建立连接。当服务端和客户端建立连接时,可以通过彼此之间的套接字描述符来进行数据传输。其中一方通过send函数把数据写入数据缓冲区,另一方通过recv()函数从缓冲区内读出数据,这样就完成了服务端与客户端之间的数据传输。当双方数据传输完成后,函数close()关闭各自的 套接字,使客户端和服务端通信中断。(3)socket编程方案设计一个简单的聊天室程序,PC运行客户端程序,嵌入式系统运行服务器端程序,服务器随时侦听客户端请求并将其接入,要求至少实现2个客户端接入服务器并进行通信的功能;Make
11、file文件NFS将程序下载到实验箱中,编译执行。注:程序里的函数解释(1)Socket() 作用:socket函数为客户机或服务器创建一个sokcet格式:int socket(int family,int type,int protocol);参数说明: Family:表示地址族,可以去AF_UNLX和AF_INT。其中,AF_UNLX只能够用于单一的UNIX系统进程间通信;AF_INT是针对Internet的,因而可以允许在远程主机之间通信,实验中使用AF_INT。 Type:网络程序所采用的通信协议,可以取SOCK_STREAM或SOCK_DGRAM。其中,SOCK_STREAM表明使
12、用的是TCP协议,这样提供按顺序的、可靠的、双向、面向连接的比特流;SOCKE_DGRAM表明使用的是UDP协议,这样只会提供定长、不可靠、无连接的通信。(2)bind( )格式: int bind(int sockfd,struct sockaddr *addr,int addrlen); 参数说明: Sockfd:socket的文件描述符号。 Sockaddr:表示名字所用的一个数据结构,用来保存地址(包括IP地址和端口) Addrlen:设置结构大小长度。(3)listen()格式: int listen(int sockfd, int backlog); 作用:监听连接信号,和acce
13、pted函数合同。 参数说明: Sockfd:表示socket调用返回的文件描述符。 Backlog:表示接入队列允许的连接数目,大多数系统允许20个,也可以子定义510个。(4)accept() 格式: Int accept (int sockfd, void *addr, int *addrlen); 作用:与listen函数合用,监听信息、接收客户端请求。 参数说明: Sockfd:表示socket的文件描述符。 Addr:表示指向局部的数据结构struct sockaddr-in的指针。 Addrlen:表示地址的长度。(5)connect()格式: int connect( int
14、sockfd , struct sockaddr *serv_addr , int addrlen); 作用:在面向连接的系统中客户及连接服务器时使用,connect必须在bind后使用。 参数作用: Sockfd:表示socket的文件描述符。 Serv-addr:表示村访目的端口和ip地址(套接字)的数据结构。(6)send() 和 recv() 格式1: Int send (int sockfd, const vod *msg,int len, int flags); 功能:发送信息。 格式2: Int recv (int sockfd , void *buf,int len, usig
15、ned int flags); 作用:用于流式socket、数据报socket内部之间的通信。(7)close( ) 和 shutdown ( )格式: Close( int sockfd)或 Int shutdown(int sockfd , int f); 参数说明: f的值为下面一种: 0-不允许继续接收; 1-不允许继续发送; 2-不允许继续发送和接收。(8)有关线程的系统调用函数pthread_create()、pthread_join()实验过程说明(使用TCP/IP)(1)监听连接 利用socket、bind、listen建立连接,步骤是:1) 先用socket函数初始化sock
16、et,创建新的sockfd。Sockfd = socket(AF_INT,SOCK_STREAM,0)2) 此步骤涉及到IP地址及其处理过程。参数说明: inet_addr 函数 INADDR_ANY该函数把由小数点分开的十进制IP地址转为unsinged long 类型,而在实验中所使用的为INADDR_ANY,使用利用自已的IP地址自动填充。a)利用bind函数绑定端口和IP地址。My_addr.sin_family=AF_INET; /*将地址族类型设定好 */My_addr.sin_port=htons(MYPORT; /* 将端口给其赋值*/My_addr.sin_addr.s_ad
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计 报告 毕业论文
限制150内