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.

[FAQ] [参考译文] [FAQ] AM2634:MCAL 以太网轮询和中断模式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1356030/faq-am2634-mcal-ethernet-polling-and-interrupt-mode

器件型号:AM2634

尊敬的专家:

我使用的是 MCAL Eth 应用的开箱即用演示

  1. 如何在 MCAL 以太网项目中禁用中断节奏
  2. 如何切换到轮询模式而不是中断模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在以太网中、处理数据发送和接收事件的两种主要模式为  轮询   中断

    什么是轮询模式?

    在轮询模式下、MCU 定期检查传输和接收状态。 R5F 不依赖于以太网/DMA 外设来通知其有新数据可用(Rx)或数据传输正在完成(Tx)。

    什么是中断模式?

    在中断模式下、MCU 依靠 DMA 来通知数据传输或接收。 当新数据包到达(Rx 流)时、DMA 通知回调函数被命中。 然后、此回调函数处理流。 在 Tx 侧、当 DMA 完成数据传输时、将命中 Tx 回调、以进一步处理应用流。

    什么是中断节奏?

    中断节奏是一种机制、用于控制对 Rx 和 Tx 事件做出响应时产生中断的速率。 这样、就可以更高效地管理资源。 使用中断节奏单元、例如2ms、它指示每2ms 生成一次中断、并将在该时间间隔内处理所有数据包。

    注:  默认情况下、开箱即用 MCAL Eth_App 演示会启用中断节奏。

    请参阅  4.10. ETH—平台 MCAL 开发- AM263用户指南(TI.com) 、用于正确开始和设置 TH 应用演示

    禁用中断起搏的步骤:

    1. 在 EB tresos studio 中打开您的 ETH 配置。
    2. 在 ETH 中,转至 EthCtrlConfig,双击配置索引,滚动至 EthCpdmaConfig 并禁用 EthRxInterruptPacingEnabeld 和 EthRxInterruptPacingEnabeld。
    3. 右键点击 ETH CONFIG 并生成配置文件。 这些更改将反映在 Eth_Config s 中。

    禁用中断和启用轮询的步骤:

    1. 在 EB tresos studio 中打开您的 ETH 配置。
    2. 在 Ethh 中、转至 EthCtrlConfig、双击配置的索引、然后禁用"EthCtrlEnableTxInterrupt"和"EthCtrlEnableRxInterrupt"
    3. 现在、右键单击您的项目并生成配置文件。
    4. 在 example_config 文件夹中、替换 Eth_Cfg.c 和 Eth_Cfg.h 配置文件。
    5. 现在,在  examples/Eth/EthApp.c 文件中,调用 Eth_Transmit ()函数后调用 Eth_Tx ()。

      retVal         = Eth_Transmit(pEthConfigPtr->ctrlIdx,
                                                bufIdx,
                                                frameType,
                                                txConfirmation,
                                                lenByte,
                                                gBCstMacAddr);
      #if (ETH_ENABLE_TX_INTERRUPT != STD_ON)           
                  AppUtils_delay(1U);
      #endif
                  if ((Std_ReturnType) E_NOT_OK == retVal)
                  {
                      gTestPassed = E_NOT_OK;
                      gAppObj.stats.ethTransmitErr++;
                  }
                  else
                  {
      #if (ETH_ENABLE_TX_INTERRUPT != STD_ON)
                      Eth_TxConfirmation(0);
      #endif
                      while(gAppObj.txConfirmPacketFlag==FALSE)
                      {
                        /*wait till tx packet confirmed */
                      }
                      gAppObj.stats.ethTransmitPckCnt++;

      同一个 diff 片段:
    6. 现在清理并构建 Eth_app 演示(运行以下位置的命令: mcal_am263x_xx_xx_xx_xx/build  文件夹)
      gmake -s allclean
      gmake -s eth_app
    7. 使用 CCS 运行应用。 打开 Wireshark 并检查从微控制器发送的数据包。

    8. 使用数据包构建器软件(Colasoft、Packeth、Canoe 等)构建数据包并发送到微控制器的 MAC 地址。  
      有关网络工具的更多信息、请参阅 AM26x Academy: https://dev.ti.com/tirex/explore/node?node=A__AfKBUwO.x4eA8oN.qm.O6g__AM26X-ACADEMY__t0CaxbG__LATEST

    MCU 将数据包发送到外部世界:

    MCU 接收来自外部世界的数据包:

    如上所示、ETH 应用演示现在将使用轮询模式而不是默认中断模式。

    此致、
    Shaunak