OK6410 修改调试串口为普通串口

 

需要用到4个串口,而OK6410 仅公开了3个串口,串口1 作为调试串口,在正常的wince 系统运行时无法使用,为此必须将调试串口转为普通串口,

方法如下(验证可用)

1.smdk6410.bat里
set BSP_NOUART0=1将这句的值去掉 ->set BSP_NOUART0=
set BSP_DEBUGPORT=SERIAL_UART0将这句屏蔽掉  ->@set BSP_DEBUGPORT=SERIAL_UART0

2.修改debug.c

SMDK6410->src->oal->oallib->Source files->debug.c

增加宏定义
// Defines
#ifndef DEBUG_PRINT
 #define DEBUG_OUT 1
 #define DEBUG_NOUT 0
 #define DEBUG_PRINT DEBUG_NOUT
#endif

在函数OEMInitDebugSerial(),OEMWriteDebugByte(),OEMReadDebugByte
内部增加宏判断
#if(DEBUG_PRINT == DEBUG_OUT)
因上面定义了NEBUG_NOUT则意味着这些函数只是空函数


3.修改串口0的驱动文件;

文件名为ser_smdk6410.cpp

CPdd6410Serial0 类中做如下修改:

(1)增加宏定义

#ifndef DEBUG_PRINT
 #define DEBUG_OUT 1
 #define DEBUG_NOUT 0
 #define DEBUG_PRINT DEBUG_NOUT
#endif

(2)凡是SetDTR()函数

全部用

#if(DEBUG_PRINT == DEBUG_OUT)
        SetDTR(FALSE);
#endif

即相当于删除掉此函数的使用

(2)InitModem()

#if(DEBUG_PRINT == DEBUG_OUT)
    virtual BOOL    InitModem(BOOL bInit)
    {
        SetDTR(bInit);
        return CPdd6410Uart::InitModem(bInit);
  return 1;
    }
#endif

(3)GetModemStatus()

    virtual ULONG   GetModemStatus()
    {
#if(DEBUG_PRINT == DEBUG_OUT)
        ULONG ulReturn = CPdd6410Uart::GetModemStatus();
        ULONG ulEvent = 0;
        m_HardwareLock.Lock();
        BOOL fIsDSRSet = (((*m_pDSRPort) & (1<<m_dwDSRPortNum))==0);
        //RETAILMSG(TRUE, (TEXT("DEBUG: DSRPort Register 0x%lx, Value 0x%lx, fIsDSRSet(%d).\r\n"), m_pDSRPort, *m_pDSRPort, fIsDSRSet));
        if (fIsDSRSet != m_fIsDSRSet)
        {
            ulEvent |= EV_DSR | EV_RLSD;
            //RETAILMSG(TRUE, (TEXT("DEBUG: DSRPort Register 0x%lx, Value 0x%lx, fIsDSRSet(%d).\r\n"), m_pDSRPort, *m_pDSRPort, fIsDSRSet));
        }
        ulReturn |= (fIsDSRSet?(MS_DSR_ON|MS_RLSD_ON):0);
        m_fIsDSRSet = fIsDSRSet;
        m_HardwareLock.Unlock();
        if (ulEvent!=0)
        {
            EventCallback(ulEvent,ulReturn);
        }
        return ulReturn;
#else
  return (CPdd6410Uart::GetModemStatus() | MS_CTS_ON);
#endif
    }

你可能感兴趣的:(w,OK6410,修改调试串口为普通串口)