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.

[参考译文] TMDSCNCD28388D:LWIP 示例项目

Guru**** 2539500 points
Other Parts Discussed in Thread: TMDSCNCD28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/875048/tmdscncd28388d-lwip-example-project

器件型号:TMDSCNCD28388D
主题中讨论的其他器件: C2000WARE

您好!

我将在 F28388D controlCARD 评估(TMDSCNCD28388D)中测试 Enet_lwip 示例项目。 Web 服务器工作正常,我可以看到“lwIP - Interactive example”网页,Web 服务器响应 GET 请求。


但深入验证应用程序、我面临以下问题:

-由于变量“sysstickPeriodValue”设置为15000000,所以不能将其清除;在 Concerto 库中,系统定时器中断周期设置为10ms。 在该示例中,变量“SysTick PeriodValue”用于系统计时器中断周期,并通过 lwIPTimer 函数更新 lwIP 以太网计时器。 假设 CM 时钟频率为125MHz (我不知道使用哪个 c28x1项目、因此我不知道系统时钟配置)、 系统定时器中断周期为120ms、lwIP 以太网定时器随 SYstickPeriodValue 值递增。

-如果我在 CCS“Predefined Symbols”窗口中添加调试符号以启用 LWIP_platform_assert 宏,则应用程序将在“错误处理函数”中停止。 lwip 堆栈预计 Ethernet_Pkt_Desc 结构(pktDescriptionorRXCustom)被分配到堆 RAM 中。在示例中、pktDescriptionorRXCustom 是一个全局数组。

此外、我不清楚为什么需要在本示例中使用自定义回调函数

   //
   //分配回调以在需要时获取数据包缓冲区
   //在发送中断回调时释放 TxPacketBuffer
   //接收数据包完成中断时进行接收数据包回调
   //
   pInitCfg->pfcbRxPacket =以太网_receivePacketCallbackCustom;
   pInitCfg->pfcbGetPacket =以太网_getPacketBufferCustom;
   pInitCfg->pfcbFreePacket =以太网_releaseTxPacketBufferCustom;


-如果我继续重新加载网页(例如,按住 Ctrl+R 按钮在 Firefox 浏览器上重新加载页面),Web 服务器将崩溃。 我观察到,TCP 连接期间的许多“三方握手”仍处于挂起状态,导致 TCP 在两端(客户端、服务器)重新传输数据包。

我知道 enet_lwip 项目只是一个示例、应用程序改进是开发人员的关注点、但我们非常感谢您的任何帮助。

提前感谢、



电源
我正在使用以下库和 IDE:
C2000Ware_2_01_00_00
CCS 9.2.0.00013

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

    您好!

    filids 说:
    由于变量“sysstickPeriodValue”设置为15000000

    ,因此不能将其清除

    不确定您不清楚的内容。 您的问题是什么?

    [引用 user="filids"]如果我在 CCS 的“预定义符号”窗口中添加调试符号以启用 LWIP_platform_assert 宏,则应用程序将在“错误处理函数”中停止

    这是什么时候发生的、您能告诉我当时的调用堆栈吗?

    filids 说:
    我不清楚为什么需要在此示例中使用自定义回调函数

    EtherNet.c 中低级驱动程序中提供的回调供参考。每当数据包到达/数据包被释放或需要从应用程序中释放时、都会调用回调。 此 LWIP 应用程序需要一些特定的操作数据包到达等,因此使用这些自定义的回调。

    [引用 user="filids"]我知道 enet_lwip 项目只是一个示例,应用程序改进是开发人员关注的问题,但任何帮助都是非常感激的。

    正如您所说的、这只是一个参考示例、我们没有像连续 Ctrl+R 那样进行广泛的测试  

    此致、

    Sudharsanan

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

    您好 Sudharsanan、
    感谢您的快速响应。

    第一个问题不是大问题。 我想发出信号、表明 SysTickPeriodValue 用于系统计时器配置和 lwIPTimer 函数

    SysTK_setPeriod (SysTick PeriodValue);

    lwIPTimer (sysstickPeriodValue);


    但我会使用


    lwIPTimer (120);
    CM_CPU_CLOCK = 125MHz

    我向您发送调用堆栈

    谢谢、

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

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

    您好 Fil、  

    感谢您提供有关 SysTickPeriodValue 的注释。 我们将在即将发布的版本中修复它。

    感谢您的呼叫跟踪。 我最终无法重新创建它 我将在几周内回来。  

    此致、

    Sudharsanan

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

    您好!

    对延误表示歉意。 我尝试为您提到的错误重新创建方案。 我在定义了 LWIP_DEBUG 的情况下重新编译了应用程序、我看到 HTTP Web 服务器示例运行正常、没有问题。 我没有看到你提到过的停顿。  

    我是否需要执行任何特定步骤来重新创建问题?  

    此致、

    Sudharsanan

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

    您好 Sudharsanan、

    我会向您发送 enet_lwip 项目。

    正如您在项目设置中看到的、我定义了"debug"来启用断言条件。

    感谢你的帮助。

    此致、

    File2e.ti.com/.../enet_5F00_lwip.zip

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

    您好 Fil、

    感谢您提供更多详细信息和项目。  

    我可以在我的结尾重新创建此问题 这是由于启用调试宏时、mem_free 遇到首先断言、这会导致 error.it 卡在此行 LWIP_MEM_ILLEGAL_FREE ("mem_free:ILLEGENT MEM");因为在 pinout.c as_asm ("  bkpt #0")中定义了__error__;instruction.that 导致它中止。  

    在未定义调试的默认配置下、调用这些函数但不会导致停止(因为未定义 LWIP_platform_assert)、状态仅为递增应用程序继续运行。

    实际上、Error 函数是占位符、您可以执行任何处理程序来处理错误。

    希望这对您有所帮助。  

    此致、

    Sudharsanan