嵌入式学习小组
直播中

张鑫

7年用户 852经验值
私信 关注

NUC980的网口的发送描述符的缓冲区地址要求4字节对齐的问题求解

NUC980的网口的发送描述符的缓冲区地址要求 4字节对齐的问题,因为我用的协议栈里面要求IP数据段4字节对齐,加上以太网14字节,如果发送缓冲区要求4字节对齐,带来的问题我必须要完成一次拷贝,不能把数据缓冲区直接发送
另外一个问题,我看接收缓冲区的地址好像没有要求4字节对齐。

回帖(1)

王桂英

2024-1-4 15:19:44
根据NUC980的数据手册,在网口发送描述符的地址中,前两个字节为发送缓冲区地址的低16位,后两个字节为发送缓冲区地址的高16位。因此,在设置发送描述符时,只需要保证发送缓冲区地址的低两个字节为 0 即可,无需进行额外的对齐操作。

这意味着,如果您的协议栈要求IP数据段4字节对齐,则可以将发送缓冲区分为两个部分:前面的部分进行4字节对齐后,后面的部分不需要对齐。然后,将前后两个部分的地址分别拼接,填入发送描述符中的缓冲区地址即可。

接收缓冲区的地址没有要求4字节对齐,这是因为在接收数据时,网口会首先读取以太网帧头部分的数据(包括目的MAC地址、源MAC地址、以及帧类型/长度),以确定接收数据的长度,并且在接收数据后,网口会将数据拷贝到指定的接收缓冲区中,因此不需要对接收缓冲区进行额外的对齐操作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分