I am hoping someone can help me troubleshoot an expansion board that I
added to the TS7800. The basic problem is that it has serial ports on
it and I am having trouble accessing them. It is a GPS module with a
UART interface. I can configure the base address and IRQ manually
through switches on the board and then I am supposed to be able to
access the GPS through a /dev/tty device. The uart on the GPS is a
xr16c2850 but is 16550A compatible.
To start off I had these settings:
:eclipse# setserial -g /dev/ttyS*
/dev/ttyS0, UART: 16550A, Port: 0x0000, IRQ: 3
/dev/ttyS1, UART: 16550A, Port: 0x0000, IRQ: 4
/dev/ttyS2, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS3, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS4, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS5, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS6, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS7, UART: unknown, Port: 0x0000, IRQ: 0
:eclipse# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0xF1012000 irq:3 tx:2069 rx:105 RTS|CTS|DTR|DSR|CD
1: uart:16550A mmio:0xF1012100 irq:4 tx:53 rx:0 RTS|DTR|DSR|CD
2: uart:unknown port:00000000 irq:0
3: uart:unknown port:00000000 irq:0
4: uart:unknown port:00000000 irq:0
5: uart:unknown port:00000000 irq:0
6: uart:unknown port:00000000 irq:0
7: uart:unknown port:00000000 irq:0
I then added the module and ended up with these settings:
:eclipse# modprobe ts7800_isa16550
:eclipse# setserial -g /dev/ttyS*
/dev/ttyS0, UART: 16550A, Port: 0x0000, IRQ: 3
/dev/ttyS1, UART: 16550A, Port: 0x0000, IRQ: 4
/dev/ttyS2, UART: 16850, Port: 0x0000, IRQ: 70
/dev/ttyS3, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS4, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS5, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS6, UART: unknown, Port: 0x0000, IRQ: 0
/dev/ttyS7, UART: unknown, Port: 0x0000, IRQ: 0
:eclipse# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0xF1012000 irq:3 tx:3178 rx:150 RTS|CTS|DTR|DSR|CD
1: uart:16550A mmio:0xF1012100 irq:4 tx:53 rx:0 RTS|DTR|DSR|CD
2: uart:XR16850 mmio:0xEE0003E8 irq:70 tx:0 rx:0
3: uart:unknown port:00000000 irq:0
4: uart:unknown port:00000000 irq:0
5: uart:unknown port:00000000 irq:0
6: uart:unknown port:00000000 irq:0
7: uart:unknown port:00000000 irq:0
The interesting thing to note is that it seems that the module found
the uart on my GPS board because it identified it as a XR16850. It is
also interesting that it assigned it irq number 70, which my gps board
doesn't support. So I looked at the current interrupt assignments:
:eclipse# cat /proc/interrupts
CPU0
0: 27289 mv Timer Tick
3: 578 mv serial
4: 6 mv serial
12: 0 mv ehci_hcd:usb2
17: 0 mv ehci_hcd:usb1
21: 2 mv eth0
29: 0 mv mvSata
80: 0 mv tsuart_uarts
81: 0 mv tsuart_uarts
82: 0 mv tsuart_uarts
83: 0 mv tsuart_uarts
84: 0 mv tsuart_uarts
85: 0 mv tsuart_uarts
86: 0 mv tsuart_uarts
87: 0 mv tsuart_uarts
88: 0 mv tsuart_uarts
89: 0 mv tsuart_uarts
Err: 0
I then picked an interrupt supported by the GPS board and changed the
device irq using setserial. I also made sure that the address selected
through switches on the GPS board was set to 0x3E8 and it was.
:eclipse# setserial /dev/ttyS2 irq 7
When I read and write to /dev/ttyS2 in my application it doesn't throw
any errors. The read always returns 0 characters received and the
write always returns the number of characters that I intended to send,
however the tx and rx fields never change int /proc/tty/driver/serial:
:eclipse# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0xF1012000 irq:3 tx:4658 rx:212 RTS|CTS|DTR|DSR|CD
1: uart:16550A mmio:0xF1012100 irq:4 tx:53 rx:0 RTS|DTR|DSR|CD
2: uart:XR16850 mmio:0xEE0003E8 irq:7 tx:0 rx:0 <-----HERE
So I doubt that I am actually sending or receiving anything.
Does any one have experience with getting serial ports to work on
expansion boards or have any idea what I am missing??
Thanks.
Bill
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|