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.

[参考译文] PROCESSOR-SDK-AM437X:最新 SDK 的 Profinet 问题

Guru**** 2595805 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/645594/processor-sdk-am437x-profinet-issue-with-latest-sdk

器件型号:PROCESSOR-SDK-AM437X

我们目前正在开发支持 PROFINET 的器件、并已购买 Molex PROFINET 协议栈和 Interniche SNMP 协议栈。
作为 HW、我们使用 AM437x IDK 并启动并运行堆栈。
我们的实现基于 PRU-ICSS-PROFINET_Slave_01.00.01.00示例、但已替换为完整的堆栈。  

由于我们没有使用最新的 SDK、因此我尝试升级到最新版本、但这会导致 I PROFINET 停止工作。

它可与 PDK 1.0.6配合使用、但无法与 PDK 1.0.8配合使用。 通过调试、我发现 NDK 和 ICSS EMAC 驱动程序有问题。 我认为这不是我引起的问题。  

在文件 NIMU_icssEthDriver.c 第591行中:

ioctlParams.command = ICSS_EMAC_STORE_PREV_CTRL_RESET;
/*重置用于风暴预防的信用值*/
if (ICSS_EMAC_MODE_SWITCH==((ICSS_EmacObject*)(PI->nimuDrvHandle)->object)->emacInitcfg->portMask)
{
strmPreventionEnable1 =(stormPrevention _t*)(((ICSS_EmacObject*)(PI->nimuDrvHandle)->object )->stormPrevPtR);
strmPreventionEnable2 =((stormPrevention _t*)((ICSS_EmacObject*)(PI->nimuDrvHandle)->object)->stormPrevPtr)+ 1;
if ((strmPreventionEnable1->suppressionEnabled)|(strmPreventionEnable2->suppressionEnabled))
{
ICSS_EmacIoctl (PI->nimuDrvHandle、ICSS_EMAC_IOCTL_STORE_PREV_CTRL、0、(void*)&ioctlParams);//<<--> PORTNO 为0?!?
}
}
其他

调用 ICSS_EmacIoctl()时,参数 portNo 设置为0。

2. ICSS_EmacIoctl()调用 ICSS_EmacValidateFeatureSet(),且 portNo 设置为0

但是,如果 portNo 为0,ICSS_EmacValidateFeatureSet()返回-1 (错误),因此风暴预处理控制(?)  无法复位?

我不确定错误在哪里(portNo 是否允许为0或??)。 但是,如果我跳过对 ICSS_EmacValidateFeatureSet()的调用,一切都可以正常工作。

案例 ICSS_EMAC_IOCTL_STORE_PREV_CTRL:
// RetVal = ICSS_EmacValidateFeatureSet (icssEmacHandle、portNo、ICSS_EMAC_FW_STORE_PREVENTIION_FEATE_CTRL);
RetVal = 0;
如果(RetVal = 0)
{
switch (ioctlCmd->command){
ICSS_EMAC_STORE_PREV_CTRL_ENABLE 案例:
ICSS_EmacEnableStormPrevention (portNo、icssEmacHandle);
setCreditCard 值(((*((uint16_t *) ioctlData))、(stormPrevention _t*)((((ICSS_EmacObject*) icssEmacHandle->object)->stormPrevPtr));
中断;
ICSS_EMAC_STORE_PREV_CTRL_DISABLE 情况:
ICSS_EmacDisableStormPrevention (portNo、icssEmacHandle);
中断;
案例 ICSS_EMAC_STORE_PREV_CTRL_SET_贷 项:
setCreditCard 值(((*((uint16_t *) ioctlData))、(stormPrevention _t*)((((ICSS_EmacObject*) icssEmacHandle->object)->stormPrevPtr));
中断;
ICSS_EMAC_STORE_PREV_CTRL_INIT 案例:
ICSS_EmacInitStormPreventionTable (portNo、icssEmacHandle);
中断;
ICSS_EMAC_STORE_PREV_CTRL_RESET 案例:
ICSS_EmacResetStormPreventionCounter (icssEmacHandle);
中断;
默认值:
RetVal =(INT8_t)-1;
中断;
}
}

有人可以在这里帮助我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mads、

    当 portNo 设置为0以进行风暴预防控制时,似乎出现错误。 您可以像完成的那样解决该问题。 我将与团队讨论、然后向您介绍最新情况。

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

    我在内部提交了一个错误。 此问题将在未来版本中解决。

    谢谢、
    Garrett