Dear
I developing "openThread " Device.
Env: nRF Connect SDK 2.4.0 (Zephyr RTOS) / Board: nRF52840DK
By the way, When i aging UDP TX, RX (TX Interval 110 ms , I tested variable Interval, also)(Data Length is 101Byte)
I use nRF52840DK Board and the number of 4.
It construct "Thread Network"
Radio TX power is -20dbm.
Distance between Boards is near (approximately 10 cm or more).
Now, i run app on single Thread (All procedure is in main() routine )
Sometimes , It arised "Fatal Error" and Reset. (after 1 hour or more)
I think it is only dependant TX.
While receiving only is nothing as i known.
I will attach 3 captureed Log
00:36:14.037,780] <err> os: ***** MPU FAULT ***** [00:36:14.037,811] <err> os: Instruction Access Violation [00:36:14.037,811] <err> os: r0/a1: 0x00000000 r1/a2: 0xfffffff8 r2/a3: 0x20003cd8 [00:36:14.037,841] <err> os: r3/a4: 0x2001ad80 r12/ip: 0x00000000 r14/lr: 0x000591a3 [00:36:14.037,841] <err> os: xpsr: 0x20000000 [00:36:14.037,872] <err> os: s[ 0]: 0x00000000 s[ 1]: 0xffffffff s[ 2]: 0x00000000 s[ 3]: 0x00000000 [00:36:14.037,872] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000 [00:36:14.037,902] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000 [00:36:14.037,902] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000 [00:36:14.037,933] <err> os: fpscr: 0x20003118 [00:36:14.037,963] <err> os: Faulting instruction address (r15/pc): 0x2001ad80 [00:36:14.037,994] <err> os: >>> ZEPHYR FATAL ERROR 20: Unknown error on CPU 0 [00:36:14.038,024] <err> os: Current thread: 0x20002ff0 (openthread) [00:36:14.233,337] <err> fatal_error: Resetting system ------------------------------------------- [01:27:27.749,664] <err> os: ***** BUS FAULT ***** [01:27:27.749,664] <err> os: Precise data bus error [01:27:27.749,694] <err> os: BFAR Address: 0x33323140 [01:27:27.749,725] <err> os: r0/a1: 0x33323130 r1/a2: 0x00000000 r2/a3: 0x20008b10 [01:27:27.749,725] <err> os: r3/a4: 0x00000000 r12/ip: 0x20008160 r14/lr: 0x00061d01 [01:27:27.749,725] <err> os: xpsr: 0x01000000 [01:27:27.749,755] <err> os: s[ 0]: 0x00000000 s[ 1]: 0x00000000 s[ 2]: 0x00000000 s[ 3]: 0x00000000 [01:27:27.749,786] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000 [01:27:27.749,786] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000 [01:27:27.749,816] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000 [01:27:27.749,816] <err> os: fpscr: 0x00000001 [01:27:27.749,847] <err> os: Faulting instruction address (r15/pc): 0x00058c68 [01:27:27.749,877] <err> os: >>> ZEPHYR FATAL ERROR 25: Unknown error on CPU 0 [01:27:27.749,908] <err> os: Current thread: 0x20002ff0 (openthread) [01:27:27.962,677] <err> fatal_error: Resetting system ------------------------------------------------------------- [00:33:37.239,562] <err> os: ***** BUS FAULT ***** [00:33:37.239,593] <err> os: Precise data bus error [00:33:37.239,593] <err> os: BFAR Address: 0x33323140 [00:33:37.239,624] <err> os: r0/a1: 0x33323130 r1/a2: 0x20008b20 r2/a3: 0x2001bff4 [00:33:37.239,654] <err> os: r3/a4: 0x20007c24 r12/ip: 0x200181e0 r14/lr: 0x00058ceb [00:33:37.239,654] <err> os: xpsr: 0x21000000 [00:33:37.239,685] <err> os: s[ 0]: 0x00000000 s[ 1]: 0x00000000 s[ 2]: 0x00000000 s[ 3]: 0x00000000 [00:33:37.239,685] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000 [00:33:37.239,715] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000 [00:33:37.239,715] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000 [00:33:37.239,746] <err> os: fpscr: 0x20018250 [00:33:37.239,746] <err> os: Faulting instruction address (r15/pc): 0x00058c68 [00:33:37.239,807] <err> os: >>> ZEPHYR FATAL ERROR 25: Unknown error on CPU 0 [00:33:37.239,837] <err> os: Current thread: 0x20002ff0 (openthread) [00:33:37.454,681] <err> fatal_error: Resetting system
About This, I can not debug .
I only notify to Nordic Enginners. It's solution is out of my skill as i think.
My UDP send function source is
** It is not my original code. I refered other sample source.
uint8_t config_ot_udp_send(otInstance *aInstance , uint8_t *tx_buf, uint16_t tx_len, uint8_t udp_tx_dest) { otError error = OT_ERROR_NONE; otMessage * message; otMessageInfo messageInfo; otIp6Address destinationAddr; //static char UDP_PAYLOAD_BUF[UDP_BUFF_LEN_MAX] = {0,}; memset(&messageInfo, 0, sizeof(messageInfo)); if(udp_tx_dest == UDP_DATA_TARGET_FTD_MED) { otIp6AddressFromString(UDP_DEST_ADDR1, &destinationAddr); HNT_LOG_INF("UDP_TX_DEST:1 FTD+MED"); } else if(udp_tx_dest == UDP_DATA_TARGET_FTD_BR) { otIp6AddressFromString(UDP_DEST_ADDR2, &destinationAddr); //HNT_LOG_INF("UDP_TX_DEST:2 FTD+BR"); } else { otIp6AddressFromString(UDP_DEST_ADDR2, &destinationAddr); HNT_LOG_INF("UDP_TX_DEST:default 2 FTD+BR"); } messageInfo.mPeerAddr = destinationAddr; messageInfo.mPeerPort = TRX_UDP_PORT_NO; message = otUdpNewMessage(aInstance, NULL); otEXPECT_ACTION(message != NULL, error = OT_ERROR_NO_BUFS); // ***testBench //memcpy(UDP_PAYLOAD,"Hello,World second!!", 20); //error = otMessageAppend(message, UDP_PAYLOAD, 20); error = otMessageAppend(message, tx_buf, tx_len); otEXPECT(error == OT_ERROR_NONE); error = otUdpSend(aInstance, &sUdpSocket, message, &messageInfo); //ot_set_trx_data_state_cnt_inc(); exit: if (error != OT_ERROR_NONE && message != NULL) { otMessageFree(message); HNT_LOG_ERR("UDP_TX:ERR"); return B_FALSE; } return B_TRUE; }