您的位置:首页 > 其它

把FL2440 的调试串口改为普通串口的方法

2010-06-20 00:24 441 查看

把FL2440 的调试串口改为普通串口的方法

串口, 调试

昨天,胡sir问我如何把FL2440 的调试串口改为普通串口,我答应他晚上回去看看,晕,昨晚忘记带笔记本电源回去了。所以现在立即补上——我没有在平台上试过,不过我看了一下BSP,我觉得应该是按照如下步骤改的
一、看F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A/Src/Kernel/Oal 下的debug.c文件有:

//------------------------------------------------------------------------------

// Defines

#define DEBUG_SERIAL_UART0 1

//#define DEBUG_SERIAL_UART1 1

#ifdef DEBUG_SERIAL_UART0

#define FEILING_DEBUG 1

#elif DEBUG_SERIAL_UART1

#define FEILING_DEBUG 1

#else

#define FEILING_DEBUG 0

#endif

//------------------------------------------------------------------------------

复制代码
如上说明FL2440 采用了 uart0作为 debug 串口。
再看F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A 下的SMDK2440A.bat文件有
@REM DEBUG SERIAL PORT
@REM You also need to change the macro definition in debug.c
REM set DEBUG_SERIAL=
set DEBUG_SERIAL=SERIAL_UART0
REM set DEBUG_SERIAL=SERIAL_UART1

呵呵,正好和debug.c对应。
再来看F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A/Files 下的platform.reg

; @CESYSGEN IF CE_MODULES_SERIAL

IF BSP_NOSERIAL !

IF BSP_NOUART0 !

IF BSP_KITL != SERIAL_UART0

IF DEBUG_SERIAL != SERIAL_UART0 ;这个宏定义造成uart0的驱动没有被加载成普通串口,呵呵,若要做普通串口,在SMDK2440A.bat把这个环境变量去掉

;=============== UART0 (physical COM1 connector P1) (Serial) ===============

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial]

"DeviceArrayIndex"=dword:0

"Irq"=dword:1c

"MemBase"=dword:50000000

"MemLen"=dword:2C

"InterruptBitsShift"=dword:0 ; UART 0 Interrupt Sub Register shift bit.

"ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.

"Prefix"="COM"

"Index"=dword:1

"Dll"="serial_smdk2440.dll"

"Order"=dword:4

"Priority"=dword:0

"Port"="COM1:"

"DeviceType"=dword:0

"FriendlyName"=LOC_DISPLAYNAME_COM1

"Tsp"="unimodem.dll"

"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"

"DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00



ENDIF

ENDIF

ENDIF

IF BSP_NOUART1 !

IF BSP_KITL != SERIAL_UART1

IF DEBUG_SERIAL != SERIAL_UART1

;=============== UART1 (physical COM2 connector P2) (Serial) ===============

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial1]

"DeviceArrayIndex"=dword:1

"Irq"=dword:17

"MemBase"=dword:50004000

"MemLen"=dword:2C

"InterruptBitsShift"=dword:3 ; UART 1 Interrupt Sub Register shift bit.

"ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.

"Prefix"="COM"

"Index"=dword:2

"Dll"="serial_smdk2440.dll"

"Order"=dword:4

"Priority"=dword:0

"Port"="COM2:"

"DeviceType"=dword:0

"FriendlyName"=LOC_DISPLAYNAME_COM2

"Tsp"="unimodem.dll"

"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"

"DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

ENDIF

ENDIF

ENDIF

IF BSP_NOUART2 !

IF BSP_KITL != SERIAL_UART2

;=============== UART2 (physical COM3 connector P2) (Serial) ===============

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial2]

"DeviceArrayIndex"=dword:1

"Irq"=dword:f

"MemBase"=dword:50008000

"MemLen"=dword:2C

"InterruptBitsShift"=dword:6 ; UART 2 Interrupt Sub Register shift bit.

"ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.

"Prefix"="COM"

"Index"=dword:3

"Dll"="serial_smdk2440.dll"

"Order"=dword:4

"Priority"=dword:0

"Port"="COM3:"

"DeviceType"=dword:0

"FriendlyName"="Serial Cable on COM3";LOC_DISPLAYNAME_COM3

"Tsp"="unimodem.dll"

"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"

"DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

ENDIF

ENDIF

IF BSP_NOIRDA !

; S2440 IrDA(UART2)

[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/IRDA2440]

"DeviceArrayIndex"=dword:2

"Irq"=dword:f

"MemBase"=dword:50008000

"MemLen"=dword:2C

"InterruptBitsShift"=dword:6 ; UART 2 Interrupt Sub Register shift bit.

;"ISTTimeouts"=dword:200 ; every 512 ticks checking Modem status.

"Prefix"="COM"

"Index"=dword:4

"Dll"="serial_smdk2440.Dll"

"Order"=dword:4

"Priority"=dword:0

"Port"="COM4:"

"DeviceType"=dword:0 ; IRDA modem, 0 -> null modem

"FriendlyName"=LOC_DISPLAYNAME_RAWIR

"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"

"DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

ENDIF

[HKEY_LOCAL_MACHINE/Comm/Irsir1/Parms]

"Port"=dword:4

; 0 = Use external dongle, 1 = Use internal IR

"IntIR"=dword:1

; 0 - internal transceiver, 1 - Extended Systems JetEye dongle.

"TransceiverType"=dword:0

ENDIF BSP_NOSERIAL !

;=========== End of UART(Serial) ===============

; @CESYSGEN ENDIF CE_MODULES_SERIAL

复制代码
从上面可以看出,Fl2440 已经有了三个串口作为普通串口驱动注册表信心,甚至红外也保留了。

现在来看最后一步,看看串口驱动的源码F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A/Src/Drivers/Serial/ser_smdk2440.cpp

CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex)

{

CSerialPDD * pSerialPDD = NULL;

switch (DeviceArrayIndex) {

case 0:

pSerialPDD = new CPdd2440Serial1(lpActivePath,pMdd, pHwObj);

break;

case 1:

pSerialPDD = new CPdd2440Serial2(lpActivePath,pMdd, pHwObj);

break;

case 2:

pSerialPDD = new CPdd2440Serial3(lpActivePath,pMdd, pHwObj);

break;



}

if (pSerialPDD && !pSerialPDD->Init()) {

delete pSerialPDD;

pSerialPDD = NULL;

}

return pSerialPDD;

}

复制代码
这个说明FL2440 已经完全具备三串口驱动,所以大家放心,调试串口很容易修改的。下面是修改结论:
一、F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A/Src/Kernel/Oal 下的debug.c
中的#define DEBUG_SERIAL_UART0 1 屏蔽(//#define DEBUG_SERIAL_UART0 1)
二、F:/开发板光盘/FL24402010.01.28/FL2440/Wince/BSP源码包/SMDK2440A_091112/SMDK2440A 下的SMDK2440A.bat文件 的
set DEBUG_SERIAL=SERIAL_UART0 屏蔽(@set DEBUG_SERIAL=SERIAL_UART0) 即可,重新编译整个BSP,打包,我想这样com1 就可以当普通串口用了。呵呵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: