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
你(们)好 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 堆栈。
(每个内核一个 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 数据包有时会丢失(显示数据包已过期消息)
如果我需要一些帮助。 我将创建新帖子。