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.

[参考译文] RTOS/AM3352:具有中断的 NDK 示例工程

Guru**** 2551370 points
Other Parts Discussed in Thread: SYSBIOS, AMIC110, AM3352, DP83848M, MATHLIB

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/610850/rtos-am3352-example-project-for-ndk-with-interrupts

器件型号:AM3352
主题中讨论的其他部件:SYSBIOSAMIC110DP83848MEVMK2GMATHLIB

工具/软件:TI-RTOS

我希望其中一个 EVM 或 Beagle 板上有一个335x 示例项目、该项目使用具有中断功能的 NDK。 我一直在查看 Nimu_BasicExample_bbbAM335x_armExampleProject、但这似乎是为轮询而设置的、但我可能会错。 我在该项目中看不到中断被初始化的任何位置。 我也很不确定大多数设置会做什么、因为我不熟悉 Starterware 和 SoC、TI-RTOS 的文档也很少。

我的主要问题是使从 NDK 到硬件的接口正常工作、我希望我能找到一个示例、因为没有有关如何设置的文档(我找到了)。

我的初始化代码是:

/*芯片配置 MII/RMII 选择*/
SOCCtrlCpswPortMacModeSelect (1、Ethernet_MAC_TYPE_RMII);
SOCCtrlCpswPortMacModeSelect (2、Ethernet_MAC_TYPE_RMII);

EMAC_socGetInitCfg (0、&cfg);
cfg.port[0].phy_addr = EMAC_CPSW_PORT0_PHY_ADDR_UTI;
cfg.port[1].phy_addr = EMAC_CPSW_PORT0_PHY_ADDR_UTI;
cfg.macModeFlags = EMAC_CPSW_CONFIG_MODEFLG_FULLDUPLEX;
EMAC_socSetInitCfg (0、&cfg);

NIMUDeviceTable[NIMU_DEVICE_index++].init =&CpswEmacInit;
NIMUDeviceTable[NIMU_DEVICE_index].init = NULL;

我在 SYSBIOS 中设置了 NDK、它确实会运行。 它检测到电缆已插入、但之后没有任何内容(我希望 DHCP 客户端正在运行、这是因为它会因故障而超时、但网络不响应-是的、网络会执行 DHCP)

我相信我已经启用了所有时钟。 使用时钟树工具、当您启用模块时、我看到除一个时钟之外的所有时钟都打开、但我不确定在哪里打开250MHz 时钟或如何验证它已经打开。 我不确定哪个寄存器控制它

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、我在重新检查我的所有文件编辑后最终构建了它... jeeze 多么令人感到麻烦。 现在、我必须执行引脚多路复用、SDK 驱动程序会将其包含并重建
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒! 您可以从亚马逊订购超级环回适配器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、我们又来了

    我已经按照自己的方式设置了电路板库和引脚多路复用器和时钟(我很确定)。

    就像我第一次尝试使用 EVM 板库时一样、我的程序在"Board_init"内的某个位置挂起、而不会离开。 当我停止时、我似乎在我不应该进入的一个内存区域中。 当我尝试简单单步进入 Board_init 时、它会立即运行、并再次丢失。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、您已经将 packages\ti\board\src\evmAM335x 下的文件添加到了您的程序中、然后进入? 您应用于 Board_init()的参数是什么? 您还可以通过以下方式缩小导致程序挂起的配置范围:

    Board_init (Board_init_module_clock);
    BOARD_INIT (BOARD_INIT_PINMUX_CONFIG);
    Board_init (Board_init_uart_stdio);

    您正在运行哪个程序? 回送示例或您的 NIMU/NDK 项目?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于我正在运行 EVM 项目、我甚至不知道在哪里放置文件、因为大家将项目分散在不同的文件夹中。 此外、我不会使用 EVM 文件我会使用我的新板 src 文件、对吧?

    我已经尝试将参数分开、唯一不会使系统崩溃的是时钟、之后它在 La-la-land 永远挂起。

    我正在运行 EMAC_BasicExample_evmAM335x_armExampleProject
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、您需要添加自己的电路板 src 文件。 我认为您保留了 EVM 文件夹和文件名、但替换为您的源代码。
    如果您将电路板 src 文件添加到 CCS 工程中- EMAC_BasicExample_evmAM335x_armExampleProject、则可以单步进入每个函数并精确定位导致崩溃的函数。 另一个选项是通过更新 packages/ti\build\Rules.make 以调试模式构建库:
    build_profile ?= debug

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我了解添加文件允许我单步执行这些文件。 问题是、当我添加它们时、我必须更新大量新的包含目录、以便链接。 我想我将尝试调试板库
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、我让它在调试中构建、但如何强制它使用调试库? 当它构建项目时、它总是选择发布库
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可能只是添加文件更简单。 您需要添加的目录可能只是 pdk_am335x_1_0_8\packages/ti\board\src\evmAM335x\include。 使用调试库、您还需要在 CCS 工程中显式添加其路径。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试在 CSS project->properties->build->GNU linker->Libraries 中添加调试库和路径,或者只是将调试库复制到 release 文件夹作为变通办法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我添加了文件和6个包含路径、稍后我将其解决。 我明天将进行测试
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以太网回送器件基本上是这样的:

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

    是的、 www.amazon.com/.../B001EHRTNE

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亚马逊花费的时间太长。 我只需要知道这是不是正确的引脚输出。 我们这里有一个网络人员、他将为我们提供帮助

    问题:

    由于我没有将 UART 连接到 PC、因此我尝试使 enet_phy.c 文件使用正常的 printf、但当我取消注释第27行以使用 IO 控制台并尝试构建电路板库时、由于 UART_printf 与 printf 不匹配、因此会因错误而失败。 我引入了该文件并以这种方式进行了更改、但如果我能够使它在实际库中正常工作、那将会更好

    当我从项目中取出电路板 src 文件并尝试使用构建的发布库时、我会在"Board_init (Board_init_uart_stdio)"上获得中止、而在使用本地文件运行时、我没有获得中止。 因此、就像现在一样、我甚至无法按原样运行库。

    当我使用本地文件运行时、它似乎不会执行任何操作。 我尝试将其连接到我的 PC 并运行 Wireshark、但我什么都没有。 我假设我需要使 PC 具有静态 IP 或某种配置、以便 Wireshark 查看任何数据包、对吧? 如果回路测试的图表不是我所需要的(并且你找不到我所需要的)、那么我的 PC 需要什么配置才能使它正常工作?

    在本示例中、我在哪里定义哪个 GPIO 引脚控制以太网 phy 的复位? 我有一段时间来确定 PHY 的复位位置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    让我们将 UART_printf 和 Board_init (Board_init_uart_stdio)问题置于较低的优先级。

    要使用 PC 上的 Wireshark 捕获以太网帧、无需在 PC 中设置静态 IP 地址或额外配置。 EMAC 单元测试发送在 test_pkt[64]中定义的64字节以太网原始广播数据包。 发送任务是 app_test_task_send_pkts()。 接收回调函数为 app_test_rx_pkt_cb ()。 如果在广播包被发出后的500ms 内没有接收到包,则测试将中断。

    您可以首先通过单步进入函数 EMAC_CHECK_LOOP_STATUS()和全局变量'linkStatus'来检查链接是否已启动。
    我必须查看您的电路板原理图、以查看 GPIO 引脚是否控制 phy 复位。 您的硬件工程师应该能够告诉您 PHY 复位 GPIO 引脚和序列,如果需要,您也可以参阅 MAIN_icev2AM335x.c 中的 GPIO init()和 PhySetupAndReset()。

    /* Init GPIO 驱动程序*/
    GPIO_init();

    /*芯片配置 MII/RMII 选择*/
    PhySetupAndReset();

    DP83848 PHY 复位脉冲持续时间最短为1us、请参阅其数据表-第13页。 T2.2.4 -复位脉冲宽度- X1时钟必须在复位脉冲低电平时间内的最小1us 内保持稳定
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我非常熟悉 phy 重置、但正如我在使用 EVM EMAC 项目之前告诉过的、我在项目中找不到这两个例程中的任何一个。 那么、我认为我不需要将其添加到我自己的中

    我让我们的网络人员制作环回插座、因为您说图就是我们需要的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我准备好了回送器件、我的 phy 正在复位、我们只能得到:
    [CortxA8] Board_init 成功
    Board_init 成功
    EMAC 环回测试应用初始化
    SetPhyMode:000001E1自动:1、FD10:64、HD10:32、FD100:256、HD100:128、 FD1000:0 LPBK:0
    主:EMAC_OPEN 成功
    链路状态:链路处于环回状态

    将其连接到 PC 时、我会得到相同的结果、Wireshark 不会显示来自电路板的数据包
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚设置了 AM335x 入门套件、并希望您的电路板具有如下所示的日志。 因此我们知道这个问题与 NDK/Nimu 无关。
    您是否尝试在 Tx/Rx 函数中设置断点? 回调函数 app_test_rx_pkt_CB()函数可能永远不会被您的主板击中。

    ===========
    链路处于环回状态
    接收到的数据包:1.
    接收到的数据包:2.
    接收到的数据包:3.
    接收到的数据包:4.
    接收到的数据包:5.
    接收到的数据包:6.
    接收到的数据包:7.
    接收到的数据包:8.
    接收到的数据包:9.
    接收到的数据包:10.
    接收到的数据包:11.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我点击:

    APP_INIT
    app_queue_push
    app_alloc_pkt
    app_queue_pop
    APP_TEST_TASK_POLL_pkt
    APP_TEST_TASK_SEND_pkts
    APP_FREE_PKT

    我大概是这样的顺序。 您回答正确、我从未点击 APP_TEST_Rx_pkt_CB

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您有硬件、这可能会更容易帮助我进行调试。 我可以与您共享我的项目和板级配置文件。 我知道你们有2块板
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将于2017年4月12日星期一上午10:30之前收到一个板。 是的、请在我可以访问的服务器上上传您的项目和板级配置文件、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否尝试更新 LOOP_Bback 标志、并按如下方式注释掉'reTurn -1'、然后再次使用 Wireshark 捕获以查看是否发出任何数据包?

    open_cfg.LOOP_Back = 0;

      if (emac_check_loopback_status (0)!=1)

      {

        UART_printf ("链路未处于环回状态、返回错误\n");

    //    返回-1;

      }

    默认情况下、EMAC 单元测试实际上使用内部回送、这与使用外部回送的 ICSS_EMAC 单元测试稍有不同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我试过这个。 我浏览了 Wireshark 中的每个数据包、其中每个数据包都来自我的 PC、我的 CIO 窗口:

    [CortxA8] Board_init 成功
    EMAC 环回测试应用初始化
    主:EMAC_OPEN 成功
    链路状态:上行链路未处于环回状态
    链路未处于环回状态、返回错误

    应用的代码块:

    open_cfg.hwAttrs =(void*)&EMAC_cfg;
    open_cfg.alloc_pkt_CB = app_alloc_pkt;
    open_cfg.free_pkt_cb = APP_FREE_PKT;
    open_cfg.LOOP_Back = 0;
    open_cfg.master_core_flag = 1;
    open_cfg.max_pkt_size = 1518;
    open_cfg.mdio_FLAG = 1;
    open_cfg.num_for_chans = 1;
    open_cfg.num_for_rx_pkt_desc = 64;
    open_cfg.num_for_TX_pkt_desc = 64;
    open_cfg.phy_addr = 0;

    open_cfg.p_cho_mac_addr =&cho_cfg[0];

    open_cfg.rx_pkt_CB = app_test_rx_pkt_CB;


    /*设置通道配置*/
    CHAN_cfg[0].CHAN_num = 0;
    cha_cfg[0].num_for_mac_Addrs = 1;




    /*使用任意单播 MAC 地址*/
    对于(i=0;i<6;i++)

    macTest.addr[i]= i + 2;

    cha_cfg[0].p_mac_addr =& macTest;

    如果((open_ret = EMAC_open (0、&open_cfg))= EMAC_DRV_RESULT_open_port_ERR)

    printf ("main:emac_open 失败:%d\n"、open_ret);

    其他
    printf ("main:emac_open 成功\n");

    cfg_info.mcast_cnt = 0;
    cfg_info.p_mcast_list =空;
    CFG_INFo.Rx_FILTER = EMAC_PKTFLT_MULTIPGAST;
    EMAC_CONFIG (0、&cfg_INFO);

    if (emac_check_loopback_status (0)!=1)

    printf ("链路未处于环回状态、返回错误\n");
    //返回-1;




    那么、我假设您现在拥有了我们的硬件。 如果您需要我提供的任何与软件/项目相关的信息、请立即通知我
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    硬件现在应该在邮箱中。 我已经获得了包含您的新文件和示例项目设置的电路板库、今天下午将使用您的硬件进行调试...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Michael、

    接收到的电源是直流6V、是不是正确的? 是否有任何 LED/开关用于指示/为电路板供电? 如何将 JTAG 连接到电路板? 我看到背面有20引脚连接器、您是否有与 ARM 内核关联的 GEL 脚本来进行初始化?

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

    是的、它是6V 电源。 此板上没有指示电源的 LED。 20引脚 JTAG 是您所需的连接。 我假设您有一个仿真器可以处理该问题。

    GEL 文件:

    e2e.ti.com/.../Model840i_5F00_3352.gel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、我现在能够连接电路板并加载应用、调试...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是一个快速更新-我能够在您的电路板上重现 EMAC 回路测试故障。

    PHY 寄存器0x10表示它是一个全双工100Mbps 链路、但即使在我将环回标志更新为0并在 while 环路中持续发送广播数据包之后、也不会发出任何数据包。
    所有 CPSW_STATS 寄存器值均为0x0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好极了。 至少我不是疯了。 希望您能找到我出错的地方
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从几天前捕获的 CPSW_STATS 快照中、有 Good TX_FRA帧。 您是否还会在 CPSW_STATS 中看到环回测试代码的所有零? 除了应用程序代码更改之外、还可以更改其他任何内容吗? BOFFTEST 寄存器按预期持续计数、这表示 CPSW 超出复位范围。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有在很长一段时间内发送快照、当然也不是在几天前。 使用示例项目、CPSW_STATS 寄存器的值全为0。

    我想我不确定您提出的更改。 项目是否未编译? 您是否能够使用我的电路板库? 我想您已经修改了所有文件。 如果您想查看项目中的任何其他文件、我可以将其发送给您。 我当然没有更改与实际测试本身相关的任何内容、只是更改电路板的设置。

    当我找到 BOFFTEST 寄存器时、我看到我的 RNDNUM 域为0xCC、我认为这意味着它也在为我递增计数
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >>我当然没有更改与实际测试本身相关的任何内容、只更改电路板的设置。
    我尝试将 cpsw_stats 问题与电路板设置隔离。 不确定是否具有相同的电路板设置来运行 EMAC 回送项目和 NDK/NIMU 项目。

    如果您还有0用于 EMAC 环回项目的 CPSW_STATS 寄存器、我们位于同一页上。 我使用您的所有最新文件重建了电路板库。

    AM335x EVM 和入门套件使用 RGMII 接口。 对于 RMII 模式、需要设置标志- EMAC_CPSW_CONFIG_MODEFLG IFCTL
    EMAC_cfg.macModeFlags = EMAC_CPSW_CONFIG_MODEFLG FULLDUPLEX| EMAC_CPSW_CONFIG_MODEFLG IFCTLA。

    尝试将 AM335x 入门套件和电路板之间的每个 CPSW 寄存器位与环回代码进行比较...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我捕获了入门套件和电路板上的所有 CPSW 寄存器。 CPSW_CPDMA 状态显示您的主板中空闲、CPDMA_IN_VECTOR = 0、这有点令人困惑、因为它表示复位*未*取消置位。 我尝试使用您以前的 void InitPinMux()函数,但 CPSW_STATS 也不显示有效的统计数据。 NDK/NIMU 示例还显示了 CPSW_STATS 全部为0。

    您是否仍然有一个 CPSW_STATS 未显示全部0的电路板设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 CPSW_STAT 的非零值中获得值的板与您拥有的板相同、但这是一段时间后(10月之前)。 请尝试、因为我可能无法重新创建在这些寄存器中为我提供值的条件。 我尝试按照以前的方式设置项目(2个 PHY、我的 pinmux 设置、DHCP 已启用)、但仍然无法重新创建项目。  

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

    您是否在设置中使用相同的 GEL 文件? GEL 文件似乎来自 TI 的一个电路板、但已更新 PLL 倍频器/除数...我收集了时钟树数据并要求硬件团队帮助使用 CTT 进行验证...

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

    是的、相同的 GEL 文件、刚刚针对我们的电路板进行了修改。 基于 BBB GEL

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

    在解决将数据包发送到 RMII 端口2而不是 RMII 端口1的问题之后、我们现在看到您的电路板上有良好的 Rx/Tx 帧以及 EMAC 单元测试代码。

    我们正在尝试更新 NIMU/NDK 示例以处理您的配置-一个端口、RMII 端口为2而不是1。

    此致、Garrett

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想我很困惑、我已经说了一段时间、我们正在使用 RMII2、我认为这正是您确认我的软件很好的地方。 是否有遗漏的东西导致为 RMII2设置代码? 还是像 phy 地址中一样谈论"port"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在尝试解决电路板库问题之前、我们讨论了 NDK/Nimu 项目的一个 RMII2端口设置。 但对于 EMAC 单元测试示例、缺少主函数和 test_utils.c 代码中的一些硬编码端口号。
    我们还发现 NIMU/EMAC 驱动程序在支持该案例方面存在限制-仅第二个 CPSW 端口与 PHY 连接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这意味着它现在可以工作还是不工作? 如果是、我必须进行哪些软件更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更新 EMAC 单元测试示例中的端口号后、可以从外部流量发生器接收到应用程序中的数据包、如上面 CPSW_STATS 快照中所示。
    我们需要做更多的工作、主要侧重于在司机中注册 Nimu、以便在您的董事会上完成 Ping 工作。

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

    因此、我们必须问:如果我们从一开始就使用 Linux、RMII2端口是否正常工作、或者是否也缺少这些驱动程序? 我们是否刚刚为该芯片上的以太网 MAC 选择了最差的选项?

    不是为了浪涌、而是为了让驱动程序在 RTOS 中工作、是否有某种时间估计? 可能是粗略的猜测?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Linux 不应出现此类 EMAC 端口号问题。 AM335x EMAC (CPSW)驱动程序几年前已在 Linux 内核上游使用。 实际上、我们讨论了如何在您的板上移植 Linux、以查看上周我们举行内部集思广益会议时是否可以复制 null 的 CPSW_STATS、但考虑到时间限制和所涉及的工作量、我们没有继续下一步。

    在与团队同步后、我将向您介绍时间估计。 我们很可能会为您提供一个补丁、您可以从外部 git repo 而不是下一个官方 PRSDK 版本下载、以帮助您加快开发。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们现在能够从 PC ping 您的电路板。 我们更新了 EMAC 驱动程序以处理仅存在 RMII2的情况。 下面是 Wireshark 和 CPSW_STATS 寄存器日志。

    此致、Garrett

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

    太棒了! 现在、如果您加载我的 cutdown 3352项目并确保已启用 DHCP、您可以获取 IP 地址?

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

    您好、Michael、

    EMAC 补丁  现已推出。

    标签:DEV.EMAC_LLD.01.00.03.09

    提交 ID:7316ed8738f6d09764c9e8ce867b65679f3db041

    该补丁包括 EMAC 驱动程序更新、以处理 EMAC_OPEN 时无效的 PHY 地址配置、并进行单元测试更新以进行验证。

    更新 EMAC 驱动程序后、请参阅 pdk packages/ti\transport \NDK\Nimu\examples\am572x\armv7\BIOS 下的 nimu_dual_mac_idk.cfg、了解双 MAC 配置、以更新 Nimu_BasicExample_evmAM335x_armExampleproject 中的 nimu_evm.cfg 文件:

    var enableStaticIP        = 1;

    if (enableStaticIP)

      /*静态 IP 配置的设置*/

      ip.ResolveIP = false;

      ip.CallByIP = false;

      Ip.autoIp = false;

      ip.address ="192.168.1.4";

      ip.mask ="255.255.255.0;

      ip.gatewayIpAddr ="192.168.1.1";

      ip.ifIdx = 2;

    其他

      ip.dhcpClientMode = ip.CIS_FLG_IFIDXVALID;

    global.stackInitHook ="&stackInitHook";

    stackInitHook()函数在 packages/ti\transport \NDK\Nimu\examples\src\main_AM57xx.c 中实现,并且可以将该函数复制到 main.c 中

    main.c 中的双 MAC 和 Nimu 设置应如下所示:

    /** CPSW 端口1*/的 PHY 地址
    #define CPSW_PORT0_PHY_ADDR_EVM     EMAC_CPSW_NO_PHY_ADDR
    /** CPSW 端口1*/的 PHY 地址
    #define CPSW_Port1_PHY_ADDR_EVM     1.

       /*芯片配置 MII/RMII 选择*/
       SOCCtrlCpswPortMacModeSelect (1、Ethernet_MAC_TYPE_RMII);
       SOCCtrlCpswPortMacModeSelect (2、Ethernet_MAC_TYPE_RMII);

       EMAC_socGetInitCfg (0、&cfg);
       cfg.macModeFlags = EMAC_CPSW_CONFIG_MODEFLG_FULLDUPLEX| EMAC_CPSW_CONFIG_MODEFLG_IFCTLA;
       cfg.port[0].phy_addr = CPSW_PORT0_PHY_ADDR_EVM;
       cfg.port[1].phy_addr = CPSW_Port1_PHY_ADDR_EVM;
       cfg.numPorts = 2;
       EMAC_socSetInitCfg (0、&cfg);
       …
       NIMUDeviceTable[NIMU_DEVICE_index++].init = &CpswEmacInit;
       NIMUDeviceTable[NIMU_DEVICE_index++].init = &CpswEmacInit;
       NIMUDeviceTable[NIMU_DEVICE_index].init = NULL;

    使用上述配置、您应该能够从静态地址为192.168.1.x 的 PC ping 电路板192.168.1.4 如果您遇到任何补丁问题、请告知我们。

    此致、Garrett

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

    当我只使用一个 MAC 时、您是否有理由让我将电路板设置为双 MAC 板?

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

    虽然电路板上只有一个 MAC、但它处于 CPSW 的双 MAC 模式。 TRM - 14.3.2.10.2中定义了双 MAC 模式:在双 MAC 模式下运行时、目的是在端口0和1以及端口0和2之间传输数据包、但不在端口1和2之间传输数据包。 (CPSW 提供2个外部以太网端口(端口1和2)和1个内部 CPPI 接口端口(端口0)。

    BTW、您可以直接从下载 EMAC 驱动程序

    单击主页中的'Source tree'、然后在下一页中单击'Download master as tar.gz'、请参见下文。 EMAC 驱动程序更新位于 src/v4目录(emac_cpsw.c、emac_drv_v4.c、emac_drv_v4.h)中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、我想我需要在这里学习一些知识:

    当我过去将其置于2 MAC 模式时、它将始终寻找第二个 PHY、我们甚至回答了一系列有关如何将其置于单 MAC 模式的问题、因为我只有1个 MAC。 是否专门针对该项目将其置于双 MAC 模式、我的项目是否将其置于单 MAC 模式? 如果我们始终希望它处于双 MAC 模式、如何防止系统不断寻找第二个 phy?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当 PHY 地址定义为'EMAC_CPSW_NO_PHY_ADDR'时、EMAC 驱动程序将停止持续查找 PHY、并且仅打开具有有效 PHY 地址的端口。 该逻辑仅在新补丁中可用。

    因此,您的板的 PHY 地址配置为:

    /** CPSW 端口0*/的 PHY 地址
    #define CPSW_PORT0_PHY_ADDR_EVM EMAC_CPSW_NO_PHY_ADDR
    /** CPSW 端口1*/的 PHY 地址
    #define CPSW_Port1_PHY_ADDR_EVM 1.