Hello everybody !
I've just updated my FreeRTOS from v3 to v6. A big step !!
Everything work fine except serial ports. I've tried to use my serial.c files from FreeRTOS V3.2.3 and my ColdFire connected to a GPS. But instead of reveiving :
$ G \r \n $ G M \r \n $ P \r \n $ R M C \r \n $ G P \r \n ...
I don't understand why!
I've also tried with the serial.c file from FreeRTOS V6.0.2 but it doesn't work. I've run the debugger but it stay blockeb on
signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
/* Only one port is supported. */
( void ) pxPort;
/* Get the next character from the buffer. Return false if no characters
are available or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
>>>>> return pdTRUE; <<<<<<<<<< BLOCKED HERE
Does anyone has an idea of what we can do to resolve the problem and work with new versions of FreeRTOS ?
Thank you very much for you help !!
One thing to watch out for is the change that was made to xQueueSendFromISR(). This is going back in time some now and this is the only reference I can find to the change (from the history log).
“*** VERY IMPORTANT INFORMATION ON UPGRADING TO FREERTOS.ORG V5.0.0 ***
The parameters to the functions xQueueSendFromISR(), xQueueSendToFrontFromISR(),
xQueueSendToBackFromISR() and xSemaphoreGiveFromISR() have changed. You must
update all calls to these functions to use the new calling convention! Your
compiler might not issue any type mismatch warnings!”
Perhaps if you posted more of the code, like the ISR that is filling the queue someone might see something.
Another point would be could the task reading from the queue be too slow and missing most of the characters?
Hello! Thank you for the answer.
Where can I copy/past the ISR to here ?
The task should no be too slow for the serial COM, it use to work normally with FreeRTOS v3