Windows CE 6.0 : 串口IRQ 6, 3E8 只传输16字节
Windows CE 6.0 : Serial port IRQ 6, 3E8 transfers only 16 bytes
我已将自定义 BSP 配置为具有 4 个 COM 端口。
这 3 个 COM 端口工作正常。
我对以下 COM 端口有疑问:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3]
"SysIntr"=dword:16
"IoBase"=dword:03E8
"IoLen"=dword:8
"DeviceArrayIndex"=dword:2
"Prefix"="COM"
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
"Dll"="Com16550.Dll"
"Order"=dword:0
"Flags"=dword:10 ; User MOde: DEVFLAGS_LOAD_AS_USERPROC
任何超过 16 个字节的传输都将被截断。在调试时我们发现,在传输前 16 个字节后,它等待 IIR(中断标识寄存器)"Transmitter Holding Register Empty Interrupt" 事件发生。
但这并没有发生。
关于如何进行的任何想法。
我似乎记得 'modern' UARTS 有一个 16 字节的传输(和接收)缓冲区,以减少对主 CPU 的中断。这可以解释为什么您可以在它停止之前传输 16 个字节。
至于您的定制板不中断的原因,我假设您没有连接从 UART 到主处理器的中断线。
这是 BIOS 问题,更新 BIOS 后已解决
我已将自定义 BSP 配置为具有 4 个 COM 端口。 这 3 个 COM 端口工作正常。
我对以下 COM 端口有疑问:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3]
"SysIntr"=dword:16
"IoBase"=dword:03E8
"IoLen"=dword:8
"DeviceArrayIndex"=dword:2
"Prefix"="COM"
"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}"
"Dll"="Com16550.Dll"
"Order"=dword:0
"Flags"=dword:10 ; User MOde: DEVFLAGS_LOAD_AS_USERPROC
任何超过 16 个字节的传输都将被截断。在调试时我们发现,在传输前 16 个字节后,它等待 IIR(中断标识寄存器)"Transmitter Holding Register Empty Interrupt" 事件发生。
但这并没有发生。
关于如何进行的任何想法。
我似乎记得 'modern' UARTS 有一个 16 字节的传输(和接收)缓冲区,以减少对主 CPU 的中断。这可以解释为什么您可以在它停止之前传输 16 个字节。
至于您的定制板不中断的原因,我假设您没有连接从 UART 到主处理器的中断线。
这是 BIOS 问题,更新 BIOS 后已解决