caep
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2008-03-09
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:1884回复:6

WINCE下解决COM1调试信息输出的问题

楼主#
更多 发布于:2007-09-13 20:06
我的硬件平台是X86的,因为是自己做的底板,当初没考虑那么多,物理硬件只引出了一个串口,COM1,但现在我才知道WINCE下COM1是用做输出调试信息的,没法用来直接通信。我查了一下论坛,有两个解决方法:
        1,在BIOS里面修改设置,把COM1和COM2的设置互换,COM1的IOBASE原本是0X3F8,IRQ是4;COM2的IOBASE原本是0X2F8,IRQ是3,换过后成了COM1的IOBASE是0X2F8,IRQ是3,COM2的IOBASE是0X3F8,IRQ是4,再到PLATFORM.REG里面把两个也换过来,这样就是把COM2口用做调试信息输出,COM1作我的应用了用的结果是COM1可以正常通信,再没有调试信息输出了,但用示波器量了一下硬件端口,通信速度始终上不去,原来的COM1调试信息输出速率能达到几百HZ,换过后的总线的数据传输只能达到几十HZ,通信波特率我都设的115200,我不知道倒底是不是因为COM1和COM2的互换影响了的,看样子这种方法不能采用。
         2。就是改OAL下的DEBUG.C文件,屏掉调试信息,但我改来改去,始终都有调试信息从COM1口输出来,我有一个理解是COM1还是做系统调试信息输出端口,但同时和我的应用程序共享,如果把调试信息屏蔽掉,就可以只输出我的应用数据了。不知道我这种理解对不对?另外有知道怎么改的的大狭们请指点指点小弟啊,小弟先谢谢了。
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-14 13:07
以下是转帖,网上搜的,来源不记得了,我试的可以,记住,做完这些改动以后一定要
Rebuild PlatForm


By default, Windows CE .NET uses COM1 for its own debugging purposes. If you have other COM ports on your device, Windows CE .NET will map those for application use (physical COM2 becomes logical COM1, etc.). However, certain projects may want to use all of the COM ports for application use.
 
Follow these steps:
 
 
 
Tell the OS not to use a debug COM port by changing OEMInitDebugSerial() (found in your OAL's debug.c)  
if ( ! pBootArgs->ucBaudDivisor ) {
pBootArgs->ucBaudDevisor = 6; // Default to 19.2 if nothing specified.
}
 
pBootArgs->ucComPort = 0; // ADD THIS LINE
 
switch ( pBootArgs->ucComPort ) {
 
 
 
Change the mapping of COM ports by changing platform.reg.  
For example, change the existing registry keys from:
 
 
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"SysIntr"=dword:13 ; NOTE: This is physical COM2 (subtract 10 for IRQ)
"IoBase"=dword:02F8 ; NOTE: This is physical COM2
...
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial2]
"SysIntr"=dword:14 ; NOTE: This is physical COM3 (subtract 10 for IRQ)
"IoBase"=dword:03E8 ; NOTE: This is physical COM3
...
 
to:
 
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
"SysIntr"=dword:14 ; NOTE: This is physical COM1 (subtract 10 for IRQ)
"IoBase"=dword:03F8 ; NOTE: This is physical COM1
...
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial2]
"SysIntr"=dword:13 ; NOTE: This is physical COM2 (subtract 10 for IRQ)
"IoBase"=dword:02F8 ; NOTE: This is physical COM2
...
 
Note: Your results may vary. If your system has different IoBase/IRQ settings for its COM ports, configure your platform.reg appropriately.
 
Another alternative is to change the IoBase/IRQ settings for your COM ports in your BIOS. Windows CE .NET hard codes (for CEPC) using 3F8/4 (typical com1) for its use. If you assign those settings to COM4, for example, the Windows CE .NET debug messages will route to that physical port.
 
These tips are for informational purposes and are provided only as a convenience. The entire risk of use or results in connection with the use of these tips remains with the user.
caep
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2008-03-09
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-14 14:00
slen您好,我就是照这样改的debug.c和platform.reg文件的,再在应用程序里调用 com1口,还是不行,com1口始终有调试信息输出,唯一不同的是我改了debug.c后rebuild NK的,然后才改了platform.reg,做了make image ,生成NK.BIN,但不行,不知道原因是什么,你所说的改完后重新编译platform,是对整个项目重新编译呢,还是只对platform.reg重新编译就可以了
caep
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2008-03-09
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-14 14:04
哦,补充一下,我改的platform.reg是我工程项目下面的platform.reg,所以改完后就直接make image的,这样不知道行不行,是不是必须要改平台下面的platform.reg?
caep
驱动牛犊
驱动牛犊
  • 注册日期2005-12-22
  • 最后登录2008-03-09
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-14 14:12
不好意思,再补充一下,我的X86平台下面的platform.reg对com2,com3的设置原文如下:
    "SysIntr"=dword:13 ;
     "IoBase"=dword:02F8 ;

    "SysIntr"=dword:1A ;  
    "IoBase"=dword:03E8 ;
  3的端口映射与你介绍的那个资料不太一样啊,SysIntr原来是1A,而不是14.
slenslen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-21
  • 最后登录2008-09-09
  • 粉丝0
  • 关注0
  • 积分430分
  • 威望46点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-17 13:18
哦,补充一下,我改的platform.reg是我工程项目下面的platform.reg,所以改完后就直接make image的,这样不知道行不行,是不是必须要改平台下面的platform.reg?


要改平台下面的才行,工程项目下的不行
warduck
驱动牛犊
驱动牛犊
  • 注册日期2007-09-19
  • 最后登录2010-10-28
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望24点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-24 23:29
我在arm s3c2440上修改成功了已经。
只要修改debug.c就可以了。不知道arm和x86的区别。
仔细看里面的代码,要改初始化部分,原来用的是uart1,我要改成uart0。

里面要修改gpio,因为里面有3各管角用作收,发,地。要看芯片手册挪到uart0对应的3个。

然后把对uart1控制器的操作都变到uart0上。主要就是把基地址变过来就行了。
驱网无线,快乐无限
游客

返回顶部