Fatal Error on Zephyr (openThread) , Notifiaction Only, I can not debug this issue as my skill is not enough.

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;
}

Related