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.

[参考译文] AM2432:使用 ICSS-EMAC 时无法使用 ICSSG0执行 Ping 操作

Guru**** 2348500 points
Other Parts Discussed in Thread: TMDS243EVM, DP83826E, TPIC2810, TCA6424
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1266797/am2432-unable-to-ping-with-icssg0-when-using-icss-emac

器件型号:AM2432
主题中讨论的其他器件:TMDS243EVMDP83826EDP83869TPIC2810TCA6424

您好!
我正在使用评估板" TMDS243EVM - PROC101C (005)"以使用 ICSS-EMAC 使用示例" hsr_mII_demo_am243x-evm_r5fss0-0_freertos_ti-arm-clang "(此样本使用 ICSSG1 )。

我的目标是查看电路板是否能够回复 Ping。

-一切都好, ping 工作正常。

我们正在开发一款使用 DLP 技术的 ICSSG0 (而不是 ICSSG1)。

为了对其进行测试、我在.syscfg 文件中将 ICSSG1更改为 IGSSG0、但无法对其执行 ping 操作。

我们是否需要更改 PRU 固件以使其正常工作、还是我漏掉了其他内容?

此致

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

    尊敬的  

    感谢您的提问、

    我在此处需要更多信息:

    1.正在使用哪个 PHY、您是否已在应用程序中配置了它们

    2.您的应用程序是否构建得当?

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

    您好!
    我们使用的是 DP83826E。 我使用 环回远端(反向)环回功能进行了测试、看到了数据包。
    使用的 PHY 返回链路建立。

    我的应用程序构建正确。

    PHY 的配置通过 ETHPHY 器件 " 自定义 "; 定制器件名称"DP83826E" 进行配置。
    我已检查 PHY 的 IDS (以及电缆是否插入时的链路状态)。

    这是生成的.syscfg 文件

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM243x_ALV_beta" --package "ALV" --part "ALV" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM243x@08.06.00"
     * @versions {"tool":"1.16.1+2960"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const pruicss    = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
    const pruicss1   = pruicss.addInstance();
    const uart       = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1      = uart.addInstance();
    const udma       = scripting.addModule("/drivers/udma/udma", {}, false);
    const udma1      = udma.addInstance();
    const udma2      = udma.addInstance();
    const hsr_prp    = scripting.addModule("/industrial_comms/hsr_prp/hsr_prp", {}, false);
    const hsr_prp1   = hsr_prp.addInstance();
    const debug_log  = scripting.addModule("/kernel/dpl/debug_log");
    const mpu_armv7  = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71 = mpu_armv7.addInstance();
    const mpu_armv72 = mpu_armv7.addInstance();
    const mpu_armv73 = mpu_armv7.addInstance();
    const mpu_armv74 = mpu_armv7.addInstance();
    const mpu_armv75 = mpu_armv7.addInstance();
    const mpu_armv76 = mpu_armv7.addInstance();
    const mpu_armv77 = mpu_armv7.addInstance();
    const mpu_armv78 = mpu_armv7.addInstance();
    const timer      = scripting.addModule("/kernel/dpl/timer", {}, false);
    const timer1     = timer.addInstance();
    const timer2     = timer.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    uart1.$name        = "CONFIG_UART0";
    uart1.UART.$assign = "USART0";
    
    udma1.$name    = "CONFIG_UDMA0";
    udma1.instance = "PKTDMA_0";
    
    udma2.$name = "CONFIG_UDMA1";
    
    hsr_prp1.$name                                = "CONFIG_HSR_PRP0";
    hsr_prp1.instance                             = "ICSSG0";
    hsr_prp1.phyAddr0                             = 0;
    hsr_prp1.phyAddr1                             = 2;
    hsr_prp1.icss_emac[0].$name                   = "CONFIG_ICSS_EMAC0";
    hsr_prp1.icss_emac[0].mode                    = scripting.forceWrite("SWITCH");
    hsr_prp1.icss_emac[0].phyToMacInterfaceMode   = scripting.forceWrite("MII");
    hsr_prp1.icss_emac[0].linkTaskPriority        = 12;
    hsr_prp1.icss_emac[0].txTaskPriority          = 10;
    hsr_prp1.icss_emac[0].splitQueue              = true;
    hsr_prp1.icss_emac[0].learningEnable          = true;
    hsr_prp1.icss_emac[0].halfDuplexEnable        = true;
    hsr_prp1.icss_emac[0].queue                   = "QUEUE2";
    hsr_prp1.icss_emac[0].rxTaskPriority          = 30;
    hsr_prp1.ethphy1[0].$name                     = "CONFIG_ETHPHY0";
    hsr_prp1.ethphy1[0].mdioManualModeLinkPolling = scripting.forceWrite("Polling");
    hsr_prp1.ethphy1[0].name                      = "CUSTOM";
    hsr_prp1.ethphy1[0].customDeviceName          = "DP83826E";
    hsr_prp1.ethphy2[0].$name                     = "CONFIG_ETHPHY1";
    hsr_prp1.ethphy2[0].mdioManualModeLinkPolling = scripting.forceWrite("Polling");
    hsr_prp1.ethphy2[0].name                      = "CUSTOM";
    hsr_prp1.ethphy2[0].customDeviceName          = "DP83826E";
    hsr_prp1.PRU_ICSSG0_MDIO.$assign              = "PRU_ICSSG0_MDIO0";
    hsr_prp1.PRU_ICSSG0_IEP.EDC_LATCH_IN0.$used   = false;
    hsr_prp1.PRU_ICSSG0_IEP.EDC_SYNC_OUT0.$used   = false;
    
    pruicss1.$name                           = "CONFIG_PRU_ICSS0";
    hsr_prp1.icss                            = pruicss1;
    pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
    
    mpu_armv71.$name             = "CONFIG_MPU_REGION0";
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    
    mpu_armv72.$name             = "CONFIG_MPU_REGION1";
    mpu_armv72.size              = 15;
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv73.$name             = "CONFIG_MPU_REGION2";
    mpu_armv73.baseAddr          = 0x41010000;
    mpu_armv73.size              = 15;
    mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
    
    mpu_armv74.$name             = "CONFIG_MPU_REGION3";
    mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv74.baseAddr          = 0x70000000;
    mpu_armv74.size              = 21;
    
    mpu_armv75.$name             = "CONFIG_MPU_REGION4";
    mpu_armv75.baseAddr          = 0x60000000;
    mpu_armv75.size              = 28;
    mpu_armv75.accessPermissions = "Supervisor RD, User RD";
    
    mpu_armv76.$name    = "CONFIG_MPU_REGION5";
    mpu_armv76.baseAddr = 0x80000000;
    mpu_armv76.size     = 31;
    
    mpu_armv77.$name      = "CONFIG_MPU_REGION6";
    mpu_armv77.baseAddr   = 0x70000000;
    mpu_armv77.size       = 16;
    mpu_armv77.attributes = "Cached+Sharable";
    
    mpu_armv78.$name        = "CONFIG_MPU_REGION7";
    mpu_armv78.size         = 16;
    mpu_armv78.baseAddr     = 0x701D0000;
    mpu_armv78.allowExecute = false;
    mpu_armv78.attributes   = "NonCached";
    
    timer1.$name         = "CONFIG_TIMER0";
    timer1.timerCallback = "Timer0_Isr_Handle";
    timer1.TIMER.$assign = "DMTIMER0";
    
    timer2.$name         = "CONFIG_TIMER1";
    timer2.timerCallback = "Timer1_Isr_Handle";
    timer2.TIMER.$assign = "DMTIMER1";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    uart1.UART.RXD.$suggestSolution                           = "UART0_RXD";
    uart1.UART.TXD.$suggestSolution                           = "UART0_TXD";
    hsr_prp1.PRU_ICSSG0_MDIO.MDC.$suggestSolution             = "PRG0_MDIO0_MDC";
    hsr_prp1.PRU_ICSSG0_MDIO.MDIO.$suggestSolution            = "PRG0_MDIO0_MDIO";
    hsr_prp1.PRU_ICSSG0_IEP.$suggestSolution                  = "PRU_ICSSG0_IEP0";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.$suggestSolution             = "PRU_ICSSG0_MII_G_RT";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXD0.$suggestSolution   = "PRG0_PRU0_GPO0";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXD1.$suggestSolution   = "PRG0_PRU0_GPO1";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXD2.$suggestSolution   = "PRG0_PRU0_GPO2";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXD3.$suggestSolution   = "PRG0_PRU0_GPO3";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXDV.$suggestSolution   = "PRG0_PRU0_GPO4";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_RXER.$suggestSolution   = "PRG0_PRU0_GPO5";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_TXD0.$suggestSolution   = "PRG0_PRU0_GPO11";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_TXD1.$suggestSolution   = "PRG0_PRU0_GPO12";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_TXD2.$suggestSolution   = "PRG0_PRU0_GPO13";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_TXD3.$suggestSolution   = "PRG0_PRU0_GPO14";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII0_TXEN.$suggestSolution   = "PRG0_PRU0_GPO15";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXD0.$suggestSolution   = "PRG0_PRU1_GPO0";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXD1.$suggestSolution   = "PRG0_PRU1_GPO1";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXD2.$suggestSolution   = "PRG0_PRU1_GPO2";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXD3.$suggestSolution   = "PRG0_PRU1_GPO3";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXDV.$suggestSolution   = "PRG0_PRU1_GPO4";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_RXER.$suggestSolution   = "PRG0_PRU1_GPO5";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_TXD0.$suggestSolution   = "PRG0_PRU1_GPO11";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_TXD1.$suggestSolution   = "PRG0_PRU1_GPO12";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_TXD2.$suggestSolution   = "PRG0_PRU1_GPO13";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_TXD3.$suggestSolution   = "PRG0_PRU1_GPO14";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII1_TXEN.$suggestSolution   = "PRG0_PRU1_GPO15";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII_MR0_CLK.$suggestSolution = "PRG0_PRU0_GPO6";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII_MR1_CLK.$suggestSolution = "PRG0_PRU1_GPO6";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII_MT0_CLK.$suggestSolution = "PRG0_PRU0_GPO16";
    hsr_prp1.PRU_ICSSG0_MII_G_RT.MII_MT1_CLK.$suggestSolution = "PRG0_PRU1_GPO16";
    

    如果您需要其他 东西或某些不清楚的东西、请告诉我。

    此致、

    西里尔

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

    抱歉,我忘记问您以下问题:EIP PRU 固件在 ICSSG0和 ICSSG1之间兼容?

    使用以下代码加载该应用程序:

    static int32_t protocol_pru_fw(PRUICSS_Handle pruicssHandle)
    {
        int32_t firmwareLoad_done = SystemP_FAILURE;
    
        /*Load the firmware*/
        PRUICSS_disableCore(pruicssHandle, ICSS_EMAC_PORT_1 - 1);
        PRUICSS_disableCore(pruicssHandle, ICSS_EMAC_PORT_2 - 1);
    
        if(PRUICSS_writeMemory(pruicssHandle, PRUICSS_IRAM_PRU(0) , 0, (uint32_t *) PRU0_FIRMWARE_NAME, sizeof(PRU0_FIRMWARE_NAME)))
        {
            if(PRUICSS_writeMemory(pruicssHandle, PRUICSS_IRAM_PRU(1) , 0, (uint32_t *) PRU1_FIRMWARE_NAME, sizeof(PRU1_FIRMWARE_NAME)))
            {
                firmwareLoad_done = SystemP_SUCCESS;
                PRUICSS_enableCore(pruicssHandle, ICSS_EMAC_PORT_1 - 1);
                PRUICSS_enableCore(pruicssHandle, ICSS_EMAC_PORT_2 - 1);
            }
        }
    
        return (firmwareLoad_done);
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉,我忘了问您以下问题:EIP PRU 固件在 ICSSG0和 ICSSG1之间兼容?

    是的、EIP 固件兼容 ICSSG0和 ICSSG1。

    我看到您已启用 MDIO 手动模式。 那么、您可以检查仿真 MDIO 寄存器是否检测到 PHY 活动和链路寄存器。 您可以使用地址为0x3009FF00的存储器浏览器进行检查。

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

    您好!
    我检查了地址(ICSSG1)  0x3009FF00、它返回:
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    当我检查(ICSSG0) 0x3001FF00时、该函数返回:

    00000000 400000FF 00000005 00000001 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 20227849 000000C0 00000000 000000C2 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    MDIO 访问工作正常。 我可以读取 PHY ID 并设置/获取其他寄存器。

    转储的结果如下:

    PHY '0' @ 0x00
        0x00                 BMCR: 0x1000 AN_Enable
        0x01                 BMSR: 0x786D 100TXFD 100TXHD 10TXFD 10TXHD NoPreample AN_DONE ANAbl LinkSts ExtCapa
        0x02              PHYIDR1: 0x2000
        0x03              PHYIDR2: 0xA131
        0x04                 ANAR: 0x01E1 100FD 100HD 10FD 10HD IEEE802.3
        0x05               ALNPAR: 0xCDE1 NextPage Ack APAUSE PAUSE 100FD 100HD 10FD 10HD IEEE802.3
        0x06                 ANER: 0x000F LP_NP_ABLE DEV_NP_ABLE PAGE_RX LP_AUTONEG_ABLE
        0x07               ANNPTR: 0x2001 MSG_PAGE
        0x08              ANLNPTR: 0x0000
        0x09                  CR1: 0x0000
        0x0A                  CR2: 0x0100
        0x0B                  CR3: 0x040B DescLnkDwnMode DropRxEr DropSnr DropNrjLoss
        0x0D                REGCR: 0x0000
        0x0E                ADDAR: 0x0000
        0x0F                 FLDS: 0x0080 RxErr
        0x10               PHYSTS: 0x5E15 MDIX Polarity Carrier Signal_det Dscr_lock AutoNegCplt FD Link
        0x11               PHYSCR: 0x0108  IntPol
        0x12                MISR1: 0x7400
        0x13                MISR2: 0x2800
        0x14                FCSCR: 0x0000
        0x15                 RECR: 0x0000
        0x16                BISCR: 0x0100 NormPwr
        0x17                 RCSR: 0x0049
        0x18                LEDCR: 0x0480
        0x19                PHYCR: 0x8C00 AutoMdixEn MiiLinkSts
        0x1A              10BTSCR: 0x0010 PolarityInv
        0x1B               BICSR1: 0x007D
        0x1C               BICSR2: 0x05EE
        0x1E                 CDCR: 0x0102  CableDiagComp
        0x1F               PHYRCR: 0x0000
        0x25               MLEDCR: 0xCDE1
        0x27                COMPT: 0x2001
        0x2A              10M_CFG: 0x0100
    
    PHY '1' @ 0x02
        0x00                 BMCR: 0x1000 AN_Enable
        0x01                 BMSR: 0x7849 100TXFD 100TXHD 10TXFD 10TXHD NoPreample ANAbl ExtCapa
        0x02              PHYIDR1: 0x2000
        0x03              PHYIDR2: 0xA131
        0x04                 ANAR: 0x01E1 100FD 100HD 10FD 10HD IEEE802.3
        0x05               ALNPAR: 0x0000
        0x06                 ANER: 0x0006 DEV_NP_ABLE PAGE_RX
        0x07               ANNPTR: 0x2001 MSG_PAGE
        0x08              ANLNPTR: 0x0000
        0x09                  CR1: 0x0000
        0x0A                  CR2: 0x0100
        0x0B                  CR3: 0x040B DescLnkDwnMode DropRxEr DropSnr DropNrjLoss
        0x0D                REGCR: 0x0000
        0x0E                ADDAR: 0x0000
        0x0F                 FLDS: 0x0080 RxErr
        0x10               PHYSTS: 0x0812 Carrier AutoNegCplt 10M
        0x11               PHYSCR: 0x0108  IntPol
        0x12                MISR1: 0x6400
        0x13                MISR2: 0x2800
        0x14                FCSCR: 0x0000
        0x15                 RECR: 0x0000
        0x16                BISCR: 0x0100 NormPwr
        0x17                 RCSR: 0x0049
        0x18                LEDCR: 0x0480
        0x19                PHYCR: 0x8002 AutoMdixEn
        0x1A              10BTSCR: 0x0000
        0x1B               BICSR1: 0x007D
        0x1C               BICSR2: 0x05EE
        0x1E                 CDCR: 0x0102  CableDiagComp
        0x1F               PHYRCR: 0x0000
        0x25               MLEDCR: 0x0000
        0x27                COMPT: 0x2001
        0x2A              10M_CFG: 0x0100
    

    我配置错误的 DMA 访问是否可能(生成 RX 中断)?

    此致、

    西里尔

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

    我发现未接收单播和广播。

    但部分接收多播数据包(第一个 4字节 且目的地址的地址缺失)。

    其余字节有效:

    发送: 01 00 5E 7F FF FA C8 5A CF 0C 23 57 08 06 00 01 08 00 06 04 00 01 C8 5A CF 0C 23 57 C0 A8 01 CC 00 00 00 00 00 00 00 C0 A8 01 0A
    接收:            FF FA C8 5A CF 0C 23 57 08 06 00 01 08 00 06 04 00 01 C8 5A CF 0C 23 57 C0 A8 01 CC 00 00 00 00 00 00 00 C0 A8 01 0A

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

    都是因为您不知道 PHY 是否正常工作。

    我配置错误的 DMA 访问是否可能(生成 RX 中断)?

    此致、

    [/报价]

    否、HSR-PRP 驱动程序不使用 DMA。

    AM243x MCU+ SDK:ICSS-EMAC 调试指南(TI.com)

    您能否查看本指南并告诉我您的观察结果。

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

    下面是我看到的观察:

    mod switch:0.show icss stats
     Port 0 statistics:
     Port 1 statistics:
              host.txBcast 1
             host.txOctets 64
              host.rxMcast 6
             host.rxOctets 976
      host.rxUnknownProtocol 6
            host.linkBreak 2
               pru.txBcast 1
              pru.txOctets 64
               pru.rxMcast 6
               pru.rxUcast 2
              pru.rxOctets 976
              pru.tx64byte 1
              pru.rx64byte 4
         pru.rx128_255byte 4
      pru.stormPrevCounterMC 92
      pru.rxUnderSizedFrames 2
     Port 2 statistics:
      host.txDroppedPackets 1
    icss:
      - emac mac 00:A0:91:CA:AF:00
      - pru0:
        - version           0x00000000
        - version2          0x00000000
        - feature           0x00000000
        - futureFeature     0x00000000
        - phySpeed          100
        - portStatus        1
        - portControl       enabled (0x01)
        - portMac           00:A0:91:CA:AF:00
        - rxInterruptStatus 0x07D00100
        - emacTtsConfigBase 0x00000000
        - colStatus         0x00
        - promiscuousMode   0x00000000
        - interfaceMacAddr  00:00:00:00:00:00
      - pru1:
        - version           0x00000000
        - version2          0x00000000
        - feature           0x00000000
        - futureFeature     0x00000000
        - phySpeed          0
        - portStatus        0
        - portControl       disabled (0x00)
        - portMac           00:A0:91:CA:AF:00
        - rxInterruptStatus 0x00000100
        - emacTtsConfigBase 0x00070000
        - colStatus         0x00
        - promiscuousMode   0x00000000
        - interfaceMacAddr  00:A0:91:CA:AF:00

    我仅插入了一个端口(pru0)。

    I 在初始化阶段禁用风暴保护。

    奇怪的是、PRU 的版本和版本2是空的。 这是正常的吗?

    西里尔

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

    您好!
    冷重启后、我会看到以下内容:

    mod switch:0.show stats icss
     Port 0 statistics:
     Port 1 statistics:
              host.txBcast 6
             host.txOctets 384
              host.rxUcast 1
             host.rxOctets 26
      host.rxUnknownProtocol 1
            host.linkBreak 2
               pru.txBcast 6
              pru.txOctets 384
               pru.rxMcast 6
               pru.rxUcast 3
              pru.rxOctets 920
              pru.tx64byte 6
              pru.rx64byte 5
         pru.rx128_255byte 4
      pru.stormPrevCounterMC 118
      pru.rxUnderSizedFrames 3
     Port 2 statistics:
      host.txDroppedPackets 6
    icss:
      - emac mac 00:A0:91:CA:AF:00
      - pru0:
        - version           0x00000405
        - version2          0x85030000
        - feature           0x0400412A
        - futureFeature     0x00000000
        - phySpeed          100
        - portStatus        1
        - portControl       enabled (0x01)
        - portMac           00:A0:91:CA:AF:00
        - rxInterruptStatus 0x07D00100
        - emacTtsConfigBase 0x00000000
        - colStatus         0x00
        - promiscuousMode   0x00000000
        - interfaceMacAddr  00:00:00:00:00:00
      - pru1:
        - version           0x00000405
        - version2          0x85030000
        - feature           0x0400412A
        - futureFeature     0x00000000
        - phySpeed          0
        - portStatus        0
        - portControl       disabled (0x00)
        - portMac           00:A0:91:CA:AF:00
        - rxInterruptStatus 0x00000100
        - emacTtsConfigBase 0x00980000
        - colStatus         0x00
        - promiscuousMode   0x00000000
        - interfaceMacAddr  00:A0:91:CA:AF:00

    版本和功能设置正确。 但不会接收或传输数据包。

    此致、
    西里尔

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

    我更改了用于加载 EIP 固件的功能、以便能够获得 PRU 固件版本、如下所示:

    static int32_t protocol_pru_fw(PRUICSS_Handle pruicssHandle)
    {
        int32_t firmwareLoad_done = SystemP_FAILURE;
        int32_t status;
    
        status = PRUICSS_resetCore(pruicssHandle, PRUICSS_PRU0);
        DebugP_assert(SystemP_SUCCESS == status);
        status = PRUICSS_resetCore(pruicssHandle, PRUICSS_PRU1);
        DebugP_assert(SystemP_SUCCESS == status);
    
        /*Load the firmware*/
        status = PRUICSS_disableCore(pruicssHandle, PRUICSS_PRU0);
        DebugP_assert(SystemP_SUCCESS == status);
        status = PRUICSS_disableCore(pruicssHandle, PRUICSS_PRU1);
        DebugP_assert(SystemP_SUCCESS == status);
    
        if(PRUICSS_writeMemory(pruicssHandle, PRUICSS_IRAM_PRU(0) , 0, (uint32_t *) PRU0_FIRMWARE_NAME, sizeof(PRU0_FIRMWARE_NAME)))
        {
            if(PRUICSS_writeMemory(pruicssHandle, PRUICSS_IRAM_PRU(1) , 0, (uint32_t *) PRU1_FIRMWARE_NAME, sizeof(PRU1_FIRMWARE_NAME)))
            {
                firmwareLoad_done = SystemP_SUCCESS;
                status = PRUICSS_enableCore(pruicssHandle, PRUICSS_PRU0);
                DebugP_assert(SystemP_SUCCESS == status);
                status = PRUICSS_enableCore(pruicssHandle, PRUICSS_PRU1);
                DebugP_assert(SystemP_SUCCESS == status);
            }
        }
    
        return (firmwareLoad_done);
    }
    

    现在、我 总是有一个填充的版本/version2。

    icss:
      - emac mac 00:A0:91:CA:AF:00
      - P0; pru0 (@0x30000000):
        - version           @0x30000000 0x00000405
        - version2          @0x30000004 0x85030000
        - feature           @0x30000008 0x0400412A
        - futureFeature     @0x3000000C 0x00000000
        - statistics        @0x30001F00 size 152
        - phySpeed          @0x30001F9C 100
        - portStatus        @0x30001FA0 1
        - portControl       @0x30001FA6 enabled (0x01)
        - portMac           @0x30001FAA 00:A0:91:CA:AF:00
        - rxInterruptStatus @0x30001FB0 0x00000000
        - p0QueueDesc       @0x30001E7C
        - p0ColQueueDesc    @0x30001E64
        - stormPreventionBC @0x30001F98 0
        - stormPreventionMC @0x30001FB1 0
        - stormPreventionUC @0x30001FB5 0
        - emacTtsConfigBase @0x30001E98 0x00000000
        - colStatus         @0x30001E60 0x00
        - promiscuousMode   @0x30001C44 0x00000000
        - interfaceMacAddr  @0x30001E58 00:00:00:00:00:00
      - P1; pru1 (@0x30002000):
        - version           @0x30002000 0x00000405
        - version2          @0x30002004 0x85030000
        - feature           @0x30002008 0x0400412A
        - futureFeature     @0x3000200C 0x00000000
        - statistics        @0x30003F00 size 152
        - phySpeed          @0x30003F9C 0
        - portStatus        @0x30003FA0 0
        - portControl       @0x30003FA6 disabled (0x00)
        - portMac           @0x30003FAA 00:A0:91:CA:AF:00
        - rxInterruptStatus @0x30003FB0 0x00000000
        - p0QueueDesc       @0x30003E7C
        - p0ColQueueDesc    @0x30003E64
        - stormPreventionBC @0x30003F98 0
        - stormPreventionMC @0x30003FB1 0
        - stormPreventionUC @0x30003FB5 0
        - emacTtsConfigBase @0x30003E98 0x00070000
        - colStatus         @0x30003E60 0x00
        - promiscuousMode   @0x30003C44 0x00000000
        - interfaceMacAddr  @0x30003E58 00:A0:91:CA:AF:00

    很遗憾、数据包仍然无法 正确发送/接收...

    西里尔

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

    尊敬的 Cyril:

    对此有几个问题

    1) 1) 你看到 Rx 中断被击中了吗? -从之前的答复,它看起来这是发生的,你能确认这无论如何?

    2)加载应用程序后,是否可以在 ICSSG0和 ICSSG1之间共享 ICSS 内存转储(无需在任何端口上连接链路)

    3) pru.txBcast 6
      PRU.txOctets 384

      固件像是在线路上发送一些数据包。 您是否从接口进行捕获以验证数据包是否在线路上?

    此致、
    普拉吉特

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

    尊敬的 Jayarajan:

    1) 1)是、会生成 Rx 中断。 接收到的帧来自接收回调。

    3) 3)是的、固件在提供链路时尝试发送数据包(ARP 广播/单播数据包)。

    2)e2e.ti.com/.../DRAM0.date2e.ti.com/.../DRAM1.dat

    这是转储问题。

    希望它有所帮助。 如果您需要其他信息、请告诉我。

    此致、

    西里尔

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

    大家好、 

    您是否有 Cyril 上周分享的文件的更新?  

    谢谢

    克里斯托弗。

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

    您好!
    您是否有时间调查此问题?

    此致、
    西里尔

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

    更新主题:  

     

    用于测试的演示是 SDK 中的 HSR/PRP 演示。 在其电路板上运行此示例时、不会发送或接收任何内容。 这两者的日志如下所示。  

    PRP:

    This is the result of prp project (same behavior)
    Mode: MII
    Starting lwIP, local interface IP is 192.168.1.10
    [LWIPIF_LWIP]Link is Up on port 1
    [LWIPIF_LWIP] Interface layer handle is Initialised
    [LWIPIF_LWIP] NETIF INIT SUCCESS
    status_callback==UP, local interface IP is 192.168.1.10
    UDP server listening on port 5001
    
    PRP Sample application running
    Assigned IP     : 192.168.1.10
    Mac Id          : 11:11:12:12:12:12link_callback==UP
    
    
    
    IP Address      : 192.168.1.10
    Device config   : PRP
    
    HSR/PRP Application Menu Options. Press key (Upper/Lower)
    *******************************************
    S : Show Statistics
    L : Show LRE Statistics
    C : Show HSR/PRP Configuration
    N : Show Ring members/Node Table
    M : Multicast filter handling
    V : VLAN filter handling
    E : Print CPU Load
    I : Assign IP address
    P : Show PTP/1588 status
    R : Run Rx/Tx test
    X : To perform DUT side settings
    H : Help menu. Shows details on all the options
    ********************************************
    r
    
    Run Rx/Tx test....started
    To configure device as Transmitter enter T or t. To configure as receiver enter R or r :        t
    
    Device configured as transmitter, sending packets now
    To send normal HSRPRP packet : Enter N; To send GOOSE packet : Enter G; To send VLAN+GOOSE packet : Enter V     g
    
    Device transmitted GooseTestFrame packet for tx_count = 0
    Device transmitted GooseTestFrame packet for tx_count = 1
    Device transmitted GooseTestFrame packet for tx_count = 2
    Device transmitted GooseTestFrame packet for tx_count = 3
    Device transmitted GooseTestFrame packet for tx_count = 4
    Device transmitted GooseTestFrame packet for tx_count = 5
    Device transmitted GooseTestFrame packet for tx_count = 6
    Device transmitted GooseTestFrame packet for tx_count = 7
    Device transmitted GooseTestFrame packet for tx_count = 8
    Device transmitted GooseTestFrame packet for tx_count = 9
    Device transmitted GooseTestFrame packet for tx_count = 10
    Device transmitted GooseTestFrame packet for tx_count = 11
    Device transmitted GooseTestFrame packet for tx_count = 12
    Device transmitted GooseTestFrame packet for tx_count = 13
    Device transmitted GooseTestFrame packet for tx_count = 14
    Device transmitted GooseTestFrame packet for tx_count = 15
    Device transmitted GooseTestFrame packet for tx_count = 16
    Device transmitted GooseTestFrame packet for tx_count = 17
    Device transmitted GooseTestFrame packet for tx_count = 18
    Device transmitted GooseTestFrame packet for tx_count = 19
    Failed to transmit GooseTestFrame for tx_count = 20
    Failed to transmit GooseTestFrame for tx_count = 21
    …..
    Failed to transmit GooseTestFrame for tx_count = 238
    Failed to transmit GooseTestFrame for tx_count = 239
    Device transmitted GooseTestFrame packets...completed
    Device configured as transmitter...completed
    Run Rx/Tx test....completed
    
    
    IP Address      : 192.168.1.10
    Device config   : PRP
    

    HSR:

    This is the output for POC board:
    IP Address      : 192.168.1.10
    Device config   : HSR MODE H
    
    HSR/PRP Application Menu Options. Press key (Upper/Lower)
    *******************************************
    S : Show Statistics
    L : Show LRE Statistics
    C : Show HSR/PRP Configuration
    N : Show Ring members/Node Table
    M : Multicast filter handling
    V : VLAN filter handling
    E : Print CPU Load
    I : Assign IP address
    P : Show PTP/1588 status
    R : Run Rx/Tx test
    X : To perform DUT side settings
    H : Help menu. Shows details on all the options
    ********************************************
    link_callback==DOWN
    link_callback==UP
    R
    
    Run Rx/Tx test....started
    To configure device as Transmitter enter T or t. To configure as receiver enter R or r :        t
    
    Device configured as transmitter, sending packets now
    To send normal HSRPRP packet : Enter N; To send GOOSE packet : Enter G; To send VLAN+GOOSE packet : Enter V     G
    
    Device transmitted GooseTestFrame packet for tx_count = 0
    Device transmitted GooseTestFrame packet for tx_count = 1
    Device transmitted GooseTestFrame packet for tx_count = 2
    Device transmitted GooseTestFrame packet for tx_count = 3
    Device transmitted GooseTestFrame packet for tx_count = 4
    Device transmitted GooseTestFrame packet for tx_count = 5
    Device transmitted GooseTestFrame packet for tx_count = 6
    Device transmitted GooseTestFrame packet for tx_count = 7
    Device transmitted GooseTestFrame packet for tx_count = 8
    Device transmitted GooseTestFrame packet for tx_count = 9
    Device transmitted GooseTestFrame packet for tx_count = 10
    Device transmitted GooseTestFrame packet for tx_count = 11
    Device transmitted GooseTestFrame packet for tx_count = 12
    Device transmitted GooseTestFrame packet for tx_count = 13
    Failed to transmit GooseTestFrame for tx_count = 14
    Failed to transmit GooseTestFrame for tx_count = 15
    Failed to transmit GooseTestFrame for tx_count = 16
    Failed to transmit GooseTestFrame for tx_count = 17
    Failed to transmit GooseTestFrame for tx_count = 18
    Failed to transmit GooseTestFrame for tx_count = 19
    Failed to transmit GooseTestFrame for tx_count = 20
    Failed to transmit GooseTestFrame for tx_count = 21
    Failed to transmit GooseTestFrame for tx_count = 22
    Failed to transmit GooseTestFrame for tx_count = 23
    Failed to transmit GooseTestFrame for tx_count = 24
    Failed to transmit GooseTestFrame for tx_count = 25
    Failed to transmit GooseTestFrame for tx_count = 26
    Failed to transmit GooseTestFrame for tx_count = 27
    Failed to transmit GooseTestFrame for tx_count = 28
    Failed to transmit GooseTestFrame for tx_count = 29
    
    

    实现的支持定制电路板的更改包括:  

    • ICSS 实例(从1到0)
    • PHY 地址更改为[0;2]
    • 禁用 EDC_LATCH_IN0
    • 禁用 EDC_SYNC_OUT0
    • 将 CONFIG_ETHPHY0更改为定制(定制器件名称设置为 DP83826E)
    • 将 CONFIG_ETHPHY1更改为定制(定制器件名称设置为 DP83826E)
    • 启用"CONFIG_ICSS_EMAC0学习启用"

    从".syscfg"文件禁用不必要的组件:

    • I2C
    • GPIO
    • 010:EEPROM

    文件修改:

    • hsr_prp_soc.c:
      • hsrprp_rgmII_init ()
        • 用#ifdef HSR_PRP_RGMII/#endif 包围此函数
    • \source\board\makefile.am243x.r5f.ti-arm-clang:
      • 添加"ethphy_dp83826e.c"
      • 使用以下命令编译 SDK:
        • gmake libs profile=调试

    #hsr_prp_soc.c 
    #ifdef HSR_PRP_RGMII
    void hsrprp_rgmii_init()
    {
        ETHPHY_DP83869_LedSourceConfig ledConfig;
    
        …
    
    
        hsrprp_configure_rat();
    }
    #endif /* HSR_PRP_RGMII */ 
    

    对 makefile.am243x.r5f.ti-arm-clang 的更改:

    files_common:=\

       EEPROM.c

       eeprom_at24c.c

       ethphy.c

       ethphy_dp83869.c

       ethphy_dp83826e.c

       闪存.c \

       flash_nor_ospi.c \

       LED.c

       LED_GPIO.c \

       LED_tpic2810.c

       led_ioexp.c

       ioexp_tca6424.c

       NOR_SPI_SFDP.c

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

    e2e.ti.com/.../dump_5F00_30000000_5F00_80000.dat

    您好!
    这是 Daviel 提出的转储请求。

    希望它有所帮助、

    西里尔

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

    您好!

    我修改了今天的示例代码、添加了多播过滤配置。

    icssEmacParams.pruicssIntcInitData =&pruss_intc_initdata;
    icssEmacParams.fwStaticMMap =&(ICSS_emacFwStaticCfgLocal[1]);
    icssEmacParams.fwDynamicMMap =&ICSS_emacFwDynamicCfgLocal;
    icssEmacParams.fwVlanFilterParams =&ICSS_emacFwVlanFilterCfg;
    icssEmacParams.fwMulticastFilterParams =&ICSS_emacFwMulticastFilterCfg;
    icssEmacParams.pruicssHandle = prusshandle;

    在这条新的线路上、我可以看到 Rx 中断(我的意思是、我们对 POC 具有相同的行为)
    西里尔

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

    使用ICSSG0/CFS-FILE/__key/communityserver-discussions-component-files/908/hsr_5F00_eip_5F00_ICSSG0_5F00_dp83826E.zip 的工作示例

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

    /cfs-file/__key/communityserver-discussions-components-files/908/lib.7z

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

    尊敬的 Nilabh:

    感谢您为解决此问题提供的帮助。
    您可以关闭 TT。

    谢谢
    克里斯托弗。

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

    很高兴听到克里斯托弗