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.

[参考译文] TMS320C6654:NIMU_emacExampleClient_EVMC6657C66BiosExampleProject 上的 IPv6

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/850406/tms320c6654-ipv6-on-nimu_emacexampleclient_evmc6657c66biosexampleproject

器件型号:TMS320C6654

您好!

我正在运行 pdk_c665x_2_0_13\packages/ti\transport\NDK\Nimu\example 中提供的示例项目:Nimu_emacExampleClient_EVMC6657C66BiosExampleProject。 该项目是在定义了#define _include_ipv6_code 的情况下构建的。  

项目看起来运行正常。 我可以从浏览器中的 IPv4地址打开网页、并将以下文本输出到 CCS 控制台:

[C66xx_0]
TCP/IP 堆栈"客户端!" 应用

服务状态:DHCP:   已启用 :000          
服务状态:Telnet  :已启用 :         000
服务状态:HTTP    :已启用 :         000
服务状态:DHCP:   已启用 :正在运行 :000
网络已添加:if-1:192.168.0.29
服务状态:DHCP:   已启用 :正在运行 :017

 映射文件指示构建中已链接 IPv6库。  

我的最终目标是在需要 IPv4和 IPv6同时运行的应用中使用 NDK/PDK。 它至少必须支持 UDP 和 TCP、DHCP、ARP 和 IGMP。 该应用程序当前仅使用 IPv4的 NDK、现在我需要打开 IPv6。

在客户端演示项目中、如何找到 IPv6 IP 地址? 如何验证 IPv6 TCP 和 UDP 操作?

我们非常感谢您提供任何指导。

谢谢、

Jim

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

    您好!

    您能否尝试此处讨论的.cfg 条目:
     

    此致、
    Yordan

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

    Yordan、您好!

    将以下两行添加到文件 pdk_c665x_2_0_13\packages/ti\transport \ndk\Nimu\examples\client\c6657\c66\BIOS\client.cfg 中未解决此问题。

    global.ipv6 = true;

    global.pktNumFrameBufs=50;

    1) 1)您链接到的旧论坛帖子引用了 NDK 2.23.00.00中的 TCP 回显示例。 我使用的是 NDK 3.40.01.01。 我正在运行的示例工程位于 PDK 中:pdk_c665x_2_0_13\packages/ti\translation_NDK\Nimu\examples\client。 这是演示 IPv6的正确项目吗?

    2)在文件 pdk_c665x_2_0_13\packages/ti\transport \ndk\Nimu\examples\client\src\client_c6657.c 中 传递到 NNC_NetStart ()的称为 NIMU_testNetworkOpen 的回调函数为 IPv4和 IPv6打开守护程序。 返回的 IPv6守护程序 TCP 句柄是有效的,但 TCP 守护程序服务器函数 dtask_tcp_echo6_JDC()永远不会被调用。 (此函数只是我创建的 dtask_tcp_echo6 ()的副本、用于在不重建 PDK 的情况下进行调试)。

    IPv6是否需要进行其他初始化才能正常工作? client_c6657.c 中唯一与 IPv6相关的代码是对 Demon6New()的调用。

    谢谢、

    Jim

    静态空 NIMU_testNetworkOpen()

     (笑声)
       /*创建 IPv6本地服务器。 *
    #ifdef _include_ipv6_code

       hEcho6   = Demon6New (SOCK_STREAM、IPV6_unspecified _address、7、dtask_tcp_echo6_JDC、
                               OS_TASKPRINORM、OS_TASKSTKNORM、0、3);
       hEchoUdp6 = Demon6New (SOCK_DGRAM、IPV6_unspecified _address、7、dtask_udp_echo6、
                               OS_TASKPRINORM、OS_TASKSTKNORM、0、1);
       hTelnet6 = Demon6New (SOCK_STREAM、IPV6_unspecified _address、23、
                               (Int (*)(socket、uint32_t)) telnetClientProcess、OS_TASKPRINORM、OS_TASKSTKLOW、
                               (uint32_t)ConsoleOpen,2);
       hOob6    = Demon6New (SOCK_STREAM、IPV6_unspecified _address、999、dtask_tcp_oobsrv、
                               OS_TASKPRINORM、OS_TASKSTKNORM、0、3);
       hWeb6    = Demon6New (SOCK_STREAM、IPV6_unspecified _address、httpport、httpClientProcess、
                               OS_TASKPRINORM、OS_TASKSTKHIGH、0、4);
    #endif


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

    您好!

    我们从未在 Processor SDK 上测试过 IPv6。 我看到了  

    char *主机名="tidsp";
    char *LocalIPAddr ="192.168.1.4";
    char *LocalIPMask ="255.255.255.0;//使用 DHCP 时不使用
    char * GatewayIP ="192.168.1.1";//使用 DHCP 时不使用
    char * DomainName ="demo.net";//使用 DHCP 时不使用
    char * DNSserver ="0.0.0.0";//设置为零以外的任何值时使用

    其中、我们使用 IPv4和静态 IP 来实现

    /* IPNet 实例*/
    typedef struct _CI_IPNet{
    uint32_t NetType;//网络地址类型标志*/
    uint32_t ipaddr;/* IP 地址*/
    uint32_t IPMask;//子网掩码*/
    void *hBind;//绑定句柄(重置为 NULL)*/
    字符域[CFG_DOMAIN_MAX];/* IPNet 域名*/
    } CI_IPNet;

    我需要了解如何在 EVM 上分配静态 IPv6地址以及如何使用 IP V6地址配置 PC。 我将向您提供最新信息。

    此致、Eric  

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

    尊敬的 Eric:

    感谢您关注这一问题。

    我一直在搜索 E2E 论坛、找到了一篇文章、其中提供了一些帮助:

    e2e.ti.com/.../301931

    根据此帖子的建议,我连接到了 telnet 服务器,并成功运行了 IPv6 init 命令。 route 命令显示了获得的 IPv6地址。 目前、我正在尝试对初始化 IPv6的控制台程序进行逆向工程、目的是将该代码移动到已经初始化 IPv4的应用程序中。 我的现有 IPv4应用程序使用 PDK 示例工程"hello world"作为参考。 如果有一个类似的示例演示如何使用 IPv6来实现这一点、那将非常有帮助。

    我希望您能找到一些共享的内容、因为我对 telnet/console 代码的逆向工程可能不会达到目标。

    谢谢、

    Jim

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

    Jim、

    下面是我找到的内容:当您执行"IPv6 init 1"时,它会调用 静态 void console( socket SCON、struct sockaddr *pClient ),然后它会调用:

    /*处理各种命令。 *
    if ((NTOK ==2)&&!strcmp (tok1、"init"))

    /*在特定接口上初始化 IPv6堆栈。 *
    CmdIPv6InitializeStack (tok2);
    返回;

    所以 ,CmdIPv6InitializeStack()就是您要查找的内容。 希望这对您有所帮助!

    此致、Eric