资源描述:
《基于嵌入式系统的串口--以太网转换器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、现场答辩成绩:_实验报告成绩:■总成绩:_重庆邮电大学自动化学院综合实验报告题目:基于嵌入式系统的串口-以太网转换器单位(二级学院):学生姓名:专业:班级:学号:指导教师:自动化学院蒋松松自动化081070407200420王恒设计时间:年月重庆邮电大学自动化学院制一.实验作品功能描述二.实验作品展示三.程序流程图四.任务定义'实现及主要模块五.实验中遇到的问题及解决方法六.实验纟吉果七.个人所负责模块和心得体会八.进一步改进方案和作品应用建议附录:个人所负责编写的部分主要代码基于嵌入式的串行口网关设计三.实验作品功
2、能描述本文设计了一个基于ARM7处理器s3c44b0的网关,该网关实现了串行口与以太网之间的数据转换功能,实现了串行口与以太网之间的通信功能。四.实验作品展示V串行口该设计最终在实验室ARM3000开发板平台上验证成功,两个UP-NetARM3000通过网线相连接,发送板的ARM监视以太网,将接收到的字符发送到串行口收发器发送给电脑,接收板的以太网收发器监视网口,将接收的字符发送到串行口,电脑通过串行口接受数据,数据传送示意图如下:7串行口核心板<=>以太网<3A以太网0核心板数据转换示意图数据转换过程为,左端开始,
3、主机发送数据到串行口,核心板通过串口接收到数据,然后通过网口发送数据;右端以太网接收到数据,核心板发送到串行口,串行口发送给电脑,当然也能反向发送和接收。主机1与主机2实验结果如下图所示(实现了简单的聊天界面人主机1和主机2实验结果图(手动发送)三.程序流程图本次设计运用到了U/cos-II操作系统,定义了两个主要任务:Main_task和Receive.task,其中二者的优先级分别是12和24。其中,Main_task主要负责从串行口读取数据,发送到以太网。Receive.task负责从以太网接收数据,然后发送到
4、串行口。二者循环调度就实现了串行口与以太网的通信功能。此外,设计中的主函数主要实现开发板初始化、操作系统初始化、串行口收发器初始化等初始化功能。Main_task及Receive_task的流程图如下:Main_task流程图:Receive_task流程图如下所示:三.任务定义、实现及主要模块本设计屮定义了两个任务:Main_task及Receive_task;Main_task模块完成的主要任务:1)初始化了网络InitNetWork(),配置网络,强行设置开发板的网络地址:IP4_ADDRESS32(ipadd
5、r32,192,16&0,120);IP4_ADDRESS32(ipmaskaddr32,255,255,255,0);IP4_ADDRESS32(ipgateaddr32,192,168,0,1);Uart_Printf(HcurrentIPis192」68.0.120H);initOSNet(ipaddr32,ipmaskaddr32,ipgateaddr32,Mac);〃配置网络。2)设定计算机端套接口属性,定义了使用的IP协议、地址以及使用端口号:servaddr.sin_family=AFJNET;//
6、IPv4协议servaddr.sin_addr.s_addr=(67«24)
7、(0«16)
8、(168«8)
9、192;servaddr.sin_port=htons(5000);〃端口3)创建开发板发送端套接字ClientSock_out:ClientSock_out=socket(PF_INET,SOCK_DGRAM,0);〃创建套接字1)设定了开齋板发送端套接口属性,定义了发送板IP地址以及使用端口号:cliaddr_out.sin_family二AF_INET;//IPv4协议cliaddr_out.sin_po
10、rt=htons(4999);〃板了发送数据的端口cliaddr_out.sin_addr.s_addr=INADDR_ANY;〃填入本机IP2)绑定开護板发恳端套接字,可以进行較据通信:bind(ClientSock_out,(structsockaddr*)&cliaddr_out,sizeof(cliaddr_out));3)主要处理函数,串行口收到数据则发送到以太瓦hif(Uart_Poll(0)){〃串口收到数据,则发送到Uart_Getch((char*)data,O,O);count_send=send
11、to(ClientSock_out,(char*)&data,8,0,(structsockaddr*)&servaddr,sizeof(servaddr));}Receive_task模块完成的主要任务:1)创建开发板接收端套接字ClientSock_in:ClientSock_in=socket(PF_INET,SOCK_DGRAM,0);