[LinuxBIOS] SPD as debug channel
segher at kernel.crashing.org
Sat Dec 2 03:01:17 CET 2006
> It seems to me the order of choices is something like this:
> 1. USB debug port. This is going to work well in the x86 world, as
> even the embeddec boards tend to have USB. USB is replacing rs232 in
> those worlds. Based on the boards we have used in last 7 years, on
> x86, setting up the PCI infrastructure at very early boot to use this
> should not be hard. USB is almost always on bus 0. PowerPC sounds a
> bit harder.
Not (much) harder in most cases -- x86 has most of the
same problems (memory windows (MTRR), HT init, PCI in a
completely unknown state at boot time (warm boot), etc.)
> 2. JTAG. This is very common on the PPC boards we have used. It is by
> far the best option, since reflash after a disaster is possible,
> debugging is easy, and so on. Rare on x86, common on PowerPC and ARM.
Common on anything but x86, yes (although almost all x86 CPUs
and chipsets have JTAG, it hardly ever is brought out on the
This is the #1 choice as it gives you *much* more than just
a console; in most cases, it even allows you to boot the
whole system without a ROM at all.
> The next in line are:
> 3. SPD. Just as hard to get working as USB debug port on x86, since
> SPD is on the south. Not useful on most x86 and PowerPC embedded
> boards I have used, as they have no DRAM sockets of any kind -- and,
> if you only have one, the usefulness is quite limited, since you have
> to take the DRAM out to put the debugging in. But, most of the time,
> you're debugging DRAM ...Requires that we design and build a card. I
> don't think this approach is that practical.
Seems it would not too useful on most x86, yeah. Most embedded
boards have I2C headers (or easily accessible pins) all over
the place though, the general idea still holds -- the nice thing
about using a DIMM is that the same connector works on many boards.
> 4. LPC debugger. This one is kind of interesting, requires that we
> build a card, but could have good use -- as long as LPC doesn't go
Not just LPC -- you want a common socket to use too.
> 5. I2C snooper. Just solder onto I2C and use a card you build?
Same as #3 really.
> I still see (1) and (2) as the most practical.
JTAG is best, sure. The "get the LPC bus from the flash socket"
thing would be very nice for many boards, too.
The other solutions only give you a "UART", and require some work
at boot time; EHCI debug works if your board supports it, a UART
on an I2C bus (on a DIMM, perhaps) can be used otherwise.
And let's not forget that most boards have 16550-style ports still ;-)
More information about the coreboot