TMS320F28388D: All task is dead when so many interrupt evens occur in CM core using with FreeRTOS


I am testing with a project code in CM cores of F28388D MCU. My project using FreeRTOS kernel for CM core from C2000ware_SDK.

I am having a bug that I have no idea to fix it. There are 1 ISR_Handler and 4 tasks in my project.

  • ISR_handle for UART interrupt ( trigger by uart rx fifo full level 7/8 (14 bytes) , uart rx time out and uart tx done )

  • 4 Tasks: 2 task with priority 2, 1 task with priority 1 and idle task.

I send a packet msg to UART RX , with interrupt uart rx fifo full (level RX 7/8 fifo) and uart rx time out and I parse msg from packet in UART_ISR_handler.

I realize when I send a packet with the number of bytes which make about < 15 times total rx fifo trigger and rx time out. Everything is still working normally.

If the packer msg has number of bytes which make about > 15 times total rx fifo trigger and rx time out. All tasks managed by FreeRTOS kernel is dead. And the program is stuck in fault_ISR interrupt.

I have checked whether stacks are overflow? But it seem not.

I also read the freeRTOS doc, and focus on chapter 6: Interrupt management - interrupt nesting for arm cortex M and set the priority of UART interrupt is 6 < configMAX_SYSCALL_INTERRUPT_PRIOTITY (5 <5) because in the interrupt_handle i have use freertos API with __ FromISR.

It feels like there are too many interrupt trigger that may kill the task of RTOS?

Can you give me any comments or suggestions?

Can you post some maybe stripped code including queue/task creation. Hard to tell without…
I guess you also have configASSERT enabled along with stack overflow checking.
Which FreeRTOS version are you using ?