基于UDP协议的ARM与X86平台之间的通讯方案

2020-10-19来源: elecfans关键字:UDP协议  ARM  X86平台  通讯方案

  随着人工智能的应用,ARM产品已经遍布到各个领域:工业控制、无线通讯领域、消费类电子产品、成像和安全产品,包括现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用,因此,ARM与其它平台之间通讯就显得尤为重要。


  1.UDP协议本质


  UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。


  UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535.一般来说,大于49151的端口号都代表动态端口。


  数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据工作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。


  UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。


  如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。其实在UDP协议中校验功能是可选的,如果将其关闭可以使系统的性能有所提升。这与TCP协议是不同的,后者要求必须具有校验值。


  2.实现案例

  实现案例如下:在触摸屏进行画图,使其在液晶屏上显示,同时通过网络传输数据,使其在计算机屏幕上显示,并由计算机控制清除液晶屏上的图形。


  步骤如下:

  (1)新建工程

  (2)在main.c文件中编辑初始化网络函数void InitNetWork()//初始化网络{

  U32 ipaddr32,ipmaskaddr32,ipgateaddr32;

  U8 *Mac;

  ipaddr32=Get_ipaddr(); //获取IP地址

  ipmaskaddr32=Get_maskaddr();//获取子网掩码

  ipgateaddr32=Get_gwaddr(); //获取网关

  Mac=Get_mac(); //获取网卡地址NetPortChoose(0);

  //选择网口,必须在配置网络以前进行

  initOSNet(ipaddr32, ipmaskaddr32,

  ipgateaddr32,Mac);//配置网络

  OSTImeDly(1000);//任务挂起1秒

  printk(“init Ethernet and UDP is

  ok!n”);

  }


  (3)定义计算机端套接字,全局变量(4)编写Main_Task任务及消息循环主要负责响应触摸屏消息,在屏幕上画图,然后将数据传输到计算机上。


  对触摸屏消息的处理和键盘消息类似,其消息类型pMsg->Message为OSM_TOUCH_SCREEN,消息参数pMsg->LParam中包含了触摸屏的动作信息,定义如下:

  #define TCHSCR_ACTION_NULL

  0

  #define TCHSCR_ACTION_CLICK 1 //触摸

  屏单击

  #define TCHSCR_ACTION_DBCLICK 2 //触

  摸屏双击

  #define TCHSCR_ACTION_DOWN 3 //触摸

  屏按下

  #define TCHSCR_ACTION_UP 4 //触摸

  屏抬起

  #define TCHSCR_ACTION_MOVE 5 //触摸

  屏移动

  消息参数pMsg->WParam中则包含了触摸

  点的坐标信息,低16位是X坐标值,高16位是Y坐标值。这里当触摸屏产生“按下”动作后采用MoveTo()函数设置绘图起始点坐标,当产生“移动”动作后采用LineTo()函数绘制线段。


关键字:UDP协议  ARM  X86平台  通讯方案 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic513591.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于嵌入式Linux系统的导航软件设计思路
下一篇:基于ARM的矩阵键盘设计及其linux驱动实现

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

分析TCP/IP协议栈代码之UDP(STM32平台)
1. UDP介绍UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。        UDP数据报封装成一份 IP数据报的格式如图11 - 1所示。RFC 768 [Postel 1980] 是UDP的正式规范。UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议如TCP。在讨论完TCP后
发表于 2018-04-28
分析TCP/IP<font color='red'>协议</font>栈代码之<font color='red'>UDP</font>(STM32平台)
udp协议的数据接收与发送的代码
于lwIP协议中的UDP协议,用单片机做一个服务器,接受电脑的指令然后返回数据。以下是我的代码/*****************************************************函数功能:初始化udp,选定通信端口,建立连接机制****************************************************/void Udp_Api_init(void){  err_t err;  struct udp_pcb *UDPpcb;  /* create a new UDP PCB structure  */  UDPpcb = udp
发表于 2018-04-28
采用UDP协议实现PIC18F97J60 ethernet bootloader
  TCP/IP Stack  使用pic18f97j60开发过多个项目,项目中都使用了Microchip免费提供的TCP/IP Stack实现远程控制。但是每次更新程序,都需要将pic18f97j60目标板取回来重新烧录,很不方便。既然可以实现远程控制,为什么不实现远程更新呢?这就是我的ethernet bootloader的由来。Microchip的TCP/IP Stack功能很强大,我决定只用它的UDP模块来实现。为了实现远程更新,我需要写pic18f97j60单片机端UDP协议的ethernet bootloader程序--我将其命名为PhnBoot_v1.0; 同时还需要写PC端与bootloader交互的UDP通信程序
发表于 2017-01-20
采用<font color='red'>UDP</font><font color='red'>协议</font>实现PIC18F97J60 ethernet bootloader
采用UDP协议的PIC32MZ ethernet bootloader
cache.2. PIC32MZ ethernet module ports mapping3. PIC32MZ EC Starter Kit的external PHY的LEDs和Start Kit的LED1,LED2复用4. PIC32MZ EC Starter Kit的ethernet module有些port复用AN功能。5. ethernet bootloader download完application后,跳转到application前 ,注意要清零所有使用到的register,包括disable interrupt。  PhnLoader_v3.0和PhnBoot_v3.0之间采用UDP协议通信,通信数据包格式采用
发表于 2017-01-20
采用<font color='red'>UDP</font><font color='red'>协议</font>的PIC32MZ ethernet bootloader
单片机联网,UIP实现tcp/udp协议
;   }#if UIP_UDP    //UIP_UDP         //轮流处理每个UDP连接, UIP_UDP_CONNS缺省是10个        for(i=0;i<UIP_UDP_CONNS;i++)        {            uip_udp_periodic(i);    //处理UDP通信事件         
发表于 2017-01-12
苹果自研Arm处理器性能值得期待吗?
11月10日苹果的特别活动快要到了,在此活动上苹果大概率会发布搭载苹果自研Arm处理器的MacBook。而这颗苹果自研Arm处理器——或许会被称为A14X Bionic的性能,已经被曝光了。Expreview超能网引外媒报道,在Geekbench 5上发现了这颗A14X的跑分情况,显示该处理器的基础频率为1.8GHz,并且频率可以最高自己上到3.1GHz,它是一个8核处理器,并且GPU部分包含8GB的显存。从数据来看,A14X的单核基准测试得分为1634,而A12Z的得分为1118,A14的单核测试得分为1583,所以说相较A14,新的MacBook上的Arm处理器单核性能提升不大,毕竟单核性能的提升难度是很大的。多核方面
发表于 2020-11-08
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved