6324|24

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CE5.0下多串口的问题 [复制链接]

平台:X86的板卡(底板+串口扩展板卡)  CE5.0

备注:底板上自带两个串口,扩展板带6个串口,所有的串口都用同一个驱动

NK已经编译通过,但是默认的只有3个扩展板卡,我修改了platform.reg中的串口部分,添加了其他串口,修改好环境变量后makeimg出现错误(大意是提示我注册表初始化失败)regcomp: Error: InitRegistry FAILED on or near line 7677 of E:\WINCE500\PBWorkspaces\Test_Multi_Serial\RelDir\CEPC_x86_Release\reginit.ini

各位帮我看下问题出现在哪里可以么,之前编译过一个内核完成了这个功能了的,这次编译不知道哪里不合适总是通过不了。我试着把串口5,6部分的注册信息去掉,可以通过,串口也是通的。但是一旦加上5,6串口的部分就无法通过!

默认情况下:serial部分注册信息如下:

IF BSP_NOSERIAL !
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
   "SysIntr"=dword:13
   "IoBase"=dword:02F8
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:0
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0
   "Priority"=dword:0
; Turn on follows for Installable ISR (isr16550 supporting SOFTWARE FIFO
;   "Irq"=dword:3
;   "IsrDll"="isr16550.dll"
;   "IsrHandler"="ISRHandler"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL
   "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 BSP_NOSERIAL !

IF BSP_SERIAL2
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial2]
   "SysIntr"=dword:14
   "IoBase"=dword:03E8
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:1
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial2\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL2
   "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 BSP_SERIAL2

IF BSP_SERIAL3
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3]
   "SysIntr"=dword:15
   "IoBase"=dword:02E8
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:2
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL3
   "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 BSP_SERIAL3

我添加的部分如下:

IF BSP_SERIAL4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
   "SysIntr"=dword:1A
   "IoBase"=dword:0100
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:3
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL4
   "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 BSP_SERIAL4

IF BSP_SERIAL5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial5]
   "SysIntr"=dword:1F
   "IoBase"=dword:0110
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:4
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial5\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL5
   "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 BSP_SERIAL5

IF BSP_SERIAL6
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial6]
   "SysIntr"=dword:15
   "IoBase"=dword:0118
   "IoLen"=dword:8
   "DeviceArrayIndex"=dword:5
   "Prefix"="COM"
   "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
   "Dll"="Com16550.Dll"
   "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial6\Unimodem]
   "Tsp"="Unimodem.dll"
   "DeviceType"=dword:0
   "FriendlyName"=LOC_FRIENDLYNAME_SERIAL6
   "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 BSP_SERIAL6

有做过这方面内核的前辈指点一下,问题可能是出在哪里了呢?小弟接触时间不长,这个问题搞了有些时间,始终都没搞定,谢!



最新回复

这么说倒是有点联系了,注释掉后就不会出现鼠标卡住和乱跑的现象 前面Range部分也是只有3段,5,6的都改成4就是说一起使用剩下的资源?  详情 回复 发表于 2008-9-19 11:37
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
修正:扩展板卡是4个串口

另外,platform.reg还有部分关于串口的,我修改了后就不会提示注册初始化错误,但是也无法通过(记得上次没有修改那部分,也可以用的)

F BSP_NOSERIAL
   "Ranges"="0-0x5F,0x65-0x277,0x284-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL
IF BSP_NOSERIAL !
   "Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL !
IF BSP_SERIAL2
   "Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL2
IF BSP_SERIAL3
   "Ranges"="0-0x5F,0x65-0x277,0x284-0x2E7,0x2F0-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL3
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
regcomp: Error: InitRegistry FAILED on or near line 7677 of E:\WINCE500\PBWorkspaces\Test_Multi_Serial\RelDir\CEPC_x86_Release\reginit.ini

这里面有问题。
IF BSP_SERIAL4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
  "SysIntr"=dword:1A
  "IoBase"=dword:0100
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:3
  "Prefix"="COM"
  "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"//这个地方能这样定义吗?不适合第3个重复了?
  "Dll"="Com16550.Dll"
  "Order"=dword:0

DeviceArrayIndex。。这个。。。可以。
我都是用“Index”=dword:x

"IoBase"=dword:0100 这个。。。。最好再确认下。。。会不会是这个问题
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用楼主 wdmoona 的帖子:
NK已经编译通过,但是默认的只有3个扩展板卡,我修改了platform.reg中的串口部分,添加了其他串口,修改好环境变量后makeimg出现错误(大意是提示我注册表初始化失败)regcomp: Error: InitRegistry FAILED on or near line 7677 of E:\WINCE500\PBWorkspaces\Test_Multi_Serial\RelDir\CEPC_x86_Release\reginit.ini

请打开E:\WINCE500\PBWorkspaces\Test_Multi_Serial\RelDir\CEPC_x86_Release\reginit.ini 文件,并定位到7677行,看一下到底是哪行的出错
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

5
 
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"//这个位置,我第一次做成功时候就是没有改动的

“Index”=…  这个我也有在用

IOBase的话,基地址在扩展板上可以调节,上次我也是用的同样的地址和中断,之后把扩展板卡设置为相应的就ok

我现在在怀疑是不是“Range”部分有问题,但是又不好确认,我修改了几次,都不行,不知道该怎么设置了(修改过后就不会提示初始化问题了,但依旧无法通过编译)
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
回3楼: "FriendlyName"="COM1 上的串行电缆:"5//出错的行

"FriendlyName"="COM4 上的串行电缆:"//第四串口是这个样子的

我把5,6串口部分的修改去掉,是可以编译通过的,测试串口也都通!(串口4的修改部分应该不会有什么错误)

我现在想知道为什么加上5,6部分就会报错,排查好长时间,没搞定,才过来求助的
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
LOC_FRIENDLYNAME_SERIAL5 和LOC_FRIENDLYNAME_SERIAL6 有定义吗?
或者你先改成随便一个字符串试试看
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 
在编译的时候出现了如下警告:

makeimg: Warning Substituted string LOC_FRIENDLYNAME_SERIAL for LOC_FRIENDLYNAME_SERIAL5

但是不知道是什么原因导致的,排查中
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
虽然不会,但是很了解,帮顶
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
回3楼: "FriendlyName"="COM1 上的串行电缆:"5//出错的行

"FriendlyName"="COM4 上的串行电缆:"//第四串口是这个样子的

..你用中文来的?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
SysIntr"=dword:1A
  "IoBase"=dword:0100
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:3

  "SysIntr"=dword:1F
  "IoBase"=dword:0110
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:4

  "SysIntr"=dword:15
"IoBase"=dword:0118
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:5
系统中断号SysIntr是根据什么给的?
基地址IoBase是根据什么写的?
如果这两项没有问题,我感觉就要看看cmos设置了。
如果还不行,可以怀疑一下驱动,想办法确认一下肯定好用才行。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
回阿肆(xumercury ):恩,是做的中文内核

回大米粥(zzhll ):中断和基地址都是根据主板上已经用的资源情况和扩展板可设置的资源,主板里中断10,11,15是预留出来了的,中断5是给音频的,我已经预留给扩展板卡了。至于基地址,我们平时也都是用我设置的那些基地址进行扩展板卡的测试的


说一下进展情况:昨天晚上对.reg文件又进行了一些修改后makeimg通过了,在这里多谢 雨霖(songtitan ) 前辈的提醒,我把5,6的"FriendlyName"都改为4编译就通过了,测试了下,这样所有的驱动就都能加上了,但是还有个问题就是串口测试时候只能5对留发送数据,但是6对5发送数据不通,也可能是我资源情况分配的还不合理导致的(但是我按所有的设置情况在dos下测试所有串口是没有问题的,这点让我很郁闷),不知道为什么到了CE下就不通了,继续排查~~

这样看来,可能真的是LOC_FRIENDLYNAME_SERIAL5 和LOC_FRIENDLYNAME_SERIAL6没有定义的缘故,今天继续排查下,搞定了回来结贴。

不知道这些量都是在哪里进行定义的,有知道的大虾给指点下

 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

13
 
再多问个问题,哪位可以给小弟解释下Range那部分的相关问题么,现在有点迷惑

IF BSP_NOSERIAL
  "Ranges"="0-0x5F,0x65-0x277,0x284-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL
IF BSP_NOSERIAL !
  "Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0xFFFF"
ENDIF ; BSP_NOSERIAL !
IF BSP_SERIAL2
  "Ranges"="0-0x5F,0x65-0x277,0x284-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL2
IF BSP_SERIAL3
  "Ranges"="0-0x5F,0x65-0x277,0x284-0x2E7,0x2F0-0x2F7,0x300-0x38F,0x392-0x3DF,0x3E2-0x3E7,0x3F0-0xFFFF"
ENDIF ; BSP_SERIAL3

默认情况下也是只有3段,4,5,6串口不需要这里有设置的么(没做任何改动,编译也通过了的)?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

14
 
如果 骥骥他爸 或者 老斩 有看到这个帖子,希望能给小弟些帮助,谢过!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

15
 
扩展部分用下面参数试试:
IF BSP_SERIAL4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
  "SysIntr"=dword:1A
  "IoBase"=dword:0100
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:3
  "Prefix"="COM"
  "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
  "Dll"="Com16550.Dll"
  "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4\Unimodem]
  "Tsp"="Unimodem.dll"
  "DeviceType"=dword:0
  ;"FriendlyName"=LOC_FRIENDLYNAME_SERIAL4
  "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 BSP_SERIAL4

IF BSP_SERIAL5
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial5]
  "SysIntr"=dword:1F
  "IoBase"=dword:0110
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:4
  "Prefix"="COM"
  "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
  "Dll"="Com16550.Dll"
  "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial5\Unimodem]
  "Tsp"="Unimodem.dll"
  "DeviceType"=dword:0
  ;"FriendlyName"=LOC_FRIENDLYNAME_SERIAL5
  "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 BSP_SERIAL5

IF BSP_SERIAL6
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial6]
  "SysIntr"=dword:15
  "IoBase"=dword:0118
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:5
  "Prefix"="COM"
  "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
  "Dll"="Com16550.Dll"
  "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial6\Unimodem]
  "Tsp"="Unimodem.dll"
  "DeviceType"=dword:0
  ;"FriendlyName"=LOC_FRIENDLYNAME_SERIAL6
  "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 BSP_SERIAL6

并且在PB环境变量中设置扩展串口变量:
BSP_SERIAL4=1
BSP_SERIAL5=1
BSP_SERIAL6=1
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
对不起,前面那楼说的是 冀冀他爸(lenux)
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 11 楼 wdmoona 的回复:
回阿肆(xumercury ):恩,是做的中文内核

回大米粥(zzhll ):中断和基地址都是根据主板上已经用的资源情况和扩展板可设置的资源,主板里中断10,11,15是预留出来了的,中断5是给音频的,我已经预留给扩展板卡了。至于基地址,我们平时也都是用我设置的那些基地址进行扩展板卡的测试的


说一下进展情况:昨天晚上对.reg文件又进行了一些修改后makeimg通过了,在这里多谢 雨霖(songtitan ) 前辈的提醒,我把5,6的…

LOC_FRIENDLYNAME_SERIAL的定义只能自己在BSP里搜索啦,应该是在reg某个地方define的。
同时,也要确认BSP_SERIAL1~6等环境变量的确被set了。

Ranges我的理解应该是中断的资源分配情况,可能也需要你再增加一些for serial 5和6的。这个我也不太理解。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 9 楼 xumercury 的回复:
回3楼: "FriendlyName"="COM1 上的串行电缆:"5//出错的行

"FriendlyName"="COM4 上的串行电缆:"//第四串口是这个样子的

..你用中文来的?


不好意思,刚才理解错误,上面提供的信息是我编译完后,reginit.ini文件里相应行里的内容
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 14 楼 zhoukq 的回复:
扩展部分用下面参数试试:
IF BSP_SERIAL4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
  "SysIntr"=dword:1A
  "IoBase"=dword:0100
  "IoLen"=dword:8
  "DeviceArrayIndex"=dword:3
  "Prefix"="COM"
  "IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
  "Dll"="Com16550.Dll"
  "Order"=dword:0

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4\Unimodem]
  "Tsp"="Unimodem.dll"
  "Devic…


试了下  同样是6口不通
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

20
 
我把5,6的"FriendlyName"都改为4编译就通过了,测试了下,这样所有的驱动就都能加上了

mark下...这个真还第一次听说
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表