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/TM4C1292NCPDT:Modbus 从站协议栈与 TI NDK 集成

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623941/rtos-tm4c1292ncpdt-modbus-slave-stack-integration-with-ti-ndk

器件型号:TM4C1292NCPDT

工具/软件:TI-RTOS

您好!

我 正在将 Modbus 从堆栈与 TI NDK 集成。 在 Linux 环境中配置目标层时、我们必须执行如下所示的代码才能初始化通道。

void * TMWDEFS_GLOBAL Liniotarg_initChannel (
 const void *pUserConfig,
 TMWTARG_CONFIG * pTmwConfig)

 LINIO_CONFIG * pIOConfig =(LINIO_CONFIG *) pUserConfig;
 LINIO_CHANNEL *pLinIoChannel;

 如果(!LinIoContext.bStarted)
 {
#if LINIOTADG_SUPPING_TCP
   _LinuxSemCreate (&LinIoContext.tcpSemaphore);
   LinIoContext.pTcpChannels = TMWDEFS_NULL;
   LinIoContext.pTcpListeners = TMWDEFS_NULL;
   LinIoContext.bSocketThreadRunning = TMWDEFS_false;
   LinIoContext.bConnectThreadRunning = TMWDEFS_false;
   LinIoContext.socketThreadHandle = 0;
   LinIoContext.connectThreadHandle = 0;
#endif

#if LINIOTADG_SUPPING_232
   LinIoContext.pSerialChannels = TMWDEFS_NULL;
   _LinuxSemCreate(&LinIoContext.serialSemaphore);
#endif
   LinIoContext.bStarted = TMWDEFS_true;
 }

 pLinIoChannel =(LINIO_CHANNEL *) malloc (sizeof (LINIO_CHANNEL));
 if (pLinIoChannel == NULL)
   返回 TMWDEFS_NULL;

 pLinIoChannel->type = pIOConfig->type;
 switch (pIOConfig->type)
 {
#if LINIOTADG_SUPPING_232
 LINIO_TYPE_232案例:
   pLinIoChannel->pChannelInfo =(void *) lin232_initChannel (pIOConfig、pTmwConfig);
   中断;
#endif

#if LINIOTADG_SUPPING_TCP
 LINIO_TYPE_TCP 案例:
   pLinIoChannel->pChannelInfo =(void *) lintcp_initChannel (pIOConfig、pTmwConfig);
   中断;
#endif
 默认值:
   返回 TMWDEFS_NULL;
 }

 return (pLinIoChannel);

/*函数:lintcp_initChannel */
void * TMWDEFS_GLOBAL LINtcp_initChannel (
 const void *pUserConfig,
 TMWTARG_CONFIG * pTmwConfig)

 LINIO_CONFIG * pIOConfig =(LINIO_CONFIG *) pUserConfig;
 tcp_io_channel *pTcpChannel;

 pTcpChannel =(tcp_io_channel *) malloc (sizeof (tcp_io_channel));
 if (pTcpChannel =空)
   返回 TMWDEFS_NULL;

 memset (pTcpChannel、0、sizeof (tcp_io_channel));

 pTcpChannel->bChannelFree = TMWDEFS_false;
 pTcpChannel->dataSocket = invalid_socket;                                           //检查是否需要有效的套接字
 pTcpChannel->udpSocket = invalid_socket;

 pTcpChannel->ipPort = pIOConfig->lintcp.ipPort;
 pTcpChannel->mode = pIOConfig->lintcp.mode;
 // pTcpChannel->Role = pIOConfig->lintcp.role;

 strcpy (pTcpChannel->ipAddress、pIOConfig->lintcp.ipAddress);
 strcpy (pTcpChannel->chnlName、pIOConfig->linTCP.chnlName);

// pTcpChannel->validateUDPAddress = pIOConfig->lintcp.validateUDPAddress;
// pTcpChannel->validUDPAddress = 0;

 // strcpy (pTcpChannel->udpBroadcastAddress、pIOConfig->lintcp.udpBroadcastAddress);
// pTcpChannel->destUDPPort = pIOConfig->linTCP.destUDPPort;
// pTcpChannel->initUnsolUDPPort = pIOConfig->linTCP.initUnsolUDPPort;
// pTcpChannel->localUDPPort = pIOConfig->lintcp.localUDPPort;
 pTcpChannel->ipConnectTimeout = pIOConfig->lintcp.ipConnectTimeout;
 pTcpChannel->disconnectOnNewSyn = pIOConfig->lintcp.disconnectOnNewSyn;
// pTcpChannel->dualEndPointIpPort = pIOConfig->lintcp.dualEndPointIpPort;

 pTcpChannel->pChannelCallback = pTmwConfig->pChannelCallback;
 pTcpChannel->pChannelCallbackParam = pTmwConfig->pCallbackParam;
 pTcpChannel->pChannelReadyCallback = pTmwConfig->pChannelReadyCallback;
 pTcpChannel->pChannelReadyCbkParam = pTmwConfig->pChannelReadyCbkParam;

 tmw_TP_TakeSem (LinIoContext.tcpSemaphore);
 pTcpChannel->pNext = LinIoContext.pTcpChannels;
 LinIoContext.pTcpChannels = pTcpChannel;
 tmw_TP_ReleaseSem (LinIoContext.tcpSemaphore);

 返回 pTcpChannel;

我必须在 TI RTOS 环境中实现这一点。 请为我提供 相关指导。

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

    您可以参阅 TI-RTOS 中 TCP Echo 示例中的.cfg 文件、以了解如何配置 NDK 堆栈。 此外、有关更多详细信息、请参阅 NDK 的用户指南。

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