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.

[参考译文] 编译器/TM4C1294NCPDT:TM4C1294NCPDT

Guru**** 2618835 points

Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/779815/compiler-tm4c1294ncpdt-tm4c1294ncpdt

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

  1.       控制器                          :TM4C1294NCNPDT
  2.      make                                   :Texas Instruments
  3.      以太网通信:  TCP 协议
  4.       面临的问题:

我们的控制器配置为服务器、我们需要通过 TCP 协议与两个并行客户端进行通信。

目前、我们没有遇到从两个客户端向控制器(服务器)发送一个请求的问题。

但是、如果我们同时将数据请求从服务器发送到 client1和客户端2、则控制器会响应任何一个请求(第二个请求)、并且它不会发送第一个请求的响应。

此外、如果控制器在向客户端1发送数据时从客户端2接收到另一个请求、则控制器停止向客户端1发送数据、并将请求的数据发送到客户端2。 因此、我们在客户端面临数据丢失问题

我们需要从控制器(服务器)同时与两个客户端进行通信、就像多线程一样

 

期待您的回复

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您使用哪种类型的 TCP 堆栈、即 LwIP?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

        我是 TCP 协议的新用户,请指导我,我将发布我的源代码供您参考。

    UIP_init (空)

    #if UIP_TCP
    对于(c = 0;c < UIP_LISTENPORTS;+c){
    UIP_listenports[c]=0;

    对于(c = 0;c < uIP_conns;+c){
    uip_conns[c].tcpstateflags = uip_closed;

    #endif /* UIP_TCP */
    #if UIP_ACTIVE_OPEN
    lastport = 1024;
    #endif /* UIP_ACTIVE_OPEN */

    #if UIP_UDP
    对于(c = 0;c < uIP_udp_conns;+c){
    uip_udp_conns[c].lport = 0;

    #endif // UIP_UDP */

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    uip_connect (uip_ipaddr_t * rippaddr、u16_t rport)

    寄存器结构 uip_conn * conn、* cconn;

    /*查找未使用的本地端口。 *
    再说一次:
    ++lastport;

    if (lastport >= 32000){
    lastport = 4096;

    /*检查此端口是否已在使用中,如果已在使用,请尝试查找
    另一个。 *
    对于(c = 0;c < uIP_conns;+c){
    连接=&UIP_conns[c];
    if (conn->tcpstateflags!= uIP_closed &&
    con->lport =htons (lastport)){
    再去一次;

    连接= 0;
    对于(c = 0;c < uIP_conns;+c){
    cconn =&UIP_conns[c];
    if (cconn->tcpstateflags == uip_closed){
    连接= cconn;
    中断;

    if (cconn->tcpstateflags == uip_time_wait){
    if (conn ==0 ||
    cconn->timer > conn->timer){
    连接= cconn;


    if (conn = 0){
    返回0;

    连接->tcpstateflags = UIP_SYN_Sent;

    conn->snd_nxt[0]= iss[0];
    conn->snd_nxt[1]= iss[1];
    conn->snd_nxt[2]= iss[2];
    conn->snd_nxt[3]= iss[3];

    连接->初始化 ms= conn->MSS = UIP_tcp_MSS;

    conn->len = 1;SYN 的// TCP 长度为1。 *
    连接->nrtx = 0;
    conn->timer = 1;//下次发送 SYN。 *
    连接->RTO = UIP_RTO;
    conn->sa = 0;
    CONN -> SV = 16;// RTT 方差的初始值。 *
    conn->lport = htons (lastport);
    conn->rport = rport;
    uip_ipaddr_copy (&conn->ripaddr、ripaddr);

    返回 conn;

    #endif /* UIP_ACTIVE_OPEN && UIP_TCP */

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

    您好!

     我们不是 UIP TCP 协议栈的专家。 我认为、通过在 UIP 论坛中发布您的问题、您将获得最佳帮助和知识。 阅读有关 UIP 的 Wikipedia、它具有以下评论。 似乎不支持同时传输。 同样、UIP 专家将能够阐明这些功能。  

    IP 协议栈软件通常会保留不同 IP 数据包的多个副本、以进行传输、接收、并在需要重新发送时保留副本。 由于 UIP 仅使用一个数据包缓冲器、因此在使用存储器时经济实惠。 首先、它以半双工方式使用数据包缓冲器、然后再将其用于传输和接收。 此外、当 UIP 需要重新传输数据包时、它会以请求重新生成之前数据的方式调用应用程序代码。

    另一个奇怪的是 UIP 如何管理连接。 大多数 IP 实现在每个连接上有一个任务、该任务与连接另一端远程计算机中的一个任务进行通信。 在 UIP 中、假定不存在多任务操作系统。 连接保留在阵列中。 在每次调用中、UIP 都会尝试提供连接、对响应或发送数据的应用程序代码进行子例程调用。 连接数组的大小是可在重新编译 UIP 时调整的数字。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我没有听到你的反馈。 您是否能够解决问题并从 UIP 提供商处获得一些指导? 如前所述、我们在第三方 TCP 协议栈中并不是专家。 在我看来、在使用 UIP 的同时提供同步传输/接收时、似乎存在一些限制。 如果您已经解决了问题、那么问题就很好了、如果没有、我甚至会建议通过 UIP 使用 LwIP。 我对 UIP 的理解是、它非常紧凑、占用的程序空间和 RAM 空间很小。 最好将 UIP 用作以太网引导加载程序、而不是一个全面的应用程序。 如果您已经证明它可以正常工作、我可能会错。 在这种情况下、请与社区分享、因为我相信会有人从中受益。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我没有听到你的反馈。 希望您能够解决该问题。 我现在将关闭该线程。 如果您有新问题、您可以打开新主题。 如果您解决了问题、您还可以与社区分享您的方法和发现、让寻求相同解决方案的人受益。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的所有人:  

          我是 TCP 协议的新用户、我的要求-需要使用多线程。目前我使用队列逻辑、但它不能解决我的问题。所以我需要帮助。

    因此、我需要使用多线程的 TM4C1294NCPDT 示例代码。

    如果需要,我将在此处发布我的现有源代码,plz help me

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

    您好!

     如果您需要多线程支持、则可以更好地使用操作系统来管理线程。 如果没有操作系统、我就不能想到管理多线程的正确方法。 您可以参考许多 TI-RTOS 示例。 TI-RTOS 现在具有名为 NDK 的 TCP 堆栈。

     我建议您查看以下参考文献。

    有关 TI-RTOS 培训、请访问以下链接。 您可以找到视频和 PDF 培训幻灯片/示例

    对于 TM4C129的 TI-RTOS 示例、您可以使用 TI Resource Explorer 并查看许多示例。 下面的屏幕截图显示了一些以太网示例。

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

    您好!
    我希望您有机会参加 TI-RTOS 培训、并了解如何使用正确的操作系统来实现多线程支持-操作系统的目的是在多线程环境中处理任务调度。 我现在将关闭该线程。 您的问题越来越多的是软件管理、而不是 TM4C129的使用。 如果您的新问题偏离了原始问题、请打开一个新主题。