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.

[参考译文] EVMK2H:如何同时在 EVMK2H 上运行两个 NDK 堆栈

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/566186/evmk2h-how-to-run-two-ndk-stack-at-evmk2h-at-the-same-time

器件型号:EVMK2H

你(们)好 TI 员工。

我想使用 EVMK2H 器件的两个以太网端口。 (pdk_k2hk _4_0_2、 NDK_2_24_02_31)

我已经关注过这个帖子(

)并制作了我 自己 的 Nimu_eth.c 和 Nimu_internal.h

我创建了自己的源代码、因为文章涉及 C6678器件(我的板是 EVMK2H)。

我认为这2个以太网端口已成功初始化(即使显示了一些警告消息、

verify_Init:gTxFreeQHnd 队列0的预期16个条目计数、找到0个条目、

verify_Init:gRxFreeQHnd 队列0的预期条目计数为110、找到0个条目)。

但是、我在运行两个 NDK 堆栈期间面临着这个问题。

要运行两个 NDK 堆栈、我在 HelloWorld.cfg 中添加了"StackTest_2"任务。  

我遇到错误消息"00000.000 ExecStart: already Open"。

错误消息来自 ExecOpen(),因为 全局变量 ExecStatus != ES_Closed。

(函数 ExecOpen()位于 NDK_2_24_02_31/packages/ti/NDK/stack/res/exec.c 下)

我认为全局变量 ExecStatus 仅支持一个 NDK 堆栈。

(是否应该为 每个 EMAC 端口将 ExecStatus 变量设置为 ExecStatus[2]数组?)

您能告诉我如何同时运行两个 NDK 堆栈吗?

(我阅读 e2e.ti.com/.../2072579后的文章

 但这对我的情况没有帮助。

我仅在核心0使用2个以太网端口。 这是失败的原因吗?

---- 这是日志---

正在初始化自由描述符。
QMSS 已成功初始化
CPPI 已成功初始化
PA 已成功初始化

TCP/IP 堆栈'Hello World!' 应用

StackTest:使用 localIp 第一个端口
PSB:之前的 NC_NetStart
嵌入式
EMACInit_Core 端口:0
PHY = SGMII 端口0
已成功初始化传递
SGMII 串行器/解串器通道初始化完成
init_SGMII:macPortNum:0
init_SGMII:macPortNum:1
以太网子系统已成功初始化
ADD_MACAddress 端口:0
ADD_MACAddress 端口:0
EMAC 注册成功,正在等待链接。
发送0正常(64)
网络已添加:if-1:192.168.0.27
PSB、NetworkOpen

TCP/IP 堆栈'Hello World!' 应用

StackTest:使用 localIp 第二个端口
PSB:之前为 NC_NetStart2
嵌入式
EMACInit_Core 端口:1
AMC = SGMII 端口1
ADD_MACAddress 端口:1
ADD_MACAddress 端口:1
EMAC 注册成功,正在等待链接。
00000.000 ExecStart:已打开
PSB、NetworkClose
00000.000毫米无:双空
00000.000毫米无:双空
00000.000 NodeTreeFree:未找到正确的答案
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
00000.000毫米无:双空
PSB:NC_NetStart2返回:-1
StackTest2:正在退出
00000.000毫米无:双空
00000.000毫米无:双空
00000.000 NodeTreeFree:空端点
00000.000毫米无:双空
00000.000毫米无:双空
PSB:NC_NetStart 返回:-1
StackTest:正在退出

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

    我已通知 NDK 团队。 他们的反馈将在此处发布。

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

    我找到了答案:)
    我认为无法在一个内核上启用多个 NDK 堆栈。
    (每个内核一个 NDK 堆栈)

    我在添加接口1的地址后添加了以下行(用//add 添加注释)。
    =========================== at hellowWorld.c.================================================
    platform_write ("StackTest:Using localIp 1st port\n");
    //设置手动 IP 地址
    bzero (&nA,sizeof (nA));
    na.ipaddr = inet_addr (LocalIPAddr);
    na.ipMask = inet_addr (LocalIPMask);
    strcpy( na.Domain,DomainName );
    NA.NetType = 0;

    //将地址添加到接口1
    CfgAddEntry (hCfg、CFGTAG _IPNet、1、0、
    sizeof (CI_IPNet)、(uint8 *)&nA、0);

    bzero (&nA,sizeof (nA));//add
    na.ipaddr = inet_addr (LocalIPAddr2);//添加
    na.ipMask = inet_addr (LocalIPMask);//添加
    strcpy( na.Domain、DomainName2 );//add
    NA.NetType = 0;//add

    //将地址添加到接口2/add
    CfgAddEntry (hCfg、CFGTAG _IPNet、2、0、
    sizeof (CI_IPNet)、(uint8 *)&nA、0);//add

    添加上述代码后,我可以为每个端口设置两个不同的 IP 地址并成功 ping:)

    但是,我面临另一个问题。

    在同时使用2个端口的 ping 测试期间、ping 数据包有时会丢失(显示数据包已过期消息)

    如果我需要一些帮助。 我将创建新帖子。