平台:S3C6410+WinCE6.0
问题现像:
当启用UART0也就是COM1时,无论插没插USB线,一开机,它都会弹出个USB连接的窗口,
原因分析:
是因为在三星原版本BSP里的串口驱动上制定了UART0为modem(unimodem),没有人打开串口但串口有数据时,会引发modem事件,导致系统以为有人在连接,所以尝试连接主机,我在注册表中尝试过把unimodem弄掉但还是没有解决。
在SMDK6410.BAT把UART0关闭,打开UART3,就没有出现这个问题。所以打算在注册表里把UART0的键放到UART3来做试试,试了,还是不行,只要是打开UART0,也就是
"DeviceArrayIndex"=dword:0 ;
都会出现开机无论插没插USB线都弹出连接窗口的问题。
离真相越来越近了,只要找出在串口驱动里针对UART0与UART1等口有什么区别就行了。
在串口驱动中,发现初始UART0用的是类CPdd6410Serial0,它确实与其他口的类不一样。加了个modem的功能在里面。这就好办了,只要把modem功能去就,让它变成一个普通串口就行了。请看下面的解决办法
解决方法:
目录 /SMDK6410/SRC/DRIVERS/SERIAL
ser_smdk6410.cpp 文件
CPdd6410Serial0 类中把InitModem 函数修改如下
- virtual BOOL InitModem(BOOL bInit)
- {
- // SetDTR(bInit);
- // return CPdd6410Uart::InitModem(bInit);
- return TRUE;
也就是把modem的功能去掉,这样就不会开机弹出连接窗口了。