Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
我正在尝试通过将 eclipse PAHO 库添加到 TI-RTOS 库中的 TcpEcho 演示之一来编写 MQTT 发布器。 程序发送12个数据包、然后出现以下错误:
TI.SYSBIOS.family.ARM.m3/Hwi:第1095行:E_hardFault:Forced
TI.SYSBIOS.family.ARM.m3/Hwi:第1172行:E_BUSFault:PRECISERR:立即总线故障、确切的已知地址、地址:FFFFFFFF
在 PC = 0x0000de48的后台线程中发生异常。
内核0:ThreadType_Task 中发生异常。
任务名称:{unknown-instance-name}、句柄:0x20001898。
任务堆栈基地址:0x200018e8。
任务堆栈大小:0x800。
R0 = 0x200062fc R8 = 0xffffffff
R1 = 0x0000000d R9 = 0xffffffff
R2 = 0x00000001 R10 = 0xffffffff
R3 = 0x2000f53c R11 = 0xffffffff
R4 = 0xFFFF R12 = 0x00000001
R5=0x00000010 SP (R13)=0x20001ef0
R6 = 0x0000000A LR (R14)= 0x00006e6b
R7 = 0xffffffff PC (R15)= 0x0000de48
PSR = 0x61000000
ICSR = 0x00423803
MMFSR = 0x00
BFSR = 0x82
UFSR = 0x0000
HFSR = 0x40000000
DFSR = 0x0000000b
MMAR = 0xffffffff
BFAR = 0xffffffff
AFSR = 0x00000000
正在终止执行...
我尝试增加.cfg 中的堆栈大小、但这没有帮助
我的任务代码如下:
空 tcpHandler (UARg arg0、UARg arg1)
{
int clientfd;
int 服务器;
struct sockaddr_in localAddr;
ERROR_Block EB;
while (1){
system_printf ("tcpHandler:创建线程 clientfd =%d\n"、clientfd);
/* Init the Error_Block */
ERROR_INIT (&EB);
MQTTPacket_connectData 数据= MQTTPacket_connectData_initializer;
unsigned char buf[200];
MQTTString topicString = MQTTString_initializer;
unsigned char* payload ="MQTT 数据包消息";
int payloadlen = strlen((char*)payload);
int buflen = sizeof (buf);
data.clientID.Cstring ="me";
data.keepaliveInterval = 20;
data.清洁= 1;
int len = MQTTSerialize_connect (buf、buflen、&data);/* 1 */
topicString.cstring ="TivaMQTT";
len += MQTTSerialize_publish (buf + len、buflen - len、0、0、0、0、 0、topicString、有效载荷、payloadlen);/* 2 */
len += MQTTSerialize_disconnect (buf + len、buflen - len);/* 3 */
服务器=套接字(AF_iNet、SOCK_STREAM、IPPROTO_TCP);
localAddr.Sin_Family = AF_iNet;
localAddr.Sin_addr.s_addr = htonl (0xc6291ef1);
localAddr.sin 端口= htons (arg0);
connect (server、(struct socaddr *)&localAddr、sizeof (localAddr));
SEND (服务器、buf、len、0);
关闭(服务器);
Task_sleep (250);
}
}