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.

How move UART2 to MCBSP3 pads AM3517 WEC7

Other Parts Discussed in Thread: SYSCONFIG

 I am try use UART2 on my custom board on MCBSP3 pins.

 for it i am remaked bsp_padcfg.h like this:

//#define UART2_PADS \
//    PAD_ENTRY(UART2_TX , INPUT_DISABLED | MUXMODE(0))      \
//    PAD_ENTRY(UART2_RTS, INPUT_DISABLED | MUXMODE(0))      \
//    PAD_ENTRY(UART2_CTS, INPUT_ENABLED | PULL_RESISTOR_ENABLED | PULLUP_RESISTOR | MUXMODE(0))      \
//    PAD_ENTRY(UART2_RX , INPUT_ENABLED | PULL_RESISTOR_ENABLED | PULLUP_RESISTOR | MUXMODE(0))     

#define UART2_PADS \
    PAD_ENTRY(MCBSP3_CLKX , INPUT_DISABLED | MUXMODE(1))      \
    PAD_ENTRY(MCBSP3_DR, INPUT_DISABLED | MUXMODE(1))      \
    PAD_ENTRY(MCBSP3_DX, INPUT_ENABLED | PULL_RESISTOR_ENABLED | PULLUP_RESISTOR | MUXMODE(1))      \
    PAD_ENTRY(MCBSP3_FSX , INPUT_ENABLED | PULL_RESISTOR_ENABLED | PULLUP_RESISTOR | MUXMODE(1))   

But my uart2 doesn't working. It can send bytes but not receive.

it looks like I missed something in the initialization
please help

  • The modifications you made seem fine but there might some other reasons why you can send but not receive data:

     - Some driver overrides you mux configuration (should not happen if you properly modified the reference BSP for your custom board)

     - Which test application are you using? Have tested this same application with another working UART?

     - What cable do you use and what device is on the other side?

     - Do you use flow control and is the device on the other side managing flow control and correctly wired to the CTS/RTS signals?

  • 2605.serail_uart.zip Hello thanks you for answer.
    i am trying add some debugging code
    in function
     HWOpen()
    i add this code in pdd.c  (wince700\platform\common\src\soc\COMMON_TI_V1\COMMON_TI\SERIAL\UART\pdd.c):

        // configure uart port with default settings
        SetBaudRate(pPdd, pPdd->dcb.BaudRate);
        // Enable interrupts (no TX interrupt)
        pPdd->intrMask |= UART_IER_LINE|UART_IER_MODEM;
        OUTREG8(&pPdd->pUartRegs->IER, pPdd->intrMask);
        // Update line & modem status
        ReadModemStat(pPdd);
    //======================= debug begin
    {
        
        PHYSICAL_ADDRESS pa;
        static OMAP_PRCM_CORE_CM_REGS               *pOMAP_PRCM_CORE_CM_REGS;
        static OMAP_PRCM_CLOCK_CONTROL_CM_REGS      *pOMAP_PRCM_CLOCK_CONTROL_CM_REGS;
        static OMAP_SYSC_PADCONFS_REGS              *pConfig;
        static OMAP_GPIO_REGS             *pGpio_reg;
        static OMAP_PRCM_PER_CM_REGS         *pPCRM_PER_reg;

        pa.QuadPart      = OMAP_PRCM_PER_CM_REGS_PA;
        pPCRM_PER_reg = (OMAP_PRCM_PER_CM_REGS *)MmMapIoSpace(pa, sizeof(OMAP_PRCM_PER_CM_REGS), FALSE);

        pa.QuadPart      = OMAP_PRCM_CORE_CM_REGS_PA;
        pOMAP_PRCM_CORE_CM_REGS = (OMAP_PRCM_CORE_CM_REGS *)MmMapIoSpace(pa, sizeof(OMAP_PRCM_CORE_CM_REGS), FALSE);

        pa.QuadPart      = OMAP_PRCM_CLOCK_CONTROL_CM_REGS_PA;
        pOMAP_PRCM_CLOCK_CONTROL_CM_REGS = (OMAP_PRCM_CLOCK_CONTROL_CM_REGS*)MmMapIoSpace(pa, sizeof(OMAP_PRCM_CLOCK_CONTROL_CM_REGS), FALSE);

        pa.QuadPart   = OMAP_SYSC_PADCONFS_REGS_PA;
        pConfig       = (OMAP_SYSC_PADCONFS_REGS *)MmMapIoSpace(pa, sizeof(OMAP_SYSC_PADCONFS_REGS), FALSE);

        pa.QuadPart       = OMAP_GPIO5_REGS_PA;
        pGpio_reg           = (OMAP_GPIO_REGS *)MmMapIoSpace(pa, sizeof(OMAP_GPIO_REGS), FALSE);


        RETAILMSG(1,(TEXT("CONTROL_PADCONF_MCBSP3_FSX  uart2_rx   (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_MCBSP3_FSX,  pConfig->CONTROL_PADCONF_MCBSP3_FSX  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_MCBSP3_CLKX uart2_tx     (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_MCBSP3_CLKX,  pConfig->CONTROL_PADCONF_MCBSP3_CLKX  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_MCBSP3_DR   uart2_rts     (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_MCBSP3_DR,  pConfig->CONTROL_PADCONF_MCBSP3_DR  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_MCBSP3_DX   uart2_cts     (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_MCBSP3_DX,  pConfig->CONTROL_PADCONF_MCBSP3_DX  ));

        RETAILMSG(1,(TEXT("CONTROL_PADCONF_UART2_CTS       (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_UART2_CTS,  pConfig->CONTROL_PADCONF_UART2_CTS  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_UART2_RTS        (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_UART2_RTS,  pConfig->CONTROL_PADCONF_UART2_RTS  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_UART2_TX        (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_UART2_TX,  pConfig->CONTROL_PADCONF_UART2_TX  ));
        RETAILMSG(1,(TEXT("CONTROL_PADCONF_UART2_RX        (0x%x) 0x%x\r\n"),&pConfig->CONTROL_PADCONF_UART2_RX,  pConfig->CONTROL_PADCONF_UART2_RX  ));


        RETAILMSG(1,(TEXT("CM_FCLKEN_PER          (0x%x) 0x%x\r\n\r\n"),&pPCRM_PER_reg->CM_FCLKEN_PER,   pPCRM_PER_reg->CM_FCLKEN_PER ));
        RETAILMSG(1,(TEXT("CM_ICLKEN_PER          (0x%x) 0x%x\r\n\r\n"),&pPCRM_PER_reg->CM_ICLKEN_PER,   pPCRM_PER_reg->CM_ICLKEN_PER ));
        RETAILMSG(1,(TEXT("CM_IDLEST_PER          (0x%x) 0x%x\r\n\r\n"),&pPCRM_PER_reg->CM_IDLEST_PER,   pPCRM_PER_reg->CM_IDLEST_PER ));
        RETAILMSG(1,(TEXT("CM_AUTOIDLE_PER        (0x%x) 0x%x\r\n\r\n"),&pPCRM_PER_reg->CM_AUTOIDLE_PER,   pPCRM_PER_reg->CM_AUTOIDLE_PER ));

        RETAILMSG(1,(TEXT("TEMPORARY set loop back mode  pUartRegs->MCR = %x\r\n"),pPdd->pUartRegs->MCR));
        SETREG8(&pPdd->pUartRegs->MCR, UART_MCR_LOOPBACK_EN);
        RETAILMSG(1,(TEXT("TEMPORARY set loop back mode  pUartRegs->MCR = %x\r\n"),pPdd->pUartRegs->MCR));

        RETAILMSG(1,(TEXT("pGpio_reg->OE          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->OE,   pGpio_reg->OE ));
        RETAILMSG(1,(TEXT("pGpio_reg->DATAIN          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->DATAIN,   pGpio_reg->DATAIN ));
        RETAILMSG(1,(TEXT("pGpio_reg->WAKEUPENABLE          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->WAKEUPENABLE,   pGpio_reg->WAKEUPENABLE ));
        RETAILMSG(1,(TEXT("pGpio_reg->DEBOUNCENABLE          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->DEBOUNCENABLE,   pGpio_reg->DEBOUNCENABLE ));
        RETAILMSG(1,(TEXT("pGpio_reg->DEBOUNCINGTIME          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->DEBOUNCINGTIME,   pGpio_reg->DEBOUNCINGTIME ));
        RETAILMSG(1,(TEXT("pGpio_reg->SYSCONFIG          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->SYSCONFIG,   pGpio_reg->SYSCONFIG ));
        RETAILMSG(1,(TEXT("pGpio_reg->REVISION          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->REVISION,   pGpio_reg->REVISION ));
        RETAILMSG(1,(TEXT("pGpio_reg->CTRL          (0x%x) 0x%x\r\n\r\n"),&pGpio_reg->CTRL,   pGpio_reg->CTRL ));

        
    }

    //======================= end debug

        LeaveCriticalSection(&pPdd->hwCS);
        rc = TRUE;

    cleanUp:
        DEBUGMSG(ZONE_OPEN||ZONE_FUNCTION, (L"-HWOpen(rc = %d)\r\n", rc));

        return rc;




    this code used for check Pad Functional Multiplexing and Configuration regs and i trying loopbacking RX on TX.
    this code executed then in my application program then calling function CreateFile()

     hDrv2=CreateFile(L"COM2:",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
     

    now how my application looks:
    this is just simple code for sent and then read COM2.
     
    #include "stdafx.h"
    #define LEN_FOR_CHECK 20 //
    #define SLEEP_TIME 1000
    #define TIMEOUT 2000
    int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
    {

    DWORD dwWritten;
    DWORD dwRead;
    unsigned char tcTemp1[LEN_FOR_CHECK];
    DCB PortDCB;
    HANDLE hDrv2;



    int ErrorLevel=0;
    COMMTIMEOUTS TimeOUTs;
    int result;


        hDrv2=CreateFile(L"COM2:",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
        
        if (hDrv2==0)
            ErrorLevel++;
        




    // Initialize the DCBlength member.
    PortDCB.DCBlength = sizeof (DCB);

    // Get the default port setting information.
    GetCommState (hDrv2, &PortDCB);

    // Change the DCB structure settings.
    PortDCB.BaudRate = 300;              // Current baud
    PortDCB.fBinary = TRUE;               // Binary mode; no EOF check
    PortDCB.fParity = TRUE;               // Enable parity checking
    PortDCB.fOutxCtsFlow = FALSE;         // No CTS output flow control
    PortDCB.fOutxDsrFlow = FALSE;         // No DSR output flow control
    PortDCB.fDtrControl = FALSE;
                                          // DTR flow control type
    PortDCB.fDsrSensitivity = FALSE;      // DSR sensitivity
    PortDCB.fTXContinueOnXoff = FALSE;     // XOFF continues Tx
    PortDCB.fOutX = FALSE;                // No XON/XOFF out flow control
    PortDCB.fInX = FALSE;                 // No XON/XOFF in flow control
    PortDCB.fErrorChar = FALSE;           // Disable error replacement
    PortDCB.fNull = FALSE;                // Disable null stripping
    PortDCB.fRtsControl = RTS_CONTROL_TOGGLE;
                                          // RTS flow control
    PortDCB.fAbortOnError = FALSE;        // Do not abort reads/writes on
                                          // error
    PortDCB.ByteSize = 8;                 // Number of bits/byte, 4-8
    PortDCB.Parity = 0;            // 0-4=no,odd,even,mark,space
    PortDCB.StopBits = 0;        // 0,1,2 = 1, 1.5, 2


    // Configure the port according to the specifications of the DCB
    // structure.

    if (!SetCommState (hDrv2, &PortDCB))
    {
        // Could not configure the serial port.
        printf("Failed to set DCB COM2  \r\n\r\n");
        ErrorLevel++;
    }
        PurgeComm(hDrv2,PURGE_TXCLEAR);    




        GetCommTimeouts(hDrv2,&TimeOUTs);
        TimeOUTs.ReadIntervalTimeout=TIMEOUT;
            TimeOUTs.ReadTotalTimeoutMultiplier = 10;
            TimeOUTs.ReadTotalTimeoutConstant = 2000;

        SetCommTimeouts(hDrv2,&TimeOUTs);

        
        
        printf("TU \r\n");    



        tcTemp1[0]= 0xEE;
        WriteFile(hDrv2,tcTemp1,1,&dwWritten,NULL);    

        tcTemp1[0]= 0x00;
        Sleep(1000);

        result = ReadFile(hDrv2,tcTemp1,LEN_FOR_CHECK,&dwRead,NULL);
            
            if(result==0)
            {
            printf("Failed ReadFile COM2  \r\n");
            }
        
            printf("ReadFile dwRead=%d  \r\n",dwRead);

        printf("tcTemp1[0] = %x  \r\n",tcTemp1[0]);
        
        CloseHandle(hDrv2);

    return 0;
    }
     

    in reginit.ini i have:

    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\UART2]
        "Prefix"="COM"
        "Dll"="omap_uart.dll"
        "DeviceArrayIndex"=dword:2
        "Index"=dword:2
        "Order"=dword:9
            "MemBase"=multi_sz:"4806C000"
            "MemLen"=multi_sz:"00000400"    
        "PowerFlags"=dword:00000103         ; send pre/post device state changes
        "RxBuffer" = dword:2000
        ;"TxDmaRequest"=dword:31                       ; S_DMA_48 TX DMA Request Line, use ffffffff to disable TX DMA
        "TxDmaRequest"=dword:ffffffff                 ; TxDma has issues after RX of break, disabled with ffffffff
        "TxDmaBufferSize"=dword:2000                  ; Size of DMA transmit buffer
        "RxDmaRequest"=dword:32                       ; S_DMA_49 RX DMA Request Line, use ffffffff to disable RX DMA
        "RxDmaBufferSize"=dword:2000                  ; Size of DMA receive buffer
        "RtsCtsEnable"=dword:0                        ; 1=enable RTS/CTS handshake support, 0=disable
        "HWMode"=dword:0                              ; Use hardware auto RTS/CTS
        ; PMCLASS_PMEXT_GUID, CE_DRIVER_POWER_MANAGEABLE_GENERIC_GUID
        "IClass"=multi_sz:"{0AE2066F-89A2-4D70-8FC2-29AEFA68413C}",
                          "{A32942B7-920C-486b-B0E6-92A702A99B35}"





    now look on debug output and output from application:


    then i first time run application i got this in telnet:

    Welcome to the Windows CE Telnet Service on Compact

    Pocket CMD v 7.00
    \> cd nandflash
    \nandflash> tc2.exe
    TU
    ReadFile dwRead=1
    tcTemp1[0] = ee
    \nandflash>

    in debug teraterm (attached to UART3) i have this:

    PID:00400002 TID:03070016 +COM_Open handle xCC8470E0, access xC0000000, share x0
    PID:00400002 TID:03070016 COM_Open: Access permission handle granted xCD7CEA20
    PID:00400002 TID:03070016 COM_Open: First open : Do Init xCD7CEA20
    PID:00400002 TID:03070016 COM_Open: Starting DispatchThread xCD7CEA20
    PID:00400002 TID:03070016 Initializing interrupt 0x15, 0xD90023
    PID:00400002 TID:03070016 Spinning threadCC8470E0
    PID:00400002 TID:03070016 Created receive thread 2D2001F
    PID:00400002 TID:03070016 +HWSetDCB(0xcc847200, 0xcc847140
    PID:00400002 TID:03070016 -HWSetDCB(rc = 0)
    PID:00400002 TID:03070016 +HWSetCommTimeouts()
    PID:00400002 TID:03070016 -HWSetCommTimeouts()
    PID:00400002 TID:03070016 +HWOpen(0xcc847200)
    PID:00400002 TID:03070016 HWOpen - Membase=0x4806c000
    PID:00400002 TID:03070016 UART:SetPower: D0 (curDx=D3)
    PID:00400002 TID:03070016 here5
    PID:00400002 TID:03070016 here6
    PID:00400002 TID:03070016 here7
    PID:00400002 TID:03070016 +SetWordLength(8)
    PID:00400002 TID:03070016 -SetWordLength()=1
    PID:00400002 TID:02C2001E Entered SerialDispatchThread CC8470E0
    PID:00400002 TID:02C2001E Spinning in dispatch thread CC8470E0 C4451290
    PID:00400002 TID:02C2001E Event D90023, 21
    PID:00400002 TID:03070016 +SetStopBits(1)
    PID:00400002 TID:03070016 -SetStopBits()=1
    PID:00400002 TID:03070016 +SetParity(0)
    PID:00400002 TID:03070016 -SetParity()=1
    PID:00400002 TID:03070016 UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc900
    00   nMddRxRIndex= 0xccc90000
    PID:00400002 TID:03070016 (bAllClear == TRUE)&& (nMddRxPosHead = nRxDmaBuffer)
    PID:00400002 TID:03070016 +SetAutoIdle(1)
    PID:00400002 TID:03070016 -SetAutoIdle()
    PID:00400002 TID:03070016 +SetBaudRate(rate:9600,membase:0x4806c000)
    PID:00400002 TID:03070016 -SetBaudRate()=1
    PID:00400002 TID:03070016 +ReadModemStat()
    PID:00400002 TID:03070016 -ReadModemStat(e0)
    PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_FSX  uart2_rx   (0xcd940172) 0x119
    PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_CLKX uart2_tx     (0xcd940170) 0x1
    PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_DR   uart2_rts     (0xcd94016e) 0x1
    PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_DX   uart2_cts     (0xcd94016c) 0x119
    PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_CTS       (0xcd940174) 0x107
    PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_RTS        (0xcd940176) 0x107
    PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_TX        (0xcd940178) 0x107
    PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_RX        (0xcd94017a) 0x107
    PID:00400002 TID:03070016 CM_FCLKEN_PER          (0xcd910000) 0x3e808

    PID:00400002 TID:03070016 CM_ICLKEN_PER          (0xcd910010) 0x3e808

    PID:00400002 TID:03070016 CM_IDLEST_PER          (0xcd910020) 0x17f7

    PID:00400002 TID:03070016 CM_AUTOIDLE_PER        (0xcd910030) 0x3ffff

    PID:00400002 TID:03070016 TEMPORARY set loop back mode  pUartRegs->MCR = 0
    PID:00400002 TID:03070016 TEMPORARY set loop back mode  pUartRegs->MCR = 10
    PID:00400002 TID:03070016 pGpio_reg->OE          (0xcd950034) 0xffffffff

    PID:00400002 TID:03070016 pGpio_reg->DATAIN          (0xcd950038) 0x800

    PID:00400002 TID:03070016 pGpio_reg->WAKEUPENABLE          (0xcd950020) 0x800

    PID:00400002 TID:03070016 pGpio_reg->DEBOUNCENABLE          (0xcd950050) 0x0

    PID:00400002 TID:03070016 pGpio_reg->DEBOUNCINGTIME          (0xcd950054) 0x0

    PID:00400002 TID:03070016 pGpio_reg->SYSCONFIG          (0xcd950010) 0x15

    PID:00400002 TID:03070016 pGpio_reg->REVISION          (0xcd950000) 0x25

    PID:00400002 TID:03070016 pGpio_reg->CTRL          (0xcd950030) 0x2

    PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02C2001E Other Event, it:8
    PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)
    PID:00400002 TID:02C2001E +ReadModemStat()
    PID:00400002 TID:02C2001E  EvaluateEventFlag (eventMask = 0x30) - device was closed
    PID:00400002 TID:02C2001E -ReadModemStat(0e)
    PID:00400002 TID:02C2001E -HWModemIntr
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02C2001E SerialEventHandler, No Interrupt.
    PID:00400002 TID:02C2001E -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02C2001E Event D90023, 21
    PID:00400002 TID:03070016 -HWOpen(rc = 1)
    PID:00400002 TID:03070016 +HWPurgeComm(0xcc847200 0x00000008)
    PID:00400002 TID:03070016 UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc900
    00   nMddRxRIndex= 0xccc90000
    PID:00400002 TID:03070016 (bAllClear == TRUE)&& (nMddRxPosHead = nRxDmaBuffer)
    PID:00400002 TID:03070016 PurgeComm: Last Write Pos: 0xccc90000PID:00400002 TID:03070016 -HWPurgeCom
    m
    PID:00400002 TID:03070016 -COM_Open handle xCD7CEA20, xCC8470E0, Ref x1
    PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769552, 0x0, 0, 0x2FA84, 28, 0xCD6AFC64)
    PID:00400002 TID:03070016  IOCTL_SERIAL_GET_DCB
    PID:00400002 TID:03070016 -COM_IOControl Success Ecode=0 (len=28)
    PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769556, 0x2FA84, 28, 0x0, 0, 0xCD6AFC64)
    PID:00400002 TID:03070016  IOCTL_SERIAL_SET_DCB
    PID:00400002 TID:03070016 +HWSetDCB(0xcc847200, 0xcd6afaf0
    PID:00400002 TID:03070016 +SetBaudRate(rate:300,membase:0x4806c000)
    PID:00400002 TID:03070016 -SetBaudRate()=1
    PID:00400002 TID:03070016 +SetStopBits(0)
    PID:00400002 TID:03070016 -SetStopBits()=1
    PID:00400002 TID:03070016 -HWSetDCB(rc = 1)
    PID:00400002 TID:03070016 +HWClearDTR(0xcc847200)
    PID:00400002 TID:03070016 -HWClearDTR
    PID:00400002 TID:03070016 -COM_IOControl Success Ecode=31 (len=0)
    PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769540, 0x2FA14, 4, 0x0, 0, 0xCD6AFC64)
    PID:00400002 TID:03070016  IOCTL_SERIAL_PURGE 0x4
    PID:00400002 TID:03070016 +HWPurgeComm(0xcc847200 0x00000004)
    PID:00400002 TID:03070016 -HWPurgeComm
    PID:00400002 TID:03070016 -COM_IOControl Success Ecode=31 (len=0)
    PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769536, 0x0, 0, 0x2FA3C, 20, 0xCD6AFC64)
    PID:00400002 TID:03070016  IOCTL_SERIAL_GET_TIMEOUTS
    PID:00400002 TID:03070016 -COM_IOControl Success Ecode=31 (len=20)
    PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769532, 0x2FA3C, 20, 0x0, 0, 0xCD6AFC64)
    PID:00400002 TID:03070016  IOCTL_SERIAL_SET_COMMTIMEOUTS (2000,10,2000,0,0)
    PID:00400002 TID:03070016 +HWSetCommTimeouts()
    PID:00400002 TID:03070016 -HWSetCommTimeouts()
    PID:00400002 TID:03070016 -COM_IOControl Success Ecode=31 (len=0)
    PID:03230002 TID:03070016 TEL_Open(0x39460, 0x40000000, 0x3)
    PID:03230002 TID:03070016 TEL_Open(0x39460, 0x40000000, 0x3)
    PID:03230002 TID:03070016 TEL_Close(0x39460)
    PID:00400002 TID:03070016 +COM_WRITE(0xCD7CEA20, 0x2FA54, 1)
    PID:00400002 TID:03070016 COM_Write wait for CritSec cc8470e0.
    PID:00400002 TID:03070016 COM_Write Got CritSec cc8470e0.
    PID:00400002 TID:03070016 COM_Write wait for CritSec cc8471b0.
    PID:00400002 TID:03070016 COM_Write got CritSec cc8471b0.
    PID:00400002 TID:03070016 COM_Write released CritSec: cc8471b0.
    PID:00400002 TID:03070016 DoPutBytes wait for CritSec cc8471b0.
    PID:00400002 TID:03070016 DoPutBytes got CritSec cc8471b0.
    PID:00400002 TID:03070016 RTS set.
    PID:00400002 TID:03070016 +HWSetRTS(0xcc847200)
    PID:00400002 TID:03070016 HWSetRTS set RTS to 0V
    PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02C2001E Other Event, it:8
    PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)
    PID:00400002 TID:02C2001E +ReadModemStat()
    PID:00400002 TID:02C2001E  CommEvent - Event 0x8, Global Mask 0x0
    PID:00400002 TID:02C2001E -ReadModemStat(11)
    PID:00400002 TID:02C2001E -HWModemIntr
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02C2001E SerialEventHandler, No Interrupt.
    PID:00400002 TID:02C2001E -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02C2001E Event D90023, 21
    PID:00400002 TID:03070016 -HWSetRTS
                                       PID:00400002 TID:03070016 TxRead = 0, TxLength = 1, TxBytesAvail
    = 1.
    PID:00400002 TID:03070016 About to copy 1 bytes
    PID:00400002 TID:03070016 +HWTxIntr(0xcc847200, 0xc4473bb0, 1)
    PID:00400002 TID:03070016 +SetAutoIdle(1)
    PID:00400002 TID:03070016 -SetAutoIdle()
    PID:00400002 TID:03070016 +SetAutoIdle(0)
    PID:00400002 TID:03070016 -SetAutoIdle()
    PID:00400002 TID:03070016 -HWTxIntr(*pLength = 1)
    PID:00400002 TID:03070016 1 bytes actually copied.
    PID:00400002 TID:03070016 DoPutBytes released CritSec: cc8471b0.
    PID:00400002 TID:03070016 COM_Write wait for transmission complete event db0023.
    PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 4, cause = c2)
    PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x4
    PID:00400002 TID:02C2001E Tx Event
    PID:00400002 TID:02C2001E DoPutBytes wait for CritSec cc8471b0.
    PID:00400002 TID:02C2001E DoPutBytes got CritSec cc8471b0.
    PID:00400002 TID:02C2001E +HWTxIntr(0xcc847200, 0x00000000, 0)
    PID:00400002 TID:02C2001E +SetAutoIdle(1)
    PID:00400002 TID:02C2001E -SetAutoIdle()
    PID:00400002 TID:02C2001E +SetAutoIdle(0)
    PID:00400002 TID:02C2001E -SetAutoIdle()
    PID:00400002 TID:02C2001E -HWTxIntr(*pLength = 0)
    PID:00400002 TID:02C2001E Transmission complete, 0 bytes sent
    PID:00400002 TID:02C2001E DoPutBytes released CritSec: cc8471b0.
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02C2001E SerialEventHandler, No Interrupt.
    PID:00400002 TID:02C2001E -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02C2001E Event D90023, 21
    PID:00400002 TID:03070016 COM_Write completed normally.
    PID:00400002 TID:03070016 COM_Write wait for CritSec cc8471b0.
    PID:00400002 TID:03070016 COM_Write got CritSec cc8471b0.
    PID:00400002 TID:03070016 COM_Write released CritSec: cc8471b0.
    PID:00400002 TID:03070016 COM_Write released CritSec: cc8470e0. Exiting
    PID:00400002 TID:03070016  CommEvent - Event 0x4, Global Mask 0x0
    PID:00400002 TID:03070016 +HWClearRTS(0xcc847200)
    PID:00400002 TID:03070016 HWClearRTS set RTS to 3.3V
    PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E +SetAutoIdle(0)
    PID:00400002 TID:02C2001E -SetAutoIdle()
    PID:00400002 TID:02C2001E UpdateDMARxPointer: CurrentDMALocation = 0xccc90001 nMddRxWIndex= 0xccc900
    00   nMddRxRIndex= 0xccc90000
    PID:00400002 TID:02C2001E (nStartPos < (nRxDmaBuffer + pPdd->RxDmaBufferSize))&&(nStartPos > nMddRxP
    osHead)
    PID:00400002 TID:02C2001E +HWGetInterruptType Starting DMA
    PID:00400002 TID:02C2001E +SetAutoIdle(1)
    PID:00400002 TID:02C2001E -SetAutoIdle()
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 2, cause = cc)
    PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x2
    PID:00400002 TID:02C2001E Rx Event
    PID:00400002 TID:02C2001E +HWRxIntr(0xcc847200, 0xccc90000, 8191)
    PID:00400002 TID:02C2001E +HWRxDMAIntr Count= 1
    PID:00400002 TID:02C2001E +ReadLineStat()
    PID:00400002 TID:02C2001E -ReadLineStat(60)
    PID:00400002 TID:02C2001E -HWRxIntr(count = 0, length = 1)
    PID:00400002 TID:02C2001E After HWGetBytes, Fifo(R=0,W=0,BA=0,L=8192) ByteRead=1
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02C2001E Other Event, it:8
    PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)
    PID:00400002 TID:02C2001E +ReadModemStat()
    PID:00400002 TID:02C2001E  CommEvent - Event 0x8, Global Mask 0x0
    PID:00400002 TID:02C2001E -ReadModemStat(01)
    PID:00400002 TID:02C2001E -HWModemIntr
    PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C2001E -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02C2001E SerialEventHandler, No Interrupt.
    PID:00400002 TID:02C2001E  CommEvent - Event 0x1, Global Mask 0x0
    PID:00400002 TID:02C2001E -SerialEventHandler, Fifo(R=0,W=1,L=8192)
    PID:00400002 TID:02C2001E Event D90023, 21
    PID:00400002 TID:03070016 -HWClearRTS
    PID:00400002 TID:03070016 -COM_WRITE, returning 1
    PID:00400002 TID:03070016 +COM_READ(0xCD7CEA20,0x2FA54,20)
    PID:00400002 TID:03070016 TotalTimeout:2200
    PID:00400002 TID:03070016 Top of Loop Fifo(R=0,W=1,L=8192,BA=1)
    PID:00400002 TID:03070016 About to copy 1 bytes
    PID:00400002 TID:03070016 Top of Loop Fifo(R=1,W=1,L=8192,BA=0)
    PID:00400002 TID:03070016 About to wait 2080ms
    PID:00400002 TID:03070016 Top of Loop Fifo(R=1,W=1,L=8192,BA=0)
    PID:00400002 TID:03070016 About to wait 2080ms
    PID:00400002 TID:03070016 ReceiveBytes exiting
    PID:00400002 TID:03070016 -COM_READ: returning 1 (total 1, dropped 0,0)
    PID:00400002 TID:03070016 COM_PreClose: 0 users in MDD functions
    PID:00400002 TID:03070016 COM_PreClose: serial users to exit, 0 left
    PID:00400002 TID:03070016 -COM_PreClose
    PID:00400002 TID:03070016 +COM_Close
    PID:00400002 TID:03070016 COM_Close: (0 handles) total RX 1, total TX 1, dropped (mdd, pdd) 0,0
    PID:00400002 TID:03070016 About to call HWClose
    PID:00400002 TID:03070016 +HWClose(0xcc847200)
    PID:00400002 TID:03070016 +ReadModemStat()
    PID:00400002 TID:03070016 -ReadModemStat(00)
    PID:00400002 TID:03070016 UART:SetPower: D3 (curDx=D0)
    PID:00400002 TID:03070016 here1
    PID:00400002 TID:03070016 here2
    PID:00400002 TID:03070016 here3
    PID:00400002 TID:03070016 here4
    PID:00400002 TID:03070016 -HWClose(0)
    PID:00400002 TID:03070016 Returned from HWClose
    PID:00400002 TID:03070016 COM_Close : Stopping Dispatch Thread
    PID:00400002 TID:03070016
    Trying to close dispatch thread
    PID:00400002 TID:03070016
    Trying to signal serial thread.
    PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02C2001E Exitting thread
    PID:00400002 TID:03070016
    Trying to call CloseHandle
    PID:00400002 TID:03070016
    Returned from CloseHandle
    PID:00400002 TID:03070016 COM_Close: Closed access owner handle
    PID:00400002 TID:03070016 -COM_Close
    PID:02CB000E TID:03070016 Dll list:
    PID:03230002 TID:03070016 TEL_Close(0x39460)
    PID:00400002 TID:03070016 RSL_Close: (0 handles) total RX 0, total TX 0, dropped (mdd, pdd) 0,0



    then i second time call my test applicatio i have this in telnet:
    \nandflash> tc2.exe
    TU
    ReadFile dwRead=0
    tcTemp1[0] = 0
    \nandflash>

    We have not received anything! Why?
    in debug i have this:

    PID:00400002 TID:02C0001E +COM_Open handle xCC8470E0, access xC0000000, share x0
    PID:00400002 TID:02C0001E COM_Open: Access permission handle granted xCD7CEAD0
    PID:00400002 TID:02C0001E COM_Open: First open : Do Init xCD7CEAD0
    PID:00400002 TID:02C0001E COM_Open: Starting DispatchThread xCD7CEAD0
    PID:00400002 TID:02C0001E Initializing interrupt 0x15, 0xD90023
    PID:00400002 TID:02C0001E Spinning threadCC8470E0
    PID:00400002 TID:02C0001E Created receive thread 2670027
    PID:00400002 TID:02C0001E +HWSetDCB(0xcc847200, 0xcc847140
    PID:00400002 TID:02C0001E -HWSetDCB(rc = 0)
    PID:00400002 TID:02C0001E +HWSetCommTimeouts()
    PID:00400002 TID:02C0001E -HWSetCommTimeouts()
    PID:00400002 TID:02C0001E +HWOpen(0xcc847200)
    PID:00400002 TID:02C0001E HWOpen - Membase=0x4806c000
    PID:00400002 TID:02C0001E UART:SetPower: D0 (curDx=D3)
    PID:00400002 TID:02C0001E here5
    PID:00400002 TID:02C0001E here6
    PID:00400002 TID:02C0001E here7
    PID:00400002 TID:02C0001E +SetWordLength(8)
    PID:00400002 TID:02C0001E -SetWordLength()=1
    PID:00400002 TID:02C0001E +SetStopBits(1)
    PID:00400002 TID:02E0001A Entered SerialDispatchThread CC8470E0
    PID:00400002 TID:02E0001A Spinning in dispatch thread CC8470E0 C4451290
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C0001E -SetStopBits()=1
    PID:00400002 TID:02C0001E +SetParity(0)
    PID:00400002 TID:02C0001E -SetParity()=1
    PID:00400002 TID:02C0001E UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc900
    01   nMddRxRIndex= 0xccc90001
    PID:00400002 TID:02C0001E (nStartPos < nMddRxPosHead)
    PID:00400002 TID:02C0001E +SetAutoIdle(1)
    PID:00400002 TID:02C0001E -SetAutoIdle()
    PID:00400002 TID:02C0001E +SetBaudRate(rate:9600,membase:0x4806c000)
    PID:00400002 TID:02C0001E -SetBaudRate()=1
    PID:00400002 TID:02C0001E +ReadModemStat()
    PID:00400002 TID:02C0001E  EvaluateEventFlag (eventMask = 0x30) - device was closed
    PID:00400002 TID:02C0001E -ReadModemStat(ea)
    PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_FSX  uart2_rx   (0xcd990172) 0x119
    PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_CLKX uart2_tx     (0xcd990170) 0x1
    PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_DR   uart2_rts     (0xcd99016e) 0x1
    PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_DX   uart2_cts     (0xcd99016c) 0x119
    PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_CTS       (0xcd990174) 0x107
    PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_RTS        (0xcd990176) 0x107
    PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_TX        (0xcd990178) 0x107
    PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_RX        (0xcd99017a) 0x107
    PID:00400002 TID:02C0001E CM_FCLKEN_PER          (0xcd8f0000) 0x3e808

    PID:00400002 TID:02C0001E CM_ICLKEN_PER          (0xcd8f0010) 0x3e808

    PID:00400002 TID:02C0001E CM_IDLEST_PER          (0xcd8f0020) 0x17f7

    PID:00400002 TID:02C0001E CM_AUTOIDLE_PER        (0xcd8f0030) 0x3ffff

    PID:00400002 TID:02C0001E TEMPORARY set loop back mode  pUartRegs->MCR = 0
    PID:00400002 TID:02C0001E TEMPORARY set loop back mode  pUartRegs->MCR = 10
    PID:00400002 TID:02C0001E pGpio_reg->OE          (0xcd9a0034) 0xffffffff

    PID:00400002 TID:02C0001E pGpio_reg->DATAIN          (0xcd9a0038) 0x800

    PID:00400002 TID:02C0001E pGpio_reg->WAKEUPENABLE          (0xcd9a0020) 0x800

    PID:00400002 TID:02C0001E pGpio_reg->DEBOUNCENABLE          (0xcd9a0050) 0x0

    PID:00400002 TID:02C0001E pGpio_reg->DEBOUNCINGTIME          (0xcd9a0054) 0x0

    PID:00400002 TID:02C0001E pGpio_reg->SYSCONFIG          (0xcd9a0010) 0x15

    PID:00400002 TID:02C0001E pGpio_reg->REVISION          (0xcd9a0000) 0x25

    PID:00400002 TID:02C0001E pGpio_reg->CTRL          (0xcd9a0030) 0x2

    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02E0001A Other Event, it:8
    PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)
    PID:00400002 TID:02E0001A +ReadModemStat()
    PID:00400002 TID:02E0001A  EvaluateEventFlag (eventMask = 0x30) - device was closed
    PID:00400002 TID:02E0001A -ReadModemStat(0e)
    PID:00400002 TID:02E0001A -HWModemIntr
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02E0001A SerialEventHandler, No Interrupt.
    PID:00400002 TID:02E0001A -SerialEventHandler, Fifo(R=1,W=1,L=8192)
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02C0001E -HWOpen(rc = 1)
    PID:00400002 TID:02C0001E +HWPurgeComm(0xcc847200 0x00000008)
    PID:00400002 TID:02C0001E UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc900
    01   nMddRxRIndex= 0xccc90001
    PID:00400002 TID:02C0001E (nStartPos < nMddRxPosHead)
    PID:00400002 TID:02C0001E PurgeComm: Last Write Pos: 0xccc90000PID:00400002 TID:02C0001E -HWPurgeCom
    m
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02E0001A SerialEventHandler, No Interrupt.
    PID:00400002 TID:02E0001A -SerialEventHandler, Fifo(R=1,W=1,L=8192)
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02C0001E -COM_Open handle xCD7CEAD0, xCC8470E0, Ref x1
    PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769552, 0x0, 0, 0x2FA84, 28, 0xCD81FC64)
    PID:00400002 TID:02C0001E  IOCTL_SERIAL_GET_DCB
    PID:00400002 TID:02C0001E -COM_IOControl Success Ecode=0 (len=28)
    PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769556, 0x2FA84, 28, 0x0, 0, 0xCD81FC64)
    PID:00400002 TID:02C0001E  IOCTL_SERIAL_SET_DCB
    PID:00400002 TID:02C0001E +HWSetDCB(0xcc847200, 0xcd81faf0
    PID:00400002 TID:02C0001E +SetBaudRate(rate:300,membase:0x4806c000)
    PID:00400002 TID:02C0001E -SetBaudRate()=1
    PID:00400002 TID:02C0001E +SetStopBits(0)
    PID:00400002 TID:02C0001E -SetStopBits()=1
    PID:00400002 TID:02C0001E -HWSetDCB(rc = 1)
    PID:00400002 TID:02C0001E +HWClearDTR(0xcc847200)
    PID:00400002 TID:02C0001E -HWClearDTR
    PID:00400002 TID:02C0001E -COM_IOControl Success Ecode=31 (len=0)
    PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769540, 0x2FA14, 4, 0x0, 0, 0xCD81FC64)
    PID:00400002 TID:02C0001E  IOCTL_SERIAL_PURGE 0x4
    PID:00400002 TID:02C0001E +HWPurgeComm(0xcc847200 0x00000004)
    PID:00400002 TID:02C0001E -HWPurgeComm
    PID:00400002 TID:02C0001E -COM_IOControl Success Ecode=31 (len=0)
    PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769536, 0x0, 0, 0x2FA3C, 20, 0xCD81FC64)
    PID:00400002 TID:02C0001E  IOCTL_SERIAL_GET_TIMEOUTS
    PID:00400002 TID:02C0001E -COM_IOControl Success Ecode=31 (len=20)
    PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769532, 0x2FA3C, 20, 0x0, 0, 0xCD81FC64)
    PID:00400002 TID:02C0001E  IOCTL_SERIAL_SET_COMMTIMEOUTS (2000,10,2000,0,0)
    PID:00400002 TID:02C0001E +HWSetCommTimeouts()
    PID:00400002 TID:02C0001E -HWSetCommTimeouts()
    PID:00400002 TID:02C0001E -COM_IOControl Success Ecode=31 (len=0)
    PID:03230002 TID:02C0001E TEL_Open(0x39460, 0x40000000, 0x3)
    PID:03230002 TID:02C0001E TEL_Open(0x39460, 0x40000000, 0x3)
    PID:03230002 TID:02C0001E TEL_Close(0x39460)
    PID:00400002 TID:02C0001E +COM_WRITE(0xCD7CEAD0, 0x2FA54, 1)
    PID:00400002 TID:02C0001E COM_Write wait for CritSec cc8470e0.
    PID:00400002 TID:02C0001E COM_Write Got CritSec cc8470e0.
    PID:00400002 TID:02C0001E COM_Write wait for CritSec cc8471b0.
    PID:00400002 TID:02C0001E COM_Write got CritSec cc8471b0.
    PID:00400002 TID:02C0001E COM_Write released CritSec: cc8471b0.
    PID:00400002 TID:02C0001E DoPutBytes wait for CritSec cc8471b0.
    PID:00400002 TID:02C0001E DoPutBytes got CritSec cc8471b0.
    PID:00400002 TID:02C0001E RTS set.
    PID:00400002 TID:02C0001E +HWSetRTS(0xcc847200)
    PID:00400002 TID:02C0001E HWSetRTS set RTS to 0V
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02E0001A Other Event, it:8
    PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)
    PID:00400002 TID:02E0001A +ReadModemStat()
    PID:00400002 TID:02E0001A  CommEvent - Event 0x8, Global Mask 0x0
    PID:00400002 TID:02E0001A -ReadModemStat(11)
    PID:00400002 TID:02E0001A -HWModemIntr
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02E0001A SerialEventHandler, No Interrupt.
    PID:00400002 TID:02E0001A -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02C0001E -HWSetRTS
                                       PID:00400002 TID:02C0001E TxRead = 0, TxLength = 1, TxBytesAvail
    = 1.
    PID:00400002 TID:02C0001E About to copy 1 bytes
    PID:00400002 TID:02C0001E +HWTxIntr(0xcc847200, 0xc4473bb0, 1)
    PID:00400002 TID:02C0001E +SetAutoIdle(1)
    PID:00400002 TID:02C0001E -SetAutoIdle()
    PID:00400002 TID:02C0001E +SetAutoIdle(0)
    PID:00400002 TID:02C0001E -SetAutoIdle()
    PID:00400002 TID:02C0001E -HWTxIntr(*pLength = 1)
    PID:00400002 TID:02C0001E 1 bytes actually copied.
    PID:00400002 TID:02C0001E DoPutBytes released CritSec: cc8471b0.
    PID:00400002 TID:02C0001E COM_Write wait for transmission complete event db0023.
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 4, cause = c2)
    PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x4
    PID:00400002 TID:02E0001A Tx Event
    PID:00400002 TID:02E0001A DoPutBytes wait for CritSec cc8471b0.
    PID:00400002 TID:02E0001A DoPutBytes got CritSec cc8471b0.
    PID:00400002 TID:02E0001A +HWTxIntr(0xcc847200, 0x00000000, 0)
    PID:00400002 TID:02E0001A +SetAutoIdle(1)
    PID:00400002 TID:02E0001A -SetAutoIdle()
    PID:00400002 TID:02E0001A +SetAutoIdle(0)
    PID:00400002 TID:02E0001A -SetAutoIdle()
    PID:00400002 TID:02E0001A -HWTxIntr(*pLength = 0)
    PID:00400002 TID:02E0001A Transmission complete, 0 bytes sent
    PID:00400002 TID:02E0001A DoPutBytes released CritSec: cc8471b0.
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02E0001A SerialEventHandler, No Interrupt.
    PID:00400002 TID:02E0001A -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02C0001E COM_Write completed normally.
    PID:00400002 TID:02C0001E COM_Write wait for CritSec cc8471b0.
    PID:00400002 TID:02C0001E COM_Write got CritSec cc8471b0.
    PID:00400002 TID:02C0001E COM_Write released CritSec: cc8471b0.
    PID:00400002 TID:02C0001E COM_Write released CritSec: cc8470e0. Exiting
    PID:00400002 TID:02C0001E  CommEvent - Event 0x4, Global Mask 0x0
    PID:00400002 TID:02C0001E +HWClearRTS(0xcc847200)
    PID:00400002 TID:02C0001E HWClearRTS set RTS to 3.3V
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)
    PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8
    PID:00400002 TID:02E0001A Other Event, it:8
    PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)
    PID:00400002 TID:02E0001A +ReadModemStat()
    PID:00400002 TID:02E0001A  CommEvent - Event 0x8, Global Mask 0x0
    PID:00400002 TID:02E0001A -ReadModemStat(01)
    PID:00400002 TID:02E0001A -HWModemIntr
    PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)
    PID:00400002 TID:02E0001A -HWGetInterruptType(type = 0, cause = c1)
    PID:00400002 TID:02E0001A SerialEventHandler, No Interrupt.
    PID:00400002 TID:02E0001A -SerialEventHandler, Fifo(R=0,W=0,L=8192)
    PID:00400002 TID:02E0001A Event D90023, 21
    PID:00400002 TID:02C0001E -HWClearRTS
    PID:00400002 TID:02C0001E -COM_WRITE, returning 1
    PID:00400002 TID:02C0001E +COM_READ(0xCD7CEAD0,0x2FA54,20)
    PID:00400002 TID:02C0001E TotalTimeout:2200
    PID:00400002 TID:02C0001E Top of Loop Fifo(R=0,W=0,L=8192,BA=0)
    PID:00400002 TID:02C0001E About to wait 2200ms
    PID:00400002 TID:02C0001E Top of Loop Fifo(R=0,W=0,L=8192,BA=0)
    PID:00400002 TID:02C0001E About to wait 2196ms
    PID:00400002 TID:02C0001E ReceiveBytes exiting
    PID:00400002 TID:02C0001E -COM_READ: returning 0 (total 0, dropped 0,0)
    PID:00400002 TID:02C0001E COM_PreClose: 0 users in MDD functions
    PID:00400002 TID:02C0001E COM_PreClose: serial users to exit, 0 left
    PID:00400002 TID:02C0001E -COM_PreClose
    PID:00400002 TID:02C0001E +COM_Close
    PID:00400002 TID:02C0001E COM_Close: (0 handles) total RX 0, total TX 1, dropped (mdd, pdd) 0,0
    PID:00400002 TID:02C0001E About to call HWClose
    PID:00400002 TID:02C0001E +HWClose(0xcc847200)
    PID:00400002 TID:02C0001E +ReadModemStat()
    PID:00400002 TID:02C0001E -ReadModemStat(00)
    PID:00400002 TID:02C0001E UART:SetPower: D3 (curDx=D0)
    PID:00400002 TID:02C0001E here1
    PID:00400002 TID:02C0001E here2
    PID:00400002 TID:02C0001E here3
    PID:00400002 TID:02C0001E here4
    PID:00400002 TID:02C0001E -HWClose(0)
    PID:00400002 TID:02C0001E Returned from HWClose
    PID:00400002 TID:02C0001E COM_Close : Stopping Dispatch Thread
    PID:00400002 TID:02C0001E
    Trying to close dispatch thread
    PID:00400002 TID:02C0001E
    Trying to signal serial thread.
    PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0
    PID:00400002 TID:02E0001A Exitting thread
    PID:00400002 TID:02C0001E
    Trying to call CloseHandle
    PID:00400002 TID:02C0001E
    Returned from CloseHandle
    PID:00400002 TID:02C0001E COM_Close: Closed access owner handle
    PID:00400002 TID:02C0001E -COM_Close
    PID:013D0022 TID:02C0001E Dll list:
    PID:03230002 TID:02C0001E TEL_Close(0x39460)
    PID:00400002 TID:02C0001E RSL_Close: (0 handles) total RX 0, total TX 0, dropped (mdd, pdd) 0,0



    and loopbacking not working any more.
    if i remaked application like this:

    while(1){
        tcTemp1[0]= 0xEE;
        WriteFile(hDrv2,tcTemp1,1,&dwWritten,NULL);    

        tcTemp1[0]= 0x00;
        Sleep(1000);

        result = ReadFile(hDrv2,tcTemp1,LEN_FOR_CHECK,&dwRead,NULL);
            
            if(result==0)
            {
            printf("Failed ReadFile COM2  \r\n");
            }
        
            printf("ReadFile dwRead=%d  \r\n",dwRead);

        printf("tcTemp1[0] = %x  \r\n",tcTemp1[0]);
        }

    telnet output:

    Welcome to the Windows CE Telnet Service on Compact

    Pocket CMD v 7.00
    \> cd nandflash
    \nandflash> tc2l.exe
    TU
    ReadFile dwRead=1
    tcTemp1[0] = ee
    ReadFile dwRead=1
    tcTemp1[0] = ee
    ReadFile dwRead=1
    tcTemp1[0] = ee





        
    This is WORKING =). Looks like COM_Close() are broke driver. or driver just not reinited on COM_Open() properly.    

    Any help? TY.
        
        
    i am attach my test applications tc2.exe and tc2l.exe
    You can just try it by short RX on TX by external wire on you com port 2
    You need short 2 pin on 3 pin on DB9.
    Or you can add SETREG8(&pPdd->pUartRegs->MCR, UART_MCR_LOOPBACK_EN);
    in driver code.
       

  • i  fix it

    need add code for reinit RxDMA  in HWOpen.

    like this:

       if (pPdd->open) goto cleanUp;

        // We have set hardware to D0
        pPdd->externalDX = D0;
        SetPower(pPdd, D0);

    //================
    //EAI ADDON

            // Rx DMA configuration settings
        InitializeRxDMA(pPdd);
        EnterCriticalSection(&pPdd->hwCS);

        pPdd->bRxDMASignaled = 0;
        pPdd->bRxWrapped     = FALSE;
        pPdd->pRxDMALastWrite = 0;
        pPdd->bDmaInitialize = FALSE;


    RETAILMSG(1, (L"HWInit: pPdd->UARTIndex: 0x%08x\r\n", pPdd->UARTIndex));
    RETAILMSG(1, (L"HWInit: pPdd->memBase[0]: 0x%08x\r\n", pPdd->memBase[0]));
    RETAILMSG(1, (L"HWInit: pPdd->irq: 0x%08x\r\n", pPdd->irq));
    RETAILMSG(1, (L"HWInit: pPdd->pUartRegs 0x%08x\r\n", pPdd->pUartRegs));

        InitializeUART(pPdd);

        LeaveCriticalSection(&pPdd->hwCS);

    //EAI
    //================

       SetDefaultDCB(pPdd);

        pPdd->commErrors    = 0;
        pPdd->overrunCount  = 0;
        pPdd->flowOffCTS    = FALSE;
        pPdd->flowOffDSR    = FALSE;
        pPdd->addTxIntr     = FALSE;
        pPdd->open          = TRUE;
        pPdd->wakeUpMode    = FALSE;
        pPdd->RxTxRefCount  = 0;
        pPdd->bExitPowerThread = FALSE;