One more set of comments, regarding the changes that David made to my UART loopback code.
My original code did *not* have a delay between UART_DRV_SendDataBlocking and UART_DRV_ReceiveDataBlocking. David commented that I should pass NULL for the timeout instead of -1. If I have no delay and use NULL for the timeout, the receive call will immediately return before data is received, and will fail the integrity check.
If I take David's advice and add a OSA_TimeDelay(1) between the send and receive calls, the receive call correctly gets the data and the integrity check succeeds.
In my original code, without the OSA_TimeDelay(1) I could pass -1 for the timeout and the receive function would correctly block until the data was received. However, I had to have the MQX ISR installed and renamed first. I could run the code full speed, and when I set the breakpoint in the task, execution would halt as expected.
If I try removing the OSA_TimeDelay(1) and instead specify 100 for the receive timeout, I can single step through the code and it sends and receives properly. However, as soon as I resume execution, the task locks up.
I'll have to do some throughput tests, but having a 1ms interbyte delay is going to have significant effects on my data throughput. I'll probably have to play with ticks a little to see if the results are reliable. Otherwise, I might have to enable the MQX interrupt.