This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RTOS/TMDSEVM572X: System hangs on UART read

Part Number: TMDSEVM572X

Tool/software: TI-RTOS

Hi,

I am working with GP EVMAM572x

PDK: pdk_am57xx_1_0_5

RTOS: processor_sdk_rtos_am57xx_3_02_00_05

I configure UART3 to read data in callback mode or interrupt mode, for this i did following modification in NIMU basic example project.

1. initialise UARTa as follows

void InitialiseUART_3()
{
int32_t addrScanPrompt;//,byterd;
//char HeadingMark_1, prv_HeadingMark_1;
//UART_Handle uart = NULL;
UART_Params uartParams;
/* UART SoC init configuration */
UART_HwAttrs uart_cfg;
//SemaphoreP_Params semParams;
UART_init();
/***************************************UART_In_Callback();***************/
/* Create call back semaphore */
/*UART_osalSemParamsInit(&semParams);
semParams.mode = SemaphoreP_Mode_BINARY;
callbackSem = UART_osalCreateBlockingLock(0, &semParams);*/
/* Get the default UART init configurations */
UART_socGetInitCfg(UART_INSTANCE, &uart_cfg);
uart_cfg.edmaHandle = NULL;
uart_cfg.dmaMode = FALSE;
uart_cfg.loopback = FALSE;

UART_socSetInitCfg(UART_INSTANCE, &uart_cfg);

/* Set callback mode for read */
UART_Params_init(&uartParams);
uartParams.baudRate = 76800;
uartParams.parityType= UART_PAR_EVEN;
uartParams.readCallback = UART_callback;
uartParams.readMode = UART_MODE_CALLBACK;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
/*uartParams.writeCallback = NULL;
uartParams.writeMode = UART_MODE_CALLBACK;*/

uart = UART_open(UART_INSTANCE, &uartParams);
if (uart == NULL)
{
// goto Err;
}
/*************************************************************************/
Task_sleep(100);
addrScanPrompt= (int32_t)scanPrompt;
if(UART_read(uart, (void *)addrScanPrompt,INPUT_LENGTH)==UART_ERROR)
{
//goto Err;
}

Task_sleep(100);
}

 2. written a callbackfunction

void UART_callback(UART_Handle handle, void *buf, size_t count)
{
A_Cnt=A_Cnt+count;
NextSerialData=1;

}

3. Call a read function in task while loop

void Read_A_Cnt()
{

if(NextSerialData)

{
NextSerialData=0;

/*UART_putNum_Anjana(A_Cnt);
UART_write(uart, &scanPrompt,5); //Task_sleep(100);*/
//Semaphore_pend( callbackSem, BIOS_WAIT_FOREVER );

//memset(scanPrompt, 0, sizeof(scanPrompt));
addrScanPrompt_1= (int32_t)scanPrompt;
UART_read(uart, (void *)addrScanPrompt_1,INPUT_LENGTH);
//UART_osalPendLock(callbackSem, SemaphoreP_WAIT_FOREVER);

if(A_Cnt <=500)

{A_Cnt =0;}

}

}

But after some time the execution hangs. i am Not able to identify the issue. Please help me to identify. Is it the issue with UART3 as it has been used as debug port by default?

Thanks,

Anjana Pathak