查看: 3031|回复: 1

[MQX] 在MQX 4.0下如何实现二层收发包功能

[复制链接]

该用户从未签到

30

主题

61

帖子

0

高级会员

Rank: 4

积分
971
最后登录
2025-7-21
发表于 2013-6-9 19:16:29 | 显示全部楼层 |阅读模式
  MQX的RTCS协议栈具有强大的可扩展性,可以快速实现二层收发包功能,实现客户自己的私有协议。可以参考MQX自带的 IEEE 1588 MACNET driver,文件$MQX\mqx\source\io\enet\macnet\macnet_1588.c  
1. 注册一个L2的协议回调函数,当MAC收到L2的数据帧后,根据注册的协议类型调用对应的回调函数,如IP是0x800,ARP是0x806,IEEE1588是0x88F7;
      
       /* Registers the PTPV2 protocol type on an Ethernet channel */
        retval = ENET_open(enet_ptr, MQX1588_PTP_ETHERTYPE_1588, MACNET_ptp_service_L2pckts, enet_ptr);
        /* Allocate the queue for this type of messages */
        priv->L2PCKS_PTR = (MACNET_PTP_L2QUEUE_PTR) _mem_alloc_system_zero(sizeof(MACNET_PTP_L2QUEUE));
        MACNET_ptp_L2queue_init(priv->L2PCKS_PTR);
2. 协议回调函数处理收到的数据帧,如IEEE1588就将数据帧放到一个Queue中,供IEEE1588的上层协议栈调用;
 void MACNET_ptp_service_L2pckts
    (
       PCB_PTR  pcb,
          /* [IN] the received packet */
       pointer  handle
          /* [IN] the IP interface structure */
    )
 {
     .......
     //将IEEE1588帧放入队列
     MACNET_ptp_L2queue_add_packet(priv->L2PCKS_PTR, pcb->FRAG[0].FRAGMENT, pcb->FRAG[0].LENGTH);
 
     PCB_free(pcb);
 }
3. 通过ENET_send_raw发送L2数据帧。上层协议栈将L2帧组装完毕后,通过ENET_send_raw发送到MAC。请参考:
int_32 MACNET_ptp_send_L2pckts(_enet_handle handle, pointer param_ptr)
{
    ……………
    /* Ethernet msg. header */
    htone(packet_ptr->DEST, ((MACNET_PTP_ETHERTYPE_PCK *)param_ptr)->DEST_MAC);
    htone(packet_ptr->SOURCE, ((ENET_CONTEXT_STRUCT_PTR)handle)->ADDRESS);
    htons(packet_ptr->TYPE, MQX1588_PTP_ETHERTYPE_1588);
    ……………
    /* Payload */
    _mem_copy( (pointer)(((MACNET_PTP_ETHERTYPE_PCK *)param_ptr)-&gtTP_MSG), (pointer)&mem_ptr[sizeof(PCB)+sizeof(PCB_FRAGMENT)+sizeof(ENET_HEADER)], len );
    ………………
    return(ENET_send_raw((ENET_CONTEXT_STRUCT_PTR)handle, pcb_ptr));
}
 
 
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

0

主题

7

帖子

0

新手上路

Rank: 1

积分
22
最后登录
1970-1-1
发表于 2013-6-13 16:41:07 | 显示全部楼层

RE:在MQX 4.0下如何实现二层收发包功能

感谢楼主分享,有没有更加具体的例子?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 18:58 , Processed in 0.086625 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表