我有一块AMD X86的板子,板子上ISA总线挂载了一个CPLD 通过CPLD扩展了6个串口。共用了一个中断10,6个串口的地址分别是300、308、310、318、320、328。在XP下测试了这6个串口都能正常收发的。我在CE5.0下配置了注册表如下:
IF BSP_SERIAL3
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3]
"SysIntr"=dword:1A
"IoBase"=dword:300
"IoLen"=dword:8
"DeviceArrayIndex"=dword:2
"Prefix"="COM"
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
"Dll"="Com16550.Dll"
"Order"=dword:0
; Turn on follows for Installable ISR (isr16550 supporting SOFTWARE FIFO)
"Irq"=dword:A
"IsrDll"="isr16550.dll"
"IsrHandler"="ISRHandler"
[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
; COM4
IF BSP_SERIAL4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial4]
"SysIntr"=dword:23
"IoBase"=dword:308
"IoLen"=dword:8
"DeviceArrayIndex"=dword:3
"Prefix"="COM"
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
"Dll"="Com16550.Dll"
"Order"=dword:0
; Turn on follows for Installable ISR (isr16550 supporting SOFTWARE FIFO)
"Irq"=dword:A
"IsrDll"="isr16550.dll"
"IsrHandler"="ISRHandler"
[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
其他的配置类似。
另外,我在init.c中加入可如下:
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 10, 10); //默认的 此串口能正常收发
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 19, 10);
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 20, 10);
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 21, 10);
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 22, 10);
OALIntrStaticTranslate(SYSINTR_FIRMWARE + 23, 10);
现在CE系统中串口都可creatfile成功。但是一发送数据就卡死。
请问应该如何配置