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.

Starterware DDR test enhancement

Other Parts Discussed in Thread: OMAP-L138

OMAP-L138

CCS 6.1.1

Starterware 1.10.04.01

All:

In our board testing, we are using the ARM to test DDR memory prior to loading DSP code into it from NAND flash memory.

There is an enhancement request to be able to "immediately stop" the DDR test if an "ESC" key has been depressed.

I was able to make changes to the UartEcho.c to detect an "ESC" and print an "E" to the UART when it was detected.

However, when I tried to make changes to the DDR memory code, as soon as I enabled the UART interrupt, the normal

flow of the test output stopped, and about the only thing I was able to see was the "echo" of characters.

Present DDR test did not use UART interrupts.

The UartEcho code works with 3 interrupt flags: 

UART_INT_LINE_STAT 
UART_INT_TX_EMPTY 
UART_INT_RXDATA_CTI

If I am trying to monitor only RX, do I need to set up the first two flags?

Thanks for any help!

  • Dear Todd Anderson,
    You can also put a while(1) loop in UartEcho project and if someone press ESC key then it should come out from while(1) (i.e break), if it works then DDR test project might affect the UART interrupts.
  • I did manage to get UART receive interrupts working during the DDR testing, and allow for an exit from the test.
    I am now working on doing the same for NAND Flash testing, which is turning into a more difficult challenge.
    Setting up the same function call in "NAND_test( )" results in no interrupts for UART RX.

    1. I added two function calls prior to DDR_test( ) in main:

    //Enable AINTC to handle interrupts. Also enable IRQ interrupt in ARM
    // processor.
    SetupInt();

    // Configure AINTC to receive and handle UART interrupts.
    ConfigureIntUART();

    DDR_test();

    2. Inside DDR_test( ) I added

    IntIRQDisable(); // added just before call to get a value for menu.
    choice = UARTGetNum();

    3. In DDR_test( )
    // Banner output...
    UARTPuts("\nARM: Starting DDR test: ", -1);

    #if 1 // TESTING ESC INTERRUPT
    IntIRQEnable();

    /* Preparing the 'intFlags' variable to be passed as an argument.*/
    intFlags |= UART_INT_RXDATA_CTI;

    /* Enable the Interrupts in UART.*/
    UARTIntEnable(SOC_UART_2_REGS, intFlags);
    #endif

    This allows me to see characters input from the keyboard as the test is progressing.

    4. If one of those characters is an escape, a flag is set. When the flag is set, I exit the test:

    // Test code for ESC:
    if (escape == 1)
    {
    IntIRQDisable();
    UARTPuts("\n\n Test Stopped by User ESCAPE",-1);
    return 0;
    }

    I am trying to set up the same thing for NAND_test( ), but so far no interrupts...
  • Have you created a new project for NAND test or adding NAND test function in exist code ?
    The code seems to be fine, it should work for NAND too.

    What kind of test you are doing for NAND ?
    If its write->read->verify then, don't write anything, inside nand test function just put while(1) loop or some executing dummy things and parallely check for UART character (ESC) , if you able to get the UART char then NAND read/write function could lead to not getting interrupts.
    Like try to disable some stuff and see if you able get any interrupts.