[coreboot] Tester devices [was: QA contribution]
Juhana Helovuo
juhe at iki.fi
Sat Feb 12 19:55:08 CET 2011
Peter Stuge wrote:
> Juhana Helovuo wrote:
>> Here are some images of my first (incomplete) prototype:
>>
>> http://alpskari.asiantuntijat.org/~juhe/spi-flasher-piirilevyt/
>
> Looks like a great start!
Now there is more progress. After some building, coding, and debugging I
have the tester sort-of-working.
The first version of the hardware works.
In this image you can see the tester plugged into an Asus mainboard:
http://alpskari.asiantuntijat.org/~juhe/in-system-flasher/DSC08430.jpg
Today I successfully used this setup to reflash the mainboard from the
host PC via flashrom.
The USB cable goes to a host computer, which is running a modified
flashrom program. The flashrom is extended with a serprog_spi module,
which can transfer SPI over the serprog protocol, and additionally
toggle SPI bus multiplexer between the MCU and mainboard at the
beginning and end of programming.
Target reset switch is still operated manually, but there is hardware
support for operating also that from the tester board. Reset pins on the
mainboard need to be connected to pin header in the corner of the bigger
PCB, and flashrom needs to be extended to send also the reset command to
the tester. The ATX power button can be operated in the same fashion.
The tester hardware has the following features:
* Single USB connection to host PC, tester is USB powered.
* RS-232 serial port to collect boot log from the target mainboard.
Tested to work at 115200 bps.
* Two software-controllable switches for controlling mainboard
pushbutton inputs. Button-sensing voltage on mainboard need not be the
same as Vcc on tester.
* Small PCB mounted to mainboard can be powered by tester PCB or mainboard.
* Mainboard can operate normally even when tester has no power.
* Tester can access the ROM also when disconnected from the target
mainboard.
* Two software-controllable LEDs to impress people.
The work is still quite incomplete:
* The first PCB had two layout errors (corrected by jumper wires), so it
needs some rework.
* Some host-side software is missing. Flashrom extension or a separate
program is needed to control the pushbutton inputs.
* The PCB could be extended to include a software-controlled isolated
switch to control a relay, which can switch mains power of the target
mainboard on or off. I am still uncertain whether I want to have
self-hacked devices with 230 VAC parts in my house.
* Currently there is no tester firmware that could operate both the SPI
and RS-232. The main problem is that the AT90USB162 microcontroller
supports only up to five USB endpoints (including default control EP). I
do not know if it is possible to implement two USB CDC class virtual
serial ports with less than seven EPs. With two serial ports, one could
represent the RS-232 interface, and other be used to control the
programmer without writing any custom USB drivers.
This could be solved either in software by writing a custom USB driver
for both the tester and the host, or in hardware by replacing the
microcontroller with a more capable model. If anyone on the list can
suggest any easier solutions, I'd be glad to hear about them.
* The handling of SPI ROM is horribly slow. Programming and verifying 1
MByte ROM takes about half an hour. The main suspect is nonexistent USB
data buffering in the tester firmware.
Best regards,
Juhana Helovuo
More information about the coreboot
mailing list