网络缓冲区模型

更新时间:
2024-03-14
下载文档

网络缓冲区模型

网络设备的核心处理模块是 DMA(Direct Memory Access),DMA 模块能够协助 CPU 处理数据。

SylixOS 在网络初始化时预先给描述符和缓冲区分配一定大小的 DMA 内存空间,在处理数据时,直接使用分配好的缓冲区将数据搬运到网络设备,或者将数据从网络设备中读取至缓冲区。

DMA 模块收发数据的单元被称为 BD(Buffer Description),数据包会被分成若干个帧,而每帧数据则保存在一个 BD 中,BD 结构通常包含以下字段:

#include <SylixOS.h>
typedef struct bufferDesc {
    UINT16              BUFD_usDataLen;             /*  缓冲描述符中数据长度             */
    UINT16              BUFD_usStatus;              /*  缓冲描述符状态                   */
    ULONG               BUFD_uiBufAddr;             /*  缓冲区地址                       */
} BUFD;
  • BUFD_usDataLen:缓冲描述符中数据长度。
  • BUFD_usStatus:描述符状态。
  • BUFD_uiBufAddr:缓冲区虚拟地址地址。
  • 所有的 BD 组成一张 BD 表如下图所示,通常发送和接收的 BD 表是各自独立的。
文档内容是否对您有所帮助?
有帮助
没帮助