Re: Odd Serial Port Problem
red floyd wrote:[color=blue]
> I'm using a RTD CM313HR 4-port board, strapped for COM3-6, with a pc486
> BSP. This is a PC104 board, so all the ports are on the ISA bus.
>
> I've got the ports strapped as follows:
> COM3 3e8, IRQ5
> COM4 2e8, IRQ9
> COM5 280, IRQ7
> COM6,288, IRQ10
>
> There is nothing else on any of these IRQs.
>
> I've modified configInum.h as follows:
>
> #define INT_NUM_COM3 (INT_NUM_IOAPIC_IRQ5)
> #define INT_NUM_COM4 (INT_NUM_IOAPIC_IRQ9)
> #define INT_NUM_COM5 (INT_NUM_IOAPIC_IRQ7)
> #define INT_NUM_COM6 (INT_NUM_IOAPIC_IRQA)
> #define INT_NUM_COM3 (INT_NUM_IRQ0 + COM3_INT_LVL)
> #define INT_NUM_COM4 (INT_NUM_IRQ0 + COM4_INT_LVL)
> #define INT_NUM_COM5 (INT_NUM_IRQ0 + COM5_INT_LVL)
> #define INT_NUM_COM6 (INT_NUM_IRQ0 + COM6_INT_LVL)
>
> And pc.h as follows:
>
> #define COM3_BASE_ADR 0x3e8
> #define COM4_BASE_ADR 0x2e8
> #define COM5_BASE_ADR 0x280
> #define COM6_BASE_ADR 0x288
> #define COM3_INT_LVL 0x05
> #define COM4_INT_LVL 0x09
> #define COM5_INT_LVL 0x07
> #define COM6_INT_LVL 0x0A
>
> and sysSerial.c by removing the ifdef in devParas[], and adding/tweaking
> the following members of devParas[]:
>
> ,{INT_NUM_COM3,COM3_BASE_ADR,UART_REG_ADDR_INTERVAL,COM3_INT_LVL}
> ,{INT_NUM_COM4,COM4_BASE_ADR,UART_REG_ADDR_INTERVAL,COM4_INT_LVL}
> ,{INT_NUM_COM5,COM5_BASE_ADR,UART_REG_ADDR_INTERVAL,COM5_INT_LVL}
> ,{INT_NUM_COM6,COM6_BASE_ADR,UART_REG_ADDR_INTERVAL,COM6_INT_LVL}
>
> It appears that COM3 and COM6 work properly, but that COM4 and COM5 do
> not receive interrupts. I've checked the ports with the manufacturers
> diagnostics, and they appear to work properly.
>
> Does anyone have experience with either this particular hardware, or
> upper COM ports on a pc{486,pentium,...}?[/color]
Apparently, the pc486 BSP automatically configures IRQ7 to a stray
interrupt... *** AFTER calling sysSerialHwInit2 ***. This is ungood. I
commented out the offending line in sysLib.c, and COM5 now works (on
IRQ7), but I'm still having problems with IRQ9. It looks like pc486
assumes IRQ9 is the second ATA port instead of IRQ15. I've adjusted
that in my configInum.h and pc.h as needed, but still have problem.
In my BIOS, I have IRQs 3,4,5,6,7,9 and 10 configured as Legacy ISA so
the PCI won't grab them.
I can't seem to find any other clobber of IRQ9 after serial port init.
Any ideas?
Thanks