Hi,
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?