Author Topic: Need help adding WinXP support for on-board ISA serial ports  (Read 18772 times)

LatencyMachine

  • Member
  • ***
  • Posts: 2
Need help adding WinXP support for on-board ISA serial ports
« on: August 02, 2011, 12:56:28 pm »
Hello,
We are developing an energy industry product that makes use of a WinXP embedded PC (ETX) plugged into a carrier board that contains various hardware peripherals, including 8 serial ports (RS232, RS485, and RS422) that are connected to the ISA bus.  They are not PnP.  They are at fixed bus addresses.  The IRQs are dealt with in an 8-bit interrupt status register, which itself is tied to the PC's IRQ6 line.  The UARTs are 16550 compatible.

We'd like to be able to utilize these ports from within our applications that run under Windows.  From what I have been able to find, it seems that the built-in Windows serial.sys driver should be able to control these ports, including making use of the interrupt status register.

I'm thinking what I need is an INF file that will configure Windows on the specifics and get these ports installed as hardware devices.  And that's where I need help.  So, can anyone provide information (perhaps examples!) or suggest some other approach I should be taking?

I will also mention that we are willing to pay for the development of the INF file and/or any other mechanism that will allow us to utilize these ports, if that is permissible under the policies of this forum.

Jan Axelson

  • Administrator
  • Frequent Contributor
  • *****
  • Posts: 3033
    • Lakeview Research

LatencyMachine

  • Member
  • ***
  • Posts: 2
Re: Need help adding WinXP support for on-board ISA serial ports
« Reply #2 on: August 09, 2011, 10:49:33 am »
Thanks, that info got me going.  Didn't realize it could be that easy.  I created a .reg file and after some tweaking my built-in COM ports are working great.  I'll share the content of my .reg file in case it may be helpful to anyone else coming across this thread.  NOTE:  It turns out that the UARTs on my board are clocked faster than the default assumed by serial.sys, so that is why I have to specify the ClockRate value.  YMMV, and you can likely omit it.

Code: [Select]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial2]
"DosDevices"="COM3"
"Interrupt"=dword:00000006
"InterruptStatus"=dword:00000580
"MaskInverted"=dword:00000000
"PortIndex"=dword:00000001
"PortAddress"=dword:00000600
"ClockRate"=dword:E10000
"LegacyDiscovered"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial3]
"DosDevices"="COM4"
"Interrupt"=dword:00000006
"InterruptStatus"=dword:00000580
"MaskInverted"=dword:00000000
"PortIndex"=dword:00000002
"PortAddress"=dword:00000608
"ClockRate"=dword:E10000
"LegacyDiscovered"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial4]
"DosDevices"="COM5"
"Interrupt"=dword:00000006
"InterruptStatus"=dword:00000580
"MaskInverted"=dword:00000000
"PortIndex"=dword:00000005
"PortAddress"=dword:00000620
"ClockRate"=dword:E10000
"LegacyDiscovered"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial5]
"DosDevices"="COM6"
"Interrupt"=dword:00000006
"InterruptStatus"=dword:00000580
"MaskInverted"=dword:00000000
"PortIndex"=dword:00000006
"PortAddress"=dword:00000628
"ClockRate"=dword:E10000
"LegacyDiscovered"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial6]
"DosDevices"="COM7"
"Interrupt"=dword:00000006
"InterruptStatus"=dword:00000580
"MaskInverted"=dword:00000000
"PortIndex"=dword:00000007
"PortAddress"=dword:00000630
"ClockRate"=dword:E10000
"LegacyDiscovered"=dword:00000000

Jan Axelson

  • Administrator
  • Frequent Contributor
  • *****
  • Posts: 3033
    • Lakeview Research
Re: Need help adding WinXP support for on-board ISA serial ports
« Reply #3 on: August 09, 2011, 10:55:31 am »
Thank you for sharing your solution!

Jan