| Tested by [[User:Uwe|Uwe Hermann]]. Any physical USB port will work, as the code tries all ports until the one with the attached USB Debug device is found.

|- bgcolor="#dddddd" valign="top"

|- bgcolor="#dddddd" valign="top"

Line 47:

Line 48:

| SiS966

| SiS966

| style="background:yellow" | Untested

| style="background:yellow" | Untested

−

| '''Note:''' It's unclear if the chipset actually has EHCI Debug Port functionality and if yes, whether the current coreboot code supports it properly (or whether it's just copy-pasted code from another chipset).

+

| '''Note:''' It's unclear if the chipset actually has EHCI Debug Port functionality, and (if yes), whether the current coreboot code supports it properly (or whether it's just copy-pasted code from another chipset).

|}

|}

Line 73:

Line 74:

Generally, each EHCI controller can offer at most one debug port. That port corresponds to a fixed physical USB port. Locating that physical port is rather difficult because you need to look at lots of information.

Generally, each EHCI controller can offer at most one debug port. That port corresponds to a fixed physical USB port. Locating that physical port is rather difficult because you need to look at lots of information.

−

Carl-Daniel Hailfinger has written [http://coreboot.org/pipermail/coreboot/2008-September/038635.html a script] which can help finding that port.

+

Carl-Daniel Hailfinger [http://www.coreboot.org/pipermail/coreboot/2008-September/038618.html has written] [http://www.coreboot.org/pipermail/coreboot/attachments/20080909/ae11c291/attachment.sh a script] which can help finding that port.

== Hardware capability ==

== Hardware capability ==

Line 79:

Line 80:

The Debug Port is optional, please check if EHCI controllers near you support it:

The Debug Port is optional, please check if EHCI controllers near you support it:

Look for a line like the last one above. Please include the PCI device ID too:

Look for a line like the last one above. Please include the PCI device ID too:

−

$ '''lspci -ns $(lspci|grep EHCI|cut -f1 -d' ')'''

+

$ '''for i in $(lspci|grep EHCI|cut -f1 -d' ') ; do

+

$ ''' lspci -ns $i'''

+

$ '''done'''

00:1d.7 0c03: 8086:265c (rev 03)

00:1d.7 0c03: 8086:265c (rev 03)

Line 125:

Line 130:

* 1039:7002 SiS EHCI (rev 00)

* 1039:7002 SiS EHCI (rev 00)

−

== Where to buy ==

+

== Devices/Dongles ==

−

Currently there seems to be only two devices which can use the EHCI Debug Port, the '''NET20DC''' and the '''AMIDebug RX'''.

+

To be able to use the debug port it needs to be connected to a compatible device.

+

Currently there seems to be only two commercial devices available which can use the EHCI Debug Port, the '''NET20DC''' and the '''AMIDebug RX'''.

+

+

=== DIY ===

+

But you can also make your own usb debug dongle, see [[DIY_EHCI_debug_dongle]].

=== NET20DC ===

=== NET20DC ===

Line 140:

Line 149:

* http://www.ami.com/amidebugrx/

* http://www.ami.com/amidebugrx/

+

+

== See also ==

+

* [[EHCI Gadget Debug]]

== More information ==

== More information ==

Revision as of 11:30, 7 June 2013

Ajays NET20DC USB Debug Device.

Serial ports have been the primary means of early debugging of new coreboot ports. New hardware doesn't always have a serial port and another method for early debugging is needed.

The EHCI Debug Port is an optional capability of EHCI controllers which can be used for that purpose.

All USB2 host controllers are EHCI controllers. The debug port provides a mode of operation that requires neither RAM nor a full USB stack. A handful of registers in the EHCI controller PCI configuration and BAR address space are used for all communication. All three transfer types are supported (OUT/SETUP/IN) but transfers can only be a maximum of 8 bytes and only one specific physical USB port can be used. A Debug Class compliant device is the only supported USB function that can be communicated with.

While the Debug Class functional spec describes a device communicating over USB also with the debugging host (aka remote) it would be very possible to make a Debug Class device with a regular serial port on the other end. One thing to watch out for is that such a device might not be able to handle the same throughput as the debug port itself and hence may lose data unless it can do some buffering.

Using the EHCI debug port

usb_debug kernel module and minicom

On your "host PC" you need a Linux system which is recent enough to provide the usb_debug kernel module. When you attach the Ajays Net20DC device to your host PC, it will create a /dev/ttyUSB0 device to which you can connect as usual using any serial terminal program, e.g. minicom (115200, 8n1).

TODO: Is the Baud rate actually configurable somewhere?

You must connect the NET20DC to a special USB port on your coreboot target board (not all of the USB ports will work!), often this is USB port 1. If in doubt, try all available ports to check which one works on your board.

Then you can power up your coreboot target board and you should see the usual coreboot bootlog in minicom on your host PC.

usb_debug_io.c

Finding the USB debug port

Generally, each EHCI controller can offer at most one debug port. That port corresponds to a fixed physical USB port. Locating that physical port is rather difficult because you need to look at lots of information.

Devices/Dongles

To be able to use the debug port it needs to be connected to a compatible device.
Currently there seems to be only two commercial devices available which can use the EHCI Debug Port, the NET20DC and the AMIDebug RX.