Hello,
I have loaded and am debugging a UART application on AM335x EVM using XDS510USB JTAG. I observe one output when the Memory Browser window is open and a different output when the window is closed. A code snippet of the relevant code is given below.
static void UARTIsr(void)
{
static unsigned int txStrLength = sizeof(txArray);
static unsigned int count = 0;
unsigned char rxByte = 'A';
unsigned int intId = 0;
/* Checking ths source of UART interrupt. */
intId = UARTIntIdentityGet(SOC_UART_0_REGS);
switch(intId)
{
case UART_INTID_TX_THRES_REACH:
------------------------------
------------------------------
break;
case UART_INTID_RX_THRES_REACH:
/* Reads data from Receive Holding Register (RHR). */
rxByte = (unsigned char) HWREG(SOC_UART_0_REGS + UART_RHR);
/* Transmit the received byte. */
HWREG(SOC_UART_0_REGS + UART_THR) = rxByte;
break;
default:
break;
}
}
To brief about this code, this is a UART ISR. When the RX condition in UART is active, that is, when UART receives at least one byte of data, the UART_INTID_RX_THRESH_REACH branch is taken.
I applied a breakpoint in the line colored in blue. As soon as the breakpoint would be hit, I used to give a run. On a serial console application (Tera Term) running on the PC (host machine), I entered the characters a to z. I observed two different outputs:
- When the Memory Browser window was open, I observed that the alternate alphabets only got displayed on the Tera Term. That is, the output was 'bdfhjlnprtvxz'.
- When the Memory Browser window was closed, I observed the complete expected output, that is, a to z.
I require your help to explain this phenomenon. One of our customers observed something like this. I suspect that Data Acquisition process running in the background to update the Memory Browser window is consuming time because of which CCS is not able to manage the debugging. However I want your expert advice. Please revert if you need any more information.
A quick reply is highly appreciated. Thanks in advance for your effort.
Regards.
Gurudutt.