当前位置: 首页 > news >正文

网站建设好怎么优化材料网站建设

网站建设好怎么优化,材料网站建设,发布做任务网站,做设计什么兼职网站建设转载自#xff1a;https://blog.csdn.net/ethercat_i7/article/details/54018036 一、实时性的意义 在主从DC同步模式下#xff0c;主站需要以非常精准的时间发送过程数据#xff0c;如下图所示#xff1a; 二、实时性的关键 如下图所示#xff0c;影响实时性的关键因素是…转载自https://blog.csdn.net/ethercat_i7/article/details/54018036 一、实时性的意义 在主从DC同步模式下主站需要以非常精准的时间发送过程数据如下图所示 二、实时性的关键 如下图所示影响实时性的关键因素是操作系统和网卡驱动前者需要将过程数据准时送出后者需要优化网卡驱动即准时出发路上不能耽误。 操作系统的实时性体现在需要非常准时地调用EtherCAT主站协议栈的发送函数例如SOEM的发送函数是ecx_send_processdata() Etherlab的发送函数为ecrt_master_send()。 采用Linux系统时需要打上实时补丁如Xenomai、RTAI、OSADL等。 标准Linux下的网卡驱动是为通用的网络通信设计的网络数据穿过TCP/IP协议栈是一个非常漫长的过程其中包括各种安全性检查、路由、出入队列、分片和重组等等这其中有很多的不确定性所以在EtherCAT主站开发中需要优化网卡驱动使EtherCAT数据 绕过TCP/IP协议栈。 三、移植网卡驱动 在Etherlab的说明文档中给出了改造标准网卡驱动的三个基本点如下 (1)禁用netif_*() (2)禁用中断 (3)重复利用socket buffer 接下来以EtherLAB源码中移植好的网卡驱动RealTek RTL-8139为例进行说明。 1、禁用netif_*() 在网卡驱动程序中的接收函数rtl8139_rx()中netif_receive_skb (skb)负责将数据包传递给TCP/IP协议栈 将其改成由EtherCAT主站直接处理。 改造前 //8139too-3.4-orig.c static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,         int budget) { ...... netif_receive_skb (skb);//将数据包提交给TCP/IP协议栈处理 ...... } 改造后 //8139too-3.4-ethercat.c static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,         int budget) { ...... if (tp-ecdev) {                                         //作为EtherCAT使用时直接交给EtherCAT协议栈处理绕过TCP/IP协议栈    ecdev_receive(tp-ecdev,      rx_ring[ring_offset 4], pkt_size);      dev-last_rx jiffies;      dev-stats.rx_bytes pkt_size;      dev-stats.rx_packets;    } else { ...... netif_receive_skb (skb); ...... } } 2. 禁用中断 Linux标准网卡驱动中采用中断方式收发网络数据包较新的网卡驱动中采用NAPI中断和轮询相结合而EtherCAT通信中,EtherCAT主站发出过程数据包后主站非常清楚数据包什么时候返回主站因此不需要采用中断的方式而由主站直接查询和处理返回的过程数据包。 改造前 //8139too-3.4-orig.c static int rtl8139_open (struct net_device *dev) { ...... retval request_irq (dev-irq, rtl8139_interrupt, IRQF_SHARED, dev-name, dev); //向内核注册中断 ...... } 改造后 //8139too-3.4-ethercat.c static int rtl8139_open (struct net_device *dev) { ...... if (!tp-ecdev) {   retval request_irq(dev-irq, rtl8139_interrupt,        //作为普通网卡时才注册中断    IRQF_SHARED, dev-name, dev);   if (retval)    return retval;  } ...... } void ec_poll(struct net_device *dev) {  rtl8139_interrupt(0, dev); } 函数调用关系为ec_poll()-rtl8139_interrupt()-rtl8139_rx()-ecdev_receive(); 3. 重复利用Socket buffer Linux标准网卡驱动中将数据包发送后将释放数据包所占用的内存或者放回预先分配的内存池中 而EtherCAT通信中只需重复使用其中的一两个缓存即可这样可以节省为数据包分配和释放内存的时间。 改造前 //8139too-3.4-orig.c static netdev_tx_t rtl8139_start_xmit (struct sk_buff *skb,           struct net_device *dev) { ...... dev_kfree_skb(skb);//释放Socket buffer所占内存或将其放回内存池 ...... } 改造后 //8139too-3.4-ethercat.c static netdev_tx_t rtl8139_start_xmit (struct sk_buff *skb,           struct net_device *dev) { ...... if (!tp-ecdev) {      //只有作为普通网卡时才释放Socket buffer    dev_kfree_skb(skb);   } ...... }
http://www.yutouwan.com/news/314947/

相关文章:

  • 网站修改 iis6应用程序池做动漫姓氏头像的网站
  • 如何做电商网站视频广州网络维护
  • 装修企业网站建设开个做网站的公司
  • 2018年深圳建设网站公司做暖暖视频网站大全
  • wordpress模板导航类股票发行ipo和seo是什么意思
  • 无为建设局网站python教程
  • 麒贺丝网做的网站优化优化的定义
  • 做网站公司 上海大公司网站建设
  • 怎么在手机上做企业网站手机赚钱平台正规
  • 网站开发合同缺陷网站建设大神级公司
  • 做网站开发需要什么证书海南做网站公司哪家好
  • 做个网站的费用企业邮箱app下载
  • 网站建设公司汉狮网络免费wap自助建站火星建站
  • 深圳专门做网站的公司wordpress 专题页
  • 黄浦专业做网站音乐网站建设教程视频
  • 济宁公司做网站中国石油大学网页设计与网站建设
  • 运城市盐湖区姚孟精诚网站开发中心wordpress 个性主题
  • 智联招聘网站建设丽江市网站建设
  • 自适应网站建设推荐wordpress博客添加代码
  • 深圳做网站公网站建设 自适应
  • 徐城乡建设局网站漳平建设局网站
  • 怎么把做网站发给别人wordpress评论点赞怎么实现
  • 网站建设 深圳信科公司什么是网络营销最传统的手法
  • 取消网站备案杭州建站平台
  • 网站建设存在的问题大连微网站建设
  • 精品课程网站建设的国内外现状网页设计毕业设计理念
  • 做网站月度总结10个免费网站
  • 仿站能被百度收录吗灵感网站
  • 淄博做网站推广公司科技有限公司注册资金最低多少
  • 做一个学校网站怎么做广州展厅设计公司有哪些