This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6421:MCU+ SDK 08.06.00 -在不禁用 PRU-ICSSG 发送器/Icssg_ioctlSetPortState 的情况下禁用 PRU-ICSSG 接收器

Guru**** 2390755 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1472162/am6421-mcu-sdk-08-06-00---disable-pru-icssg-receiver-without-disabling-the-pru-icssg-transmitter-icssg_ioctlsetportstate

器件型号:AM6421

工具/软件:

在过载情况下(或对于定向攻击)、我们希望能够通过命令关闭 PRU-ICSSG 的接收分支、而无需关闭我们自己的发送器。 (启用发件人/禁用接收器)。 使用 Icssg_ioctlSetPortState (ICSSG_PORT_STATE_DISABLED)时、似乎只能关闭发送器和接收器。
是否有另一种方法可以在没有发射器的情况下关闭接收器并再次打开它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    团队正在研究这一点、并提供了一些选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gerd:

    没错、如上所述、无法仅禁用接收、但使用可用的 IOCTL 保持启用传输。

    但是、我们可以选择只使用分类器禁用接收。 通过这种方法、固件将丢弃所有数据包。

    要修改的存储器映射寄存器:
    6.4.14.12.47 MII_G_RT_RX_CLASS_GATESm_PRU0寄存器
    6.4.14.12.129 MII_G_RT_RX_CLASS_GATESm_PRU1寄存器

    在这里、我们取消屏蔽字段 RX_CLASS_RAW_MASKm (m=8、9)以禁用接收。  

    默认情况下、固件会屏蔽 Classifier 8和9的这些字段、因此分类器8、9输出 默认为1。 当 我们取消屏蔽此字段时、分类器8和9输出为0。 如果分类器8和9输出均为0、则固件将丢弃数据包。

    应用程序代码示例:

    uintptr_t icssg_mii_g_rt_base = 0x300B3000;
    uint32_t classifierNums[2] ={8,9};  /*Classifiers 8 and 9*/
    char option = ' ';
    EnetAppUtils_print("\nEnable or Disable Reception of packets using classifiers: e or d\r\n");
    
    DebugP_scanf("%c", &option);
    
    if (option == 'e')
    {
        for (uint32_t i = 0; i < 2; i++)
        {
            CSL_REG32_WR(icssg_mii_g_rt_base + classifierNums[i]*4 + CSL_ICSS_G_PR1_MII_RT_PR1_MII_RT_G_CFG_REGS_G_RX_CLASS_GATES0_PRU0, 0x70);
            CSL_REG32_WR(icssg_mii_g_rt_base + classifierNums[i]*4 + CSL_ICSS_G_PR1_MII_RT_PR1_MII_RT_G_CFG_REGS_G_RX_CLASS_GATES0_PRU1, 0x70);
        }
        
    }
    else if (option == 'd')
    {   
        for (uint32_t i = 0; i < 2; i++)
        {
            CSL_REG32_WR(icssg_mii_g_rt_base + classifierNums[i]*4 + CSL_ICSS_G_PR1_MII_RT_PR1_MII_RT_G_CFG_REGS_G_RX_CLASS_GATES0_PRU0, 0x50);
            CSL_REG32_WR(icssg_mii_g_rt_base + classifierNums[i]*4 + CSL_ICSS_G_PR1_MII_RT_PR1_MII_RT_G_CFG_REGS_G_RX_CLASS_GATES0_PRU1, 0x50);
        }        
    }



    有关分类器的更多详细信息、请参阅:
    TRM 中的第 6.4.11.2.3.7.6 MII_G_RT RX 分类器。  
    图6-250. MII_G_RT RX 分类器
    图6-251. 流量类别选择器


    谢谢。此致、
    Miriam