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.

[参考译文] AM625:SK-AM62-LP 在 DM R5 内核中运行 ETH

Guru**** 2558250 points
Other Parts Discussed in Thread: SK-AM62-LP, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1495485/am625-sk-am62-lp-run-eth-in-dm-r5-core

器件型号:AM625
主题中讨论的其他器件:SK-AM62-LPSysConfig

工具/软件:

使用开发套件 SK-AM62-LP、我希望使用 4 个 A53 内核进行信号处理、并使用 R5 内核进行 ETH(UDP、DHCP 等)通信。 我知道 R5 必须运行 sci 服务器来启动 DM 任务 并保持系统正常运行:

  • 这是否可行?


另一方面、我已经看到、SDK 中没有任何通过 R5 使用 ETH 的示例、但有一些使用 A53 内核的示例:

  • 您是否认为移植其中一个示例可能是一项相对较短的任务、而不会出现许多问题?
    之所以问这个问题、是因为我在参考手册中看到、在使用 R5 时需要使用 RAT 来完成存储器映射。

  • 为了实现这一任务、是否还会遇到其他陷阱?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好: 

    感谢您的查询。

    SDK 中没有任何通过 R5 使用 ETH 的示例、

    目前、我们不支持 DM-R5F 上的以太网驱动程序。

    您认为移植其中一个示例可能是一个相对较短的任务、而不会出现许多问题吗?

    这完全取决于您的用例复杂性。

    您希望流量来自 CPSW 的内核是什么?

    您控制/配置 CPSW 的内核是什么?

    您拥有哪种类型的流量?

    我想使用 4 个 A53 内核进行信号处理

    假设这是基于 Linux 的开发?

    此致

    Ashwani

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

    尊敬的 Ashwani:

    是否有任何计划在 R5 中支持以太网?

    FreeRTOS 将在 A53 上运行、并将生成数据。 该数据将由 R5 获取并使用 UDP 传输、但 R5 还需要支持 DHCP 等其他协议

    主要思路是使用来自 R5 的 CPSW config/trafiic/control。 还有其他选项吗?

    我们不打算运行 Linux

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

    尊敬的 Ashwani:

    “目前、我们不支持 DM-R5F 上的以太网驱动程序。“

    SK-am625 电路板也是如此吗? 意思:tiboot3 无法使用以太网下载 tispl.bin?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    sk-am625 板是否也是如此? 意味着:tiboot3 无法使用以太网下载 tispl.bin?

    您是否正在寻找以太网引导?

    此致

    Ashwani

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

    是的。 实际上、我尝试了通过以太网引导、并可以通过 bootROM 下载 tiboot3.bin。 但是、SPL 在尝试引导时挂起。 我在 Wireshark 中看不到任何 BOOTP 请求。 eth 驱动程序出现问题:

    U-Boot SPL 2024.04-ti-g29d0c23d67ee (2024 年 11 月 29 日 — 11:41:54 +0000)
    SYSFW ABI:4.0(固件版本 0x000a '10.1.8--v10.01.08 (Fiery Fox)')
    SPL 初始栈使用量:13392 字节
    尝试从 eth 器件引导

    (使用此配置构建的 tiboot3.bin:am62x_evm_r5_ethboot_defconfig)  

    (使用以下配置构建 tispl.bin 和 u-boot.img:am62x_evm_a53_ethboot_defconfig)  

    我在 SPL 代码中添加了一些调试打印、看起来无法找到以太网端口。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“638871" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1495485/am625-sk-am62-lp-run-eth-in-dm-r5-core/5749868 #5749868“]U-Boot SPL 2024.04-ti-g29d0c23d67ee (2024 年 11 月 29 日 — 11:41:54 +0000)[/报价]

    这看起来是 Linux 用例。  我对你下面的陈述感到困惑。

    我们不打算运行 Linux

    尝试从 eth 设备引导

    讨论将对您有所帮助。

    (99+) AM625:以太网备用引导模式 — 处理器论坛-处理器 — TI E2E 支持论坛

    (99+) AM6442:基于以太网的固件升级 — 处理器论坛-处理器 — TI E2E 支持论坛

    (99+) AM6411:Linux 以太网引导失败 — 处理器论坛-处理器 — TI E2E 支持论坛

    将线程分配给 Linux 专家。

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这看起来像是 Linux 用例。  我对您的以下陈述感到困惑。

    尊敬的 Ashwani:

    我不打算使用 Linux、而是使用 TI 引导加载程序。 Marcin Wierzbicki 正在谈论他的项目。

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

    我想我们在这里混杂了多个问题。

    这导致了混乱。

    您能否提出单独的问题进行讨论?

    此致

    Ashwani

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

    谢谢。 创建单独的查询:

    e2e.ti.com/.../am625sip-trying-to-boot-from-eth-device

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

    感谢 

    尊敬的 

    如果您在此处需要进一步帮助、请告诉我。

    此致

    Ashwani

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

    尊敬的 Ashwani:

    我们接下来将示例  sdk_10.01.00.33/mcu_plus_sdk/source/networking/enet/core/examples/enet_cpsw_est/am62x-sk 移植到 cortex R5。
    该示例正在编译、但发生了异常:

    void __attribute__((interrupt("ABORT"), section(".text.hwi"))) HwiP_prefetch_abort_handler(void)
    {
        volatile uint32_t loop = 1;
        while(loop)
        {
          /* Do Nothing */
    }
        }
    

    调试它我发现它在尝试 Enet_App_ openDma 时发生了。
    注释掉了以下代码、则不会触发异常、但当然应用程序的行为并不像预期的那样。

    //    /* Open DMA for peripheral/port */
    //    if (status == ENET_SOK)
    //    {
    //        EnetAppUtils_print("Open DMA\r\n");
    //
    //        status = EnetApp_openDma(perCtxt);
    //        if (status != ENET_SOK)
    //        {
    //            EnetAppUtils_print("failed to open DMA: %d\r\n", status);
    //        }
    //    }
    

    深入了解它后,我发现它 在 EnetQueue_enq 中的 IRQ 被禁用/启用时崩溃,但它也在 EnetDma_registerRxEventCb 中崩溃,如以下屏幕截图所示。 我想说,坠机并不总是在同一个地方发生。  

    任何帮助都将非常感谢 Slight smile

    在下面找到导出的示例、然后您就可以重现问题了。

    e2e.ti.com/.../r5_5F00_enet_5F00_cpsw_5F00_est_5F00_based-on-ipc_5F00_rpmsg_5F00_echo_5F00_linux.zip

    此外、还使用 makefile 来 为 R5 构建库 cpsw、以便能够重现此问题。

    #
    # Auto generated makefile
    #
    
    export MCU_PLUS_SDK_PATH?=$(abspath ../../..)
    include $(MCU_PLUS_SDK_PATH)/imports.mak
    
    CG_TOOL_ROOT=$(CGT_TI_ARM_CLANG_PATH)
    
    CC=$(CGT_TI_ARM_CLANG_PATH)/bin/tiarmclang
    AR=$(CGT_TI_ARM_CLANG_PATH)/bin/tiarmar
    
    PROFILE?=release
    ConfigName:=$(PROFILE)
    
    LIBNAME:=enet-cpsw.am62x.r5f.ti-arm-clang.$(PROFILE).lib
    
    FILES_common := \
        enet.c \
        enet_trace.c \
        enet_utils.c \
        enet_osal.c \
        enet_queue.c \
        enet_rm.c \
        enet_rm_ioctl.c \
        enet_rm_ioctl_register.c \
        enet_osal_dflt.c \
        enet_utils_dflt.c \
        enet_phymdio_dflt.c \
        enet_phymdio_dflt_ioctl.c \
        enet_phymdio_dflt_ioctl_register.c \
        mod_null.c \
        mdio.c \
        mdio_manual_ioctl.c \
        mdio_ioctl.c \
        mdio_ioctl_register.c \
        cpsw_macport.c \
        cpsw_macport_ioctl.c \
        cpsw_macport_ioctl_register.c \
        cpsw_macport_intervlan.c \
        cpsw_macport_intervlan_ioctl.c \
        cpsw_macport_intervlan_ioctl_register.c \
        cpsw_macport_est.c \
        cpsw_macport_est_ioctl.c \
        cpsw_hostport.c \
        cpsw_hostport_ioctl.c \
        cpsw_hostport_ioctl_register.c \
        cpsw_ale.c \
        cpsw_ale_ioctl.c \
        cpsw_ale_ioctl_register.c \
        cpsw_stats.c \
        cpsw_stats_ioctl.c \
        cpsw_stats_ioctl_register.c \
        cpsw_cpts.c \
        cpsw_cpts_ioctl.c \
        cpsw_cpts_ioctl_register.c \
        per_null.c \
        cpsw_intervlan.c \
        cpsw.c \
        cpsw_ioctl.c \
        cpsw_ioctl_register.c \
        cpsw_est.c \
        cpsw_est_ioctl.c \
        cpsw_est_ioctl_register.c \
        enet_hostport.c \
        enet_udma.c \
        enet_udma_priv.c \
        csl_cpgmac_sl.c \
        csl_cpsw.c \
        csl_cpsw_ss.c \
        csl_cpsw_ale_9g_tblcfg.c \
        csl_cpts.c \
        csl_mdio.c \
        k3_soc.c \
        enetphy.c \
        generic_phy.c \
        enet_apputils.c \
        enet_appmemutils.c \
        enet_appethpatterns.c \
        enet_udmautils.c \
        enet_ioctlutils.c \
        enet_apputils_k3.c \
    
    FILES_PATH_common = \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/core \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/mod \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/per \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/per/V1 \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/common \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/dma/udma \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/emac/V5/priv \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpsw/V5/V5_0/priv \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpsw/V5/priv \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpts \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/mdio \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/soc/k3 \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/soc/k3/am62x \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/phy \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/utils \
        ${MCU_PLUS_SDK_PATH}/source/networking/enet/core/utils/V3 \
    
    INCLUDES_common := \
        -I${CG_TOOL_ROOT}/include/c \
        -I${MCU_PLUS_SDK_PATH}/source \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/utils/include \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/utils/V3 \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/include \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/include/core \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/include/phy \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/core/src/phy \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/emac/V5 \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpsw/V5 \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpsw/V5/V5_0 \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/cpts \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/hw_include/mdio \
        -I${MCU_PLUS_SDK_PATH}/source/networking/enet/soc/k3/am62x \
        -I${MCU_PLUS_SDK_PATH}/source/board/ethphy/enet/rtos_drivers/include \
    
    DEFINES_common := \
        -DSOC_AM62X \
        -DMAKEFILE_BUILD \
        -DENET_CFG_ASSERT=1 \
        -DENET_CFG_PRINT_ENABLE \
        -DENET_CFG_TRACE_LEVEL=3 \
        -DENET_ENABLE_PER_CPSW=1 \
        -DENABLE_ENET_LOG \
        -DSW_VERSION=$(SW_VERSION)
    
    DEFINES_debug := \
        -DENET_CFG_DEV_ERROR=1 \
        -DLWIPIF_INSTRUMENTATION_ENABLED=1 \
        -DENETDMA_INSTRUMENTATION_ENABLED=1 \
        -DSW_VERSION=$(SW_VERSION)
    
    CFLAGS_common := \
        -mcpu=cortex-r5 \
        -mfloat-abi=hard \
        -mfpu=vfpv3-d16 \
        -mthumb \
        -Wall \
        -Werror \
        -g \
        -Wno-gnu-variable-sized-type-not-at-end \
        -Wno-unused-function \
        -Wno-unused-but-set-variable \
        #-Wno-extra \
        #-Wno-error=unused-but-set-variable \
        
    
    CFLAGS_cpp_common := \
        -Wno-c99-designator \
        -Wno-extern-c-compat \
        -Wno-c++11-narrowing \
        -Wno-reorder-init-list \
        -Wno-deprecated-register \
        -Wno-writable-strings \
        -Wno-enum-compare \
        -Wno-reserved-user-defined-literal \
        -Wno-unused-const-variable \
        -x c++ \
        
    CFLAGS_release := \
        -Os \
        #-flto \
    
    CFLAGS_debug := \
        -D_DEBUG_=1 \
    
    ARFLAGS_common := \
        rc \
    
    FILES := $(FILES_common) $(FILES_$(PROFILE))
    ASMFILES := $(ASMFILES_common) $(ASMFILES_$(PROFILE))
    FILES_PATH := $(FILES_PATH_common) $(FILES_PATH_$(PROFILE))
    CFLAGS := $(CFLAGS_common) $(CFLAGS_$(PROFILE))
    ASMFLAGS := $(CFLAGS_common) $(CFLAGS_$(PROFILE))
    ifeq ($(CPLUSPLUS_BUILD), yes)
    CFLAGS += $(CFLAGS_cpp_common)
    endif
    DEFINES := $(DEFINES_common) $(DEFINES_$(PROFILE))
    INCLUDES := $(INCLUDES_common) $(INCLUDE_$(PROFILE))
    ARFLAGS := $(ARFLAGS_common) $(ARFLAGS_$(PROFILE))
    
    LIBDIR := lib
    OBJDIR := obj/am62x/ti-arm-clang/$(PROFILE)/r5f/enet-cpsw/
    OBJS := $(FILES:%.c=%.obj)
    OBJS += $(ASMFILES:%.S=%.obj)
    DEPS := $(FILES:%.c=%.d)
    
    vpath %.obj $(OBJDIR)
    vpath %.c $(FILES_PATH)
    vpath %.S $(FILES_PATH)
    
    $(OBJDIR)/%.obj %.obj: %.c
    	@echo  Compiling: $(LIBNAME): $<
    	$(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) -MMD -o $(OBJDIR)/$@ $<
    
    $(OBJDIR)/%.obj %.obj: %.S
    	@echo  Compiling: $(LIBNAME): $<
    	$(CC) -c $(ASMFLAGS) -o $(OBJDIR)/$@ $<
    
    all: $(LIBDIR)/$(LIBNAME)
    
    $(LIBDIR)/$(LIBNAME): $(OBJS) | $(LIBDIR)
    	@echo  .
    	@echo  Archiving: $(LIBNAME) to $@ ...
    	$(AR) $(ARFLAGS) $@ $(addprefix $(OBJDIR), $(OBJS))
    	@echo  Archiving: $(LIBNAME) Done !!!
    	@echo  .
    
    clean:
    	@echo  Cleaning: $(LIBNAME) ...
    	$(RMDIR) $(OBJDIR)
    	$(RM) $(LIBDIR)/$(LIBNAME)
    
    scrub:
    	@echo  Scrubing: $(LIBNAME) ...
    	-$(RMDIR) obj/
    	-$(RMDIR) lib/
    
    $(OBJS): | $(OBJDIR)
    
    $(LIBDIR) $(OBJDIR):
    	$(MKDIR) $@
    
    -include $(addprefix $(OBJDIR)/, $(DEPS))
    

    谢谢你

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

    似乎是资源分配问题。

    您能否检查 DMA 通道是否已正确分配给内核?

    AM62x MCU+ SDK:修改资源分配

    您还可以参阅  AM64x 和 AM243x 上五个以太网端口启用的第 1.5.2.1 资源分配 — AM64x 一节

    此致

    Ashwani

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

    尊敬的 Ashwani:

    请在下面找到我当前的配置:


    如果我正确理解、两个 DMA 通道 (CPSW Tx 和 CPSW Rx) 由 A53_2 和 MAIN_0_R5_1 共享。 这是否是由于我未在 A53 内核中不运行任何内容而导致的问题?  

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

    尊敬的  Ashwani:

    我猜处理器视图是通用的、因为对于 SK-AM62-LP 处理器没有 4 个 cortex R5。 那么、我必须配置的内核实际上是 DM?

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

    您好 

    您能否确认您正在 AM62x 上使用类似的示例?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM62PX/latest/exports/docs/api_guide_am62px/EXAMPLES_ENET_LWIP_CPSW.html

    您可以继续为您的用例移植此方案。

    此致

    Ashwani

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

    尊敬的 Ashwani:

    找到为 R5 移植的 enet_lwip_cpsw 示例、它基于 SDK 11。

    e2e.ti.com/.../enet_5F00_lwip_5F00_cpsw_5F00_wkup_5F00_r5.zip

    我仍在尝试调试一些问题、但它们并不一致。 当 I2C 与 IO 扩展器 (EnetBoard_setMacPortIOExpanderCfg ()) 通信时、有时会挂起。 如果我逐步进行调试、有时设法完成调试、然后按如下所示执行 Enet 故障、那么重现问题会很好。


    MAIN_Cortex_R5_0_0] ==========================
          ENET LWIP App       
    ==========================
    Enabling clocks!
    EnetAppUtils_reduceCoreMacAllocation: Reduced Mac Address Allocation for CoreId:1 From 4 To 1 
    Open MAC port 1
    EnetBoard_getMiiConfig 1
    EnetApp_getMacPortLinkCfg 1
    EnetPhy_bindDriver:1873 
    PHY 0 is alive
    PHY 1 is alive
    EnetMod_ioctl:1608 
    EnetPer_ioctl:1394 
    Enet_ioctl:1057 
    Failed to set dscp Priority map for Port 1 - -1 
    EnetMod_ioctl:1603 
    EnetPer_ioctl:1394 
    Enet_ioctl:1057 
    EnetAppUtils_allocMac() failed : -8
    Assertion @ Line: 959 in ../ti_enet_open_close.c: status == ENET_SOK : failed !!!
    

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

    您好、

    请分享一下

    • 在调试模式下构建导入的示例并共享日志?
    • 移植的示例的 SysConfig 文件?
    • 为移植的示例生成的文件?

    此致

    Ashwani

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

    您好: 

    从日志中可以看到、以太网初始化已经完成、并且应用在 LwIP 上下文中失败。

    从您附加的 zip 文件中、

    [引述 userid=“601319" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1495485/am625-sk-am62-lp-run-eth-in-dm-r5-core/5817810 #5817810“]6661.enet_lwip_cpsw_wkup_r5.zip

    我们观察到、宏“ENET_SYSCFG_DEFAULT_NETIF_IDX"设置“设置为 NETIF_INST_ID1 、但您只有一个 netif。 因此、您应该使用  NETIF_INST_ID0。 这是未设置默认 netif 的原因、AutoIP 函数导致错误。

    此致、
    Teja。

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

    你好 Teja!

    在更改为  NETIF_INST_ID0 后找到日志(在进行调试和测试时,我很可能错过配置)

    [MAIN_Cortex_R5_0_0] ==========================
          ENET LWIP App       
    ==========================
    Enabling clocks!
    Open MAC port 1
    EnetBoard_getMiiConfig 1
    EnetApp_getMacPortLinkCfg 1
    EnetPhy_bindDriver:1873 
    PHY 0 is alive
    PHY 1 is alive
    Starting lwIP, local interface IP is dhcp-enabled
    [LWIPIF_LWIP] NETIF INIT SUCCESS
    Host MAC address-0 : 3c:e0:64:63:89:b3
    
    Host MAC address-0 : 00:00:00:00:00:00
    
    [LWIPIF_LWIP] Enet has been started successfully
    [0]status_callback==UP, local interface IP is 0.0.0.0
    UDP server listening on port 5001
         14.285s : CPU load =  66.64 %

    如您所见、它没有得到 DHCP 分配的 IP、而是保留在 porttask_function()- prvIdleTask( void *pvParameters ) 中;并且控制台中不打印任何其他内容

    设置静态 IP 时也会获得相同的结果。  

    任务状态:

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

    您好:Ivan Pfaher、

    请查看 LwIP 和 CPSW 的统计信息。 可通过在 CCS 的“Expressions"选项“选项卡中添加以下条目来找到这些表达式

    1. CPSW 统计信息:表达式中的“(struct CSL_xge_cpswRegs*) 0x08020000“
      请查找名为 P0_STATS 和 PN_STATS 的部分、并可在其中找到统计数据
    2. LwIP 统计信息:“lwip_stats"</s>“

    如果您发现没有 Rx 和 Tx、则请检查 PHY 状态。

    如果 Rx 和 Tx 统计信息不断增加、但内核未接收到数据包、则必须检查数据流以及任务是否已正确初始化。

    请分享这些详细信息以进行分析。

    此致、
    Teja。

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

    尊敬的 Teja:

    请查看以下统计信息:

    e2e.ti.com/.../CSL_5F00_Xge_5F00_cpswRegs_5F00_and_5F00_lwip_5F00_stats.txt

    对于 P0_STATS、我可以看到 TX 数据包增加、但不包括 RX:

    对于 PN_STATS、我可以看到 RX 数据包增加但不增加 TX:

    而对于 lwip_stats、几乎 everification 为 0:

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

     尊敬的 Ivan:

    看起来硬件正在接收数据包、但应用程序未接收数据包。 这似乎是数据流配置问题。 我将为您提供一些调试点、您可以在其中检查数据包接收、并据此确定数据流的损坏位置。

    我建议在以下位置检查功能:

    1. Lwip2enet_timerCb:这是将触发数据包定期轮询的函数。
    2. LWIPIF_LWIP_rxPktHandler:此函数负责触发接收任务以从硬件获取数据包。 应定期执行此操作、即使没有任何数据包传入也是如此。 如果正在执行此操作、则继续执行 (2)
    3. Lwip2enet_prepRxPktQ:这是从 DMA 出队的函数。 检查出队的缓冲区是否包含有效的数据包。

    请检查这些点、以及应用程序中相应的网格是否一致。 让我们知道这些观察结果、以便进一步分析。

    此致、
    Teja。

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

    尊敬的 Teja:

    LWIPIF_LWIP_rxPktHandler 会定期命中。
    发生的情况是、在函数 Lwip2enet_prepRxPktQ 中、它永远不会进入 while (pCurrDmaPacket)

    它也永远不会进入: if (0U!= srcQueue->count)


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

    尊敬的 Ivan:

    您能否查看并确认为 CPSW TX 和 RX 通道与环所分配的资源?
    或者、这也可能是因为您正在使用的 netif 的任务未初始化。 请确认正在使用的网络调用函数“LwipifEnetApp_startSchedule"。“。

    此致、
    Teja。

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

    尊敬的 Teja:

    配置 CPSW TX/RX 通道和环、查找附加的 boardconfig 和屏幕截图、以进行仔细检查。

    e2e.ti.com/.../boardconfig_5F00_enet_5F00_lwip_5F00_cpsw_5F00_r5.zip

    LwipifEnetApp_startSchedule 使用 nettif[NETIF_INST_ID0]调用  

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

    尊敬的 Teja:

    您认为 在最后一个帖子中共享的资源分配是否正常? 您有任何更改建议吗?


    另一方面、根据我了解数据流(如果我不正确,请更正我)、正在使用 UDMA (PKTDMA) 从 CPSW 移动到 LWIP、并且会以某种方式导致数据流损坏。 那么基本问题是:

    需要什么来配置 PKTDMA 以将数据从 CPSW 获取到 R5 内核?

    除了资源分配外、还需要哪些 RAT 映射地址才能通过 PKTDMA?

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

    尊敬的 Ivan:  

    对延迟的回复表示歉意。 我被另一个任务所占用。 我已经验证了资源配置、看起来正常。  

    根据当前观察结果、当前情况是 cpsw 正在接收数据包、但 DMA 传输不会通过驱动程序预期的流/振铃。 为此、我们必须检查 DMA 是否处理、分配的 Rx 流和环是否与预期值内联。 我将在明天中午之前分享有关要检查的字段的相应详细信息。 我们可以根据这些结果推断出更多细节。

    此致、

    Teja。

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

    尊敬的 Ivan:

    请检查以下检查点的值:

    • EnetUdma_getMappedRxChStartIdx:检查 gUdmaRxMappedChRingAttributes[index].startFreeRing 的值
    •  周期任务期间 netif 的 HRX->hFlow 与函数 Lwip2enet_initRxObj 中初始化期间填充的 netif 相同

    如果这些不指向问题、请发送示例的压缩文件夹以了解设置。

    此致、
    Teja。

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

    尊敬的 Teja:

    关于  EnetUdma_getMappedRxChStartIdx:

    索引= 0

    gUdmaRxMappedChRingAttributes[index].startFreeRing = 119

    chStartIdx = 20

    初始化时的 HRX->hFlow:

    HRX->hFlow 在周期性任务中:

    查找附件导出的.zip 示例:
    e2e.ti.com/.../enet_5F00_lwip_5F00_cpsw_5F00_wkup_5F00_r5_5F00_06_5F00_06_5F00_2025.zip

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

    尊敬的 Ivan:

    我将使用预期值来验证这些值。 我将浏览您共享的项目、并在 3 个工作日内回复您

    我还希望 找到一个指南来简化这一过渡。 同时、如果可能、我建议您使用 enet_loopback 示例尝试进行这些更改、因为它更直接地处理数据路径、并且更容易识别问题。

    此致、
    Teja。

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

    尊敬的 Ivan:

    我能够在 AM62x 的 R5 内核上打开环回示例。 除了 OOB 配置、我不需要对资源配置进行任何其他更改。 我已经从您的示例代码中检查了 Enet 配置、并能够进行验证。 我现在将检查 LwIPIF 更改。 由于您不使用生成的代码并且是单独维护它们、因此所花费的时间比预期的时间长。

    感谢您的耐心。 如前面所述、请尝试在设置中查看环回示例、以验证 CPSW 功能。

    此致、
    Teja。

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

    尊敬的 Teja:

    我 还无法尝试移植 enet_loopback。 我忙于处理其他任务。

    当您说我不使用生成的代码时:还有其他选项吗? SysConfig 没有提供为 cpsw 或 ETHPHY 生成代码的选项、因此我没有其他为 A53 内核生成文件并使其适应 R5 的选项。

    您是将我的文件用于  R5 上的环回示例、还是完全从头开始?

    您能否导出该项目并在此处共享?

    提前感谢

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

    尊敬的 Teja:

    我第一次尝试移植 Enet 环回失败:

    =============================
     Enet Loopback: Iteration 1 
    =============================
    CPSW_3G Test
    Enabling clocks!
    Open MAC port 1
    EnetPhy_bindDriver:1873 
    PHY 0 is alive
    PHY 1 is alive
    initQs() txFreePktInfoQ initialized with 16 pkts
    Assertion @ Line: 845 in /home/ivan/ti/mcu_plus_sdk_am62x_11_00_00_16/source/networking/enet/core/examples/enet_loopback/enet_cpsw_loopback/loopback_test.c: pPktInfo != NULL : failed !!!
    


    您能否导出您的工程并将其附加到此处? 我想比较一下。  
    提前感谢

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

    尊敬的 Ivan:

    感谢您的耐心。 该错误表明数据包分配没有足够数量的数据包用于 Rx。 您能否分享此示例的 example.syscfg? 该示例不应启用 LwIP、并且“Only Enable Packet Info allocation“ 选项应为  取消选中 。 恐怕即使我共享示例工程、我们两种设置中的依赖项更改也不会相同。 我将与我的团队核实是否有其他方法来分享建议的更改。

    谢谢。此致、

    Teja。

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

    尊敬的 Teja:

    SysConfig 中没有 LwIP 模块、工程用于 R5 时该模块不可用。
    您能否提供 example.syscfg 所需的修改以使 LwIP 配置可用?

    找到附加的 example.sysconfig: e2e.ti.com/.../5224.sysconfig.zip

    另一方面、您指的是哪些依赖变化? 您使用的是 diferent SDK 而不是 SDK 11 吗?

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

    尊敬的 Teja:
    Enet_loopback 示例现在在 R5 内核中工作、我从 A53 enet_loopback 获取 SysConfig 文本配置、然后该工程能够自动生成与 enet 相关的文件。

    之后、对 enet_lwip_cpsw 应用了 相同的过程、但遇到了比以前相同的问题。

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

    好消息 Teja!


    Enet_lwip_cpsw 示例正在 R5 内核上工作。

    调试它我注意到一些网络线程在初始化时使用优先级 0 而不是分配的默认值、然后我发现、用于构建 R5 所需库的 makefile 文件有几个到 A53 而不是 R5 的包含路径、这使得这个方法很棘手。
    我离开 这里的压缩示例作为参考与 makefile ,然后它可以帮助其他人,也可以在下一个 SDK 版本中添加;)

    e2e.ti.com/.../ETH_5F00_R5.zip

    感谢你的帮助

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

    尊敬的 Ivan:

    感谢您发布详细信息。 我们能够在内部复制此设置、但找不到问题。 我们当时尝试通过 SDK 11 以极少的硬编码启用您的用例、这很耗时。  

    感谢您分享该解决方案

    此致、
    Teja。