请选择 进入手机版 | 继续访问电脑版
查看: 1281|回复: 1

[已解决] SDK_2.7.0_MIMXRT1061xxxxA中ENET接收环形缓存递增判断缺陷

[复制链接]

该用户从未签到

11

主题

101

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2021-11-15
发表于 2020-4-17 14:41:09 | 显示全部楼层 |阅读模式
本帖最后由 LuoHG 于 2020-4-17 16:28 编辑

在ENET初始时,在函数ENET_SetRxBufferDescriptors中将最后一个缓存描述控制字置位ENET_BUFFDESCRIPTOR_RX_WRAP_MASK表示回首,

                /* Initializes the buffer descriptors with empty bit. */
                curBuffDescrip->control = ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK;
                /* Sets the last buffer descriptor with the wrap flag. */
                if (count == (buffCfg->rxBdNumber - 1U))
                {
                    curBuffDescrip->control |= ENET_BUFFDESCRIPTOR_RX_WRAP_MASK;
                }


但在如下相关函数ENET_GetRxFrameSize,ENET_GetRxErrBeforeReadFrame, ENET_UpdateReadBuffers关于环形缓存回首的判断都取不等于取首个,

static void ENET_UpdateReadBuffers(ENET_Type *base, enet_handle_t *handle, uint32_t ringId)
{
    assert(handle != NULL);
    assert(ringId < (uint32_t)FSL_FEATURE_ENET_QUEUE);

    /* Clears status. */
    handle->rxBdCurrent[ringId]->control &= ENET_BUFFDESCRIPTOR_RX_WRAP_MASK;
    /* Sets the receive buffer descriptor with the empty flag. */
    handle->rxBdCurrent[ringId]->control |= ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK;

    /* Increase current buffer descriptor to the next one. */
    if (0U != (handle->rxBdCurrent[ringId]->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK))
    {
        handle->rxBdCurrent[ringId] = handle->rxBdBase[ringId];
    }
    else
    {
        handle->rxBdCurrent[ringId]++;
    }


感觉这有大大的问题啊,这样会导致一直使用第一个接收缓存,后面的缓存一直未递增到?
回复

使用道具 举报

该用户从未签到

11

主题

101

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2021-11-15
 楼主| 发表于 2020-4-17 14:47:28 | 显示全部楼层
被这逻辑整蒙圈了,这逻辑没有问题,目前遇到ENET1接收然后在task中将网络帧从ENET2转发出去,结果发送函数ENET_SendFrame一直处于        /* Check if the transmit buffer is ready. */
        curBuffDescrip = handle->txBdCurrent[0];
        if (0U != (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK))
        {
            result = kStatus_ENET_TxFrameBusy;
        }
困惑良久
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-3-29 01:05 , Processed in 0.103566 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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