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?
Adeneo Embedded Support teamContact us at sales@adeneo-embedded.com
2605.serail_uart.zip Hello thanks you for answer.i am trying add some debugging codein 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 2000int _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 // errorPortDCB.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 CompactPocket CMD v 7.00\> cd nandflash\nandflash> tc2.exeTUReadFile dwRead=1tcTemp1[0] = ee\nandflash>in debug teraterm (attached to UART3) i have this:PID:00400002 TID:03070016 +COM_Open handle xCC8470E0, access xC0000000, share x0PID:00400002 TID:03070016 COM_Open: Access permission handle granted xCD7CEA20PID:00400002 TID:03070016 COM_Open: First open : Do Init xCD7CEA20PID:00400002 TID:03070016 COM_Open: Starting DispatchThread xCD7CEA20PID:00400002 TID:03070016 Initializing interrupt 0x15, 0xD90023PID:00400002 TID:03070016 Spinning threadCC8470E0PID:00400002 TID:03070016 Created receive thread 2D2001FPID:00400002 TID:03070016 +HWSetDCB(0xcc847200, 0xcc847140PID: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=0x4806c000PID:00400002 TID:03070016 UART:SetPower: D0 (curDx=D3)PID:00400002 TID:03070016 here5PID:00400002 TID:03070016 here6PID:00400002 TID:03070016 here7PID:00400002 TID:03070016 +SetWordLength(8)PID:00400002 TID:03070016 -SetWordLength()=1PID:00400002 TID:02C2001E Entered SerialDispatchThread CC8470E0PID:00400002 TID:02C2001E Spinning in dispatch thread CC8470E0 C4451290PID:00400002 TID:02C2001E Event D90023, 21PID:00400002 TID:03070016 +SetStopBits(1)PID:00400002 TID:03070016 -SetStopBits()=1PID:00400002 TID:03070016 +SetParity(0)PID:00400002 TID:03070016 -SetParity()=1PID:00400002 TID:03070016 UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc90000 nMddRxRIndex= 0xccc90000PID: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()=1PID:00400002 TID:03070016 +ReadModemStat()PID:00400002 TID:03070016 -ReadModemStat(e0)PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_FSX uart2_rx (0xcd940172) 0x119PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_CLKX uart2_tx (0xcd940170) 0x1PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_DR uart2_rts (0xcd94016e) 0x1PID:00400002 TID:03070016 CONTROL_PADCONF_MCBSP3_DX uart2_cts (0xcd94016c) 0x119PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_CTS (0xcd940174) 0x107PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_RTS (0xcd940176) 0x107PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_TX (0xcd940178) 0x107PID:00400002 TID:03070016 CONTROL_PADCONF_UART2_RX (0xcd94017a) 0x107PID:00400002 TID:03070016 CM_FCLKEN_PER (0xcd910000) 0x3e808PID:00400002 TID:03070016 CM_ICLKEN_PER (0xcd910010) 0x3e808PID:00400002 TID:03070016 CM_IDLEST_PER (0xcd910020) 0x17f7PID:00400002 TID:03070016 CM_AUTOIDLE_PER (0xcd910030) 0x3ffffPID:00400002 TID:03070016 TEMPORARY set loop back mode pUartRegs->MCR = 0PID:00400002 TID:03070016 TEMPORARY set loop back mode pUartRegs->MCR = 10PID:00400002 TID:03070016 pGpio_reg->OE (0xcd950034) 0xffffffffPID:00400002 TID:03070016 pGpio_reg->DATAIN (0xcd950038) 0x800PID:00400002 TID:03070016 pGpio_reg->WAKEUPENABLE (0xcd950020) 0x800PID:00400002 TID:03070016 pGpio_reg->DEBOUNCENABLE (0xcd950050) 0x0PID:00400002 TID:03070016 pGpio_reg->DEBOUNCINGTIME (0xcd950054) 0x0PID:00400002 TID:03070016 pGpio_reg->SYSCONFIG (0xcd950010) 0x15PID:00400002 TID:03070016 pGpio_reg->REVISION (0xcd950000) 0x25PID:00400002 TID:03070016 pGpio_reg->CTRL (0xcd950030) 0x2PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8PID:00400002 TID:02C2001E Other Event, it:8PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)PID:00400002 TID:02C2001E +ReadModemStat()PID:00400002 TID:02C2001E EvaluateEventFlag (eventMask = 0x30) - device was closedPID:00400002 TID:02C2001E -ReadModemStat(0e)PID:00400002 TID:02C2001E -HWModemIntrPID: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, 21PID:00400002 TID:03070016 -HWOpen(rc = 1)PID:00400002 TID:03070016 +HWPurgeComm(0xcc847200 0x00000008)PID:00400002 TID:03070016 UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc90000 nMddRxRIndex= 0xccc90000PID:00400002 TID:03070016 (bAllClear == TRUE)&& (nMddRxPosHead = nRxDmaBuffer)PID:00400002 TID:03070016 PurgeComm: Last Write Pos: 0xccc90000PID:00400002 TID:03070016 -HWPurgeCommPID:00400002 TID:03070016 -COM_Open handle xCD7CEA20, xCC8470E0, Ref x1PID:00400002 TID:03070016 +COM_IOControl(0xCD7CEA20, 1769552, 0x0, 0, 0x2FA84, 28, 0xCD6AFC64)PID:00400002 TID:03070016 IOCTL_SERIAL_GET_DCBPID: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_DCBPID:00400002 TID:03070016 +HWSetDCB(0xcc847200, 0xcd6afaf0PID:00400002 TID:03070016 +SetBaudRate(rate:300,membase:0x4806c000)PID:00400002 TID:03070016 -SetBaudRate()=1PID:00400002 TID:03070016 +SetStopBits(0)PID:00400002 TID:03070016 -SetStopBits()=1PID:00400002 TID:03070016 -HWSetDCB(rc = 1)PID:00400002 TID:03070016 +HWClearDTR(0xcc847200)PID:00400002 TID:03070016 -HWClearDTRPID: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 0x4PID:00400002 TID:03070016 +HWPurgeComm(0xcc847200 0x00000004)PID:00400002 TID:03070016 -HWPurgeCommPID: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_TIMEOUTSPID: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 0VPID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8PID:00400002 TID:02C2001E Other Event, it:8PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)PID:00400002 TID:02C2001E +ReadModemStat()PID:00400002 TID:02C2001E CommEvent - Event 0x8, Global Mask 0x0PID:00400002 TID:02C2001E -ReadModemStat(11)PID:00400002 TID:02C2001E -HWModemIntrPID: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, 21PID:00400002 TID:03070016 -HWSetRTS PID:00400002 TID:03070016 TxRead = 0, TxLength = 1, TxBytesAvail= 1.PID:00400002 TID:03070016 About to copy 1 bytesPID: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 0xCC8470E0PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C2001E -HWGetInterruptType(type = 4, cause = c2)PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x4PID:00400002 TID:02C2001E Tx EventPID: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 sentPID: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, 21PID: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. ExitingPID:00400002 TID:03070016 CommEvent - Event 0x4, Global Mask 0x0PID:00400002 TID:03070016 +HWClearRTS(0xcc847200)PID:00400002 TID:03070016 HWClearRTS set RTS to 3.3VPID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C2001E +SetAutoIdle(0)PID:00400002 TID:02C2001E -SetAutoIdle()PID:00400002 TID:02C2001E UpdateDMARxPointer: CurrentDMALocation = 0xccc90001 nMddRxWIndex= 0xccc90000 nMddRxRIndex= 0xccc90000PID:00400002 TID:02C2001E (nStartPos < (nRxDmaBuffer + pPdd->RxDmaBufferSize))&&(nStartPos > nMddRxPosHead)PID:00400002 TID:02C2001E +HWGetInterruptType Starting DMAPID: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 0x2PID:00400002 TID:02C2001E Rx EventPID:00400002 TID:02C2001E +HWRxIntr(0xcc847200, 0xccc90000, 8191)PID:00400002 TID:02C2001E +HWRxDMAIntr Count= 1PID: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=1PID:00400002 TID:02C2001E +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C2001E -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02C2001E SerialEventHandler, Interrupts 0x8PID:00400002 TID:02C2001E Other Event, it:8PID:00400002 TID:02C2001E +HWModemIntr(0xcc847200)PID:00400002 TID:02C2001E +ReadModemStat()PID:00400002 TID:02C2001E CommEvent - Event 0x8, Global Mask 0x0PID:00400002 TID:02C2001E -ReadModemStat(01)PID:00400002 TID:02C2001E -HWModemIntrPID: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 0x0PID:00400002 TID:02C2001E -SerialEventHandler, Fifo(R=0,W=1,L=8192)PID:00400002 TID:02C2001E Event D90023, 21PID:00400002 TID:03070016 -HWClearRTSPID:00400002 TID:03070016 -COM_WRITE, returning 1PID:00400002 TID:03070016 +COM_READ(0xCD7CEA20,0x2FA54,20)PID:00400002 TID:03070016 TotalTimeout:2200PID:00400002 TID:03070016 Top of Loop Fifo(R=0,W=1,L=8192,BA=1)PID:00400002 TID:03070016 About to copy 1 bytesPID:00400002 TID:03070016 Top of Loop Fifo(R=1,W=1,L=8192,BA=0)PID:00400002 TID:03070016 About to wait 2080msPID:00400002 TID:03070016 Top of Loop Fifo(R=1,W=1,L=8192,BA=0)PID:00400002 TID:03070016 About to wait 2080msPID:00400002 TID:03070016 ReceiveBytes exitingPID:00400002 TID:03070016 -COM_READ: returning 1 (total 1, dropped 0,0)PID:00400002 TID:03070016 COM_PreClose: 0 users in MDD functionsPID:00400002 TID:03070016 COM_PreClose: serial users to exit, 0 leftPID:00400002 TID:03070016 -COM_PreClosePID:00400002 TID:03070016 +COM_ClosePID:00400002 TID:03070016 COM_Close: (0 handles) total RX 1, total TX 1, dropped (mdd, pdd) 0,0PID:00400002 TID:03070016 About to call HWClosePID: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 here1PID:00400002 TID:03070016 here2PID:00400002 TID:03070016 here3PID:00400002 TID:03070016 here4PID:00400002 TID:03070016 -HWClose(0)PID:00400002 TID:03070016 Returned from HWClosePID:00400002 TID:03070016 COM_Close : Stopping Dispatch ThreadPID:00400002 TID:03070016Trying to close dispatch threadPID:00400002 TID:03070016Trying to signal serial thread.PID:00400002 TID:02C2001E +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02C2001E Exitting threadPID:00400002 TID:03070016Trying to call CloseHandlePID:00400002 TID:03070016Returned from CloseHandlePID:00400002 TID:03070016 COM_Close: Closed access owner handlePID:00400002 TID:03070016 -COM_ClosePID: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,0then i second time call my test applicatio i have this in telnet:\nandflash> tc2.exeTUReadFile dwRead=0tcTemp1[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 x0PID:00400002 TID:02C0001E COM_Open: Access permission handle granted xCD7CEAD0PID:00400002 TID:02C0001E COM_Open: First open : Do Init xCD7CEAD0PID:00400002 TID:02C0001E COM_Open: Starting DispatchThread xCD7CEAD0PID:00400002 TID:02C0001E Initializing interrupt 0x15, 0xD90023PID:00400002 TID:02C0001E Spinning threadCC8470E0PID:00400002 TID:02C0001E Created receive thread 2670027PID:00400002 TID:02C0001E +HWSetDCB(0xcc847200, 0xcc847140PID: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=0x4806c000PID:00400002 TID:02C0001E UART:SetPower: D0 (curDx=D3)PID:00400002 TID:02C0001E here5PID:00400002 TID:02C0001E here6PID:00400002 TID:02C0001E here7PID:00400002 TID:02C0001E +SetWordLength(8)PID:00400002 TID:02C0001E -SetWordLength()=1PID:00400002 TID:02C0001E +SetStopBits(1)PID:00400002 TID:02E0001A Entered SerialDispatchThread CC8470E0PID:00400002 TID:02E0001A Spinning in dispatch thread CC8470E0 C4451290PID:00400002 TID:02E0001A Event D90023, 21PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)PID:00400002 TID:02C0001E -SetStopBits()=1PID:00400002 TID:02C0001E +SetParity(0)PID:00400002 TID:02C0001E -SetParity()=1PID:00400002 TID:02C0001E UpdateDMARxPointer: CurrentDMALocation = 0xccc90000 nMddRxWIndex= 0xccc90001 nMddRxRIndex= 0xccc90001PID: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()=1PID:00400002 TID:02C0001E +ReadModemStat()PID:00400002 TID:02C0001E EvaluateEventFlag (eventMask = 0x30) - device was closedPID:00400002 TID:02C0001E -ReadModemStat(ea)PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_FSX uart2_rx (0xcd990172) 0x119PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_CLKX uart2_tx (0xcd990170) 0x1PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_DR uart2_rts (0xcd99016e) 0x1PID:00400002 TID:02C0001E CONTROL_PADCONF_MCBSP3_DX uart2_cts (0xcd99016c) 0x119PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_CTS (0xcd990174) 0x107PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_RTS (0xcd990176) 0x107PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_TX (0xcd990178) 0x107PID:00400002 TID:02C0001E CONTROL_PADCONF_UART2_RX (0xcd99017a) 0x107PID:00400002 TID:02C0001E CM_FCLKEN_PER (0xcd8f0000) 0x3e808PID:00400002 TID:02C0001E CM_ICLKEN_PER (0xcd8f0010) 0x3e808PID:00400002 TID:02C0001E CM_IDLEST_PER (0xcd8f0020) 0x17f7PID:00400002 TID:02C0001E CM_AUTOIDLE_PER (0xcd8f0030) 0x3ffffPID:00400002 TID:02C0001E TEMPORARY set loop back mode pUartRegs->MCR = 0PID:00400002 TID:02C0001E TEMPORARY set loop back mode pUartRegs->MCR = 10PID:00400002 TID:02C0001E pGpio_reg->OE (0xcd9a0034) 0xffffffffPID:00400002 TID:02C0001E pGpio_reg->DATAIN (0xcd9a0038) 0x800PID:00400002 TID:02C0001E pGpio_reg->WAKEUPENABLE (0xcd9a0020) 0x800PID:00400002 TID:02C0001E pGpio_reg->DEBOUNCENABLE (0xcd9a0050) 0x0PID:00400002 TID:02C0001E pGpio_reg->DEBOUNCINGTIME (0xcd9a0054) 0x0PID:00400002 TID:02C0001E pGpio_reg->SYSCONFIG (0xcd9a0010) 0x15PID:00400002 TID:02C0001E pGpio_reg->REVISION (0xcd9a0000) 0x25PID:00400002 TID:02C0001E pGpio_reg->CTRL (0xcd9a0030) 0x2PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8PID:00400002 TID:02E0001A Other Event, it:8PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)PID:00400002 TID:02E0001A +ReadModemStat()PID:00400002 TID:02E0001A EvaluateEventFlag (eventMask = 0x30) - device was closedPID:00400002 TID:02E0001A -ReadModemStat(0e)PID:00400002 TID:02E0001A -HWModemIntrPID: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, 21PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0PID: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= 0xccc90001 nMddRxRIndex= 0xccc90001PID:00400002 TID:02C0001E (nStartPos < nMddRxPosHead)PID:00400002 TID:02C0001E PurgeComm: Last Write Pos: 0xccc90000PID:00400002 TID:02C0001E -HWPurgeCommPID: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, 21PID:00400002 TID:02C0001E -COM_Open handle xCD7CEAD0, xCC8470E0, Ref x1PID:00400002 TID:02C0001E +COM_IOControl(0xCD7CEAD0, 1769552, 0x0, 0, 0x2FA84, 28, 0xCD81FC64)PID:00400002 TID:02C0001E IOCTL_SERIAL_GET_DCBPID: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_DCBPID:00400002 TID:02C0001E +HWSetDCB(0xcc847200, 0xcd81faf0PID:00400002 TID:02C0001E +SetBaudRate(rate:300,membase:0x4806c000)PID:00400002 TID:02C0001E -SetBaudRate()=1PID:00400002 TID:02C0001E +SetStopBits(0)PID:00400002 TID:02C0001E -SetStopBits()=1PID:00400002 TID:02C0001E -HWSetDCB(rc = 1)PID:00400002 TID:02C0001E +HWClearDTR(0xcc847200)PID:00400002 TID:02C0001E -HWClearDTRPID: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 0x4PID:00400002 TID:02C0001E +HWPurgeComm(0xcc847200 0x00000004)PID:00400002 TID:02C0001E -HWPurgeCommPID: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_TIMEOUTSPID: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 0VPID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8PID:00400002 TID:02E0001A Other Event, it:8PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)PID:00400002 TID:02E0001A +ReadModemStat()PID:00400002 TID:02E0001A CommEvent - Event 0x8, Global Mask 0x0PID:00400002 TID:02E0001A -ReadModemStat(11)PID:00400002 TID:02E0001A -HWModemIntrPID: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, 21PID:00400002 TID:02C0001E -HWSetRTS PID:00400002 TID:02C0001E TxRead = 0, TxLength = 1, TxBytesAvail= 1.PID:00400002 TID:02C0001E About to copy 1 bytesPID: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 0xCC8470E0PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)PID:00400002 TID:02E0001A -HWGetInterruptType(type = 4, cause = c2)PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x4PID:00400002 TID:02E0001A Tx EventPID: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 sentPID: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, 21PID: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. ExitingPID:00400002 TID:02C0001E CommEvent - Event 0x4, Global Mask 0x0PID:00400002 TID:02C0001E +HWClearRTS(0xcc847200)PID:00400002 TID:02C0001E HWClearRTS set RTS to 3.3VPID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02E0001A +HWGetInterruptType(0xcc847200)PID:00400002 TID:02E0001A -HWGetInterruptType(type = 8, cause = c0)PID:00400002 TID:02E0001A SerialEventHandler, Interrupts 0x8PID:00400002 TID:02E0001A Other Event, it:8PID:00400002 TID:02E0001A +HWModemIntr(0xcc847200)PID:00400002 TID:02E0001A +ReadModemStat()PID:00400002 TID:02E0001A CommEvent - Event 0x8, Global Mask 0x0PID:00400002 TID:02E0001A -ReadModemStat(01)PID:00400002 TID:02E0001A -HWModemIntrPID: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, 21PID:00400002 TID:02C0001E -HWClearRTSPID:00400002 TID:02C0001E -COM_WRITE, returning 1PID:00400002 TID:02C0001E +COM_READ(0xCD7CEAD0,0x2FA54,20)PID:00400002 TID:02C0001E TotalTimeout:2200PID:00400002 TID:02C0001E Top of Loop Fifo(R=0,W=0,L=8192,BA=0)PID:00400002 TID:02C0001E About to wait 2200msPID:00400002 TID:02C0001E Top of Loop Fifo(R=0,W=0,L=8192,BA=0)PID:00400002 TID:02C0001E About to wait 2196msPID:00400002 TID:02C0001E ReceiveBytes exitingPID:00400002 TID:02C0001E -COM_READ: returning 0 (total 0, dropped 0,0)PID:00400002 TID:02C0001E COM_PreClose: 0 users in MDD functionsPID:00400002 TID:02C0001E COM_PreClose: serial users to exit, 0 leftPID:00400002 TID:02C0001E -COM_PreClosePID:00400002 TID:02C0001E +COM_ClosePID:00400002 TID:02C0001E COM_Close: (0 handles) total RX 0, total TX 1, dropped (mdd, pdd) 0,0PID:00400002 TID:02C0001E About to call HWClosePID: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 here1PID:00400002 TID:02C0001E here2PID:00400002 TID:02C0001E here3PID:00400002 TID:02C0001E here4PID:00400002 TID:02C0001E -HWClose(0)PID:00400002 TID:02C0001E Returned from HWClosePID:00400002 TID:02C0001E COM_Close : Stopping Dispatch ThreadPID:00400002 TID:02C0001ETrying to close dispatch threadPID:00400002 TID:02C0001ETrying to signal serial thread.PID:00400002 TID:02E0001A +SerialEventHandler, pHead 0xCC8470E0PID:00400002 TID:02E0001A Exitting threadPID:00400002 TID:02C0001ETrying to call CloseHandlePID:00400002 TID:02C0001EReturned from CloseHandlePID:00400002 TID:02C0001E COM_Close: Closed access owner handlePID:00400002 TID:02C0001E -COM_ClosePID: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,0and 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 CompactPocket CMD v 7.00\> cd nandflash\nandflash> tc2l.exeTUReadFile dwRead=1tcTemp1[0] = eeReadFile dwRead=1tcTemp1[0] = eeReadFile dwRead=1tcTemp1[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.exeYou 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;