Windows CE 6.0: Seriel port IRQ 6, 3E8 overfører kun 16 bytes

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har konfigureret vores brugerdefinerede BSP til at have 4 COM porte.
Ud af disse 3 COM-porte fungerer fint.


Jeg har problemer med nedenstående COM-port:


 [HKEY\_LOCAL\_MACHINEDriversBuiltInSerial3]
                        "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


Enhver transmission af mere end 16 bytes er afkortet. Ved fejlsøgning fandt vi, at den efter at have transmitteret de første 16 byte venter på, at IIR (Interrupt Identification Register) 'Transmitter Holding Register Empty Interrupt' -hændelsen vil forekomme.


Men det sker ikke.


Eventuelle tanker om, hvordan man fortsætter med dette.

Bedste reference


Jeg synes at huske, at 'moderne' UARTS har en 16 byte transmitter (og modtager) buffer for at tillade færre afbrydelser til hoved-CPU'en. Dette ville forklare, hvorfor du kan sende 16 bytes, før det stopper. [2]


Hvad angår årsagen til, at dit brugerdefinerede bord ikke afbryder, vil jeg antage, at du ikke har tilsluttet afbrydelseslinjen fra UART til din hovedprocessor.

Andre referencer 1


Det var et BIOS problem, og det blev løst efter opdatering af BIOS