Forum: Projekte & Code openbiosprog-spi - Open-Hardware / Open-Source USB-basierter SPI BIOS-Chip Programmer


von Uwe H. (uwehermann) Benutzerseite



Lesenswert?

Hi,

ich möchte hier mein kleines vor kurzem fertiggestelltes Projekt namens 
openbiosprog-spi vorstellen. Das ist ein USB-basierter Programmer für 
SPI Chips (Hauptanwendung ist das Programmieren von DIP-8 SPI-Chips aus 
neueren Mainboards, z.B. wenn ein BIOS-Upgrade schief gegangen ist).

All relevanten Infos gibts hier, inklusive Schaltplan, Layout, Bill of 
Materials, Gerber files, Drill files, und einen Haufen Fotos:

  http://randomprojects.org/wiki/Openbiosprog-spi
  http://hermann-uwe.de/blog/openbiosprog-spi-a-diy-open-hardware-and-free-software-usb-based-spi-bios-chip-flasher-using-flashrom

Ich habe Schaltplan und Platine komplett in Kicad entworfen (2 Layer, 
0603 SMD Teile beidseitig bestückt), und unter einer Creative Commons 
Lizenz freigegeben (CC-BY-SA 3.0). Das Design basiert auf einem FTDI 
FT2232H, der sowohl USB als auch SPI (via MPSSE-Engine) übernimmt.

Auf PC-Seite wird das GPL'te Tool "flashrom" benutzt (unter Linux, 
sollte aber auch auf Windows laufen):

  http://flashrom.org/Supported_hardware

Alle Dateien sind in folgendem git repository verfügbar:

  $ git clone git://gitorious.org/openbiosprog/openbiosprog-spi.git

Wer nur die fertigen Gerber Files will:

  http://randomprojects.org/wiki/images/a/a8/Openbiosprog-spi-0.1-gerber.zip


Ich poste das hier aus mehreren Gründen, u.a.

a) Es ist mein erstes "ernsthaftes" Hardware-Projekt überhaupt, und ich 
wäre für jedwede Verbesserungsvorschläge und Hinweise auf Fehler die ich 
gemacht habe dankbar. Es wird wohl früher oder später eine zweite 
Version geben wo ich dann solche Dinge einfließen lassen will.

b) Es ist natürlich auch mein erstes Kicad-Projekt, und ich muss sagen 
ich bin sehr zufrieden mit Kicad. EAGLE oder sonstige closed-source 
Programme kommen mir gleich sowieso nicht in die Tüte (schon gleich 
doppelt nicht wenn ich damit Open-Hardware Projekte realisiere), also 
hatte ich die Wahl zwischen gEDA/PCB (was auch ganz nett ist) und Kicad, 
das ich dann hier verwendet habe. Ich habe versucht möglichst alle 
Einstellungen in Kicad zum Generieren von brauchbaren Gerber + Drill 
Files ausführlich zu dokumentieren um anderen den Einstieg damit etwas 
zu erleichtern:

 http://randomprojects.org/wiki/Openbiosprog-spi#PCB_manufacturing


Ich werde keine Sammelbestellung o.ä. organisieren, aber wenn jemand 
anderes das machen will -> gerne, die Hardware ist ja frei, u.a. genau 
aus diesem Grund. Möglicherweise kann ich später das Projekt im BatchPCB 
Market Place verfügbar machen damit man dort relativ leicht an Platinen 
kommt, mal sehen:

  http://batchpcb.com/index.php/Products

Meine ersten Prototypen habe ich bei PCB-POOL.COM machen lassen, die 
genauen Einstellungen dafür sind auch auf der Projektseite dokumentiert. 
Jeder andere brauchbare PCB-Hersteller sollte aber auch gehen, die 
Leiterbahnen sind 8mil, Via Gesamtdurchmesser 1mm, damit sollte jeder 
zurechtkommen.


Uwe.

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Klasse!

(Ich habe mir die Freiheit genommen, das nach "Codesammlung" zu 
verschieben)

von Frank K. (fchk)


Lesenswert?

Warum hast Du nicht den FT2232D genommen? Ich denke, Hi-Speed dürfte 
hier nicht erforderlich sein, und mit den D wird der Lötaufwand ein 
wenig geringer, da nur 48 Pins. Plus: der D kann auf den IO-Leitungen 
noch 5V, falls jemand das braucht.

fchk

von Nanometer (Gast)


Lesenswert?

Uwe Hermann schrieb:
> Hauptanwendung ist das Programmieren von DIP-8 SPI-Chips aus
> neueren Mainboards, z.B. wenn ein BIOS-Upgrade schief gegangen ist

Gerade bei neueren Mainboards gibts aber immer eine Recovery-Funktion, 
die bei schief gegangenen BIOS-Upgrades trotzdem das neuflashen 
ermöglicht.

von Uwe H. (uwehermann) Benutzerseite


Lesenswert?

Rufus t. Firefly schrieb:
> Klasse!
>
> (Ich habe mir die Freiheit genommen, das nach "Codesammlung" zu
> verschieben)

OK, kein Problem, ist das aber wirklich die richtige Kategorie? Ich hab 
keine einzige Zeile Code geschrieben ;-)

von Uwe H. (uwehermann) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Warum hast Du nicht den FT2232D genommen? Ich denke, Hi-Speed dürfte
> hier nicht erforderlich sein, und mit den D wird der Lötaufwand ein
> wenig geringer, da nur 48 Pins. Plus: der D kann auf den IO-Leitungen
> noch 5V, falls jemand das braucht.
>
> fchk

Hm, gute Frage, ich bin ehrlich gesagt gar nicht auf die Idee gekommen 
mir die älteren Chips anzuschauen. Vom Preis her rentiert sich der 
FT2232D nicht sonderlich, kostet fast genausoviel wie der FT2232H. Die 
Geschwindigkeit sollte schon so hoch wie möglich sein, aber vermutlich 
gibts bei dieser Applikation keine großen Unterschiede, weil man so 
gut wie nie volle (libftdi) Buffer hat, man sendet oder empfängt immer 
relativ wenige Bytes pro "Paket". Die Roundtrip-Zeiten pro USB Paket 
dürften aber etwas höher seim, keine Ahnung.

Derzeit braucht das beschreiben (+löschen + verify) von einem 1MB Chip 
ca. 1 Minute und 10 Sekunden, das wäre vermutlich noch mehr mit dem 
FT2232D.

  http://randomprojects.org/wiki/Openbiosprog-spi#Usage

Bei 2MB oder noch größeren Chips wird das entsprechend mehr. Wenn man 
das oft hintereinander machen will (bei mir in der Tat der Fall für 
coreboot-Portierungen) dann werden die Wartezeiten zunehmend nervig.

  http://www.coreboot.org

Vom Löten her wage ich zu behaupten gibt es keinen großen Unterschied. 
Wenn man die Technik einmal raus hat, ist es egal ob das 48, 64, oder 
144 Pins sind, das kann man alles problem löten. 
Löthonig/Lötfett/NocleanFlux und Entlötlitze ist alles was man braucht.

von Uwe H. (uwehermann) Benutzerseite


Lesenswert?

Nanometer schrieb:
> Uwe Hermann schrieb:
>> Hauptanwendung ist das Programmieren von DIP-8 SPI-Chips aus
>> neueren Mainboards, z.B. wenn ein BIOS-Upgrade schief gegangen ist
>
> Gerade bei neueren Mainboards gibts aber immer eine Recovery-Funktion,
> die bei schief gegangenen BIOS-Upgrades trotzdem das neuflashen
> ermöglicht.

Jein. Mit älteren Boards meinte ich solche mit parallelen, LPC- oder 
FWH-Chips (vs. SPI Chips in den neueren Boards).

Es gibt zwar schon bei vielen so einen Recovery-Mechanismus, aber nicht 
bei allen Boards. Dieser Mechanismus zwingt einen auch oft bestimme 
(Windows/DOS) Software einzusetzen, im schlimmeren Fall sogar Floppies 
oder sowas, und ist oft auf nur genau "dein" BIOS-Image beschränkt (man 
kann nicht beliebige Inhalte auf den Chip schreiben), und die Liste der 
unterstützten Chips ist oft relativ kurz. Mit openbiosprog-spi und der 
flashrom Software kann ich problemlos alle SPI-Chips von so gut wie 
allen Herstellern mit beliebigen Inhalt versehen, und das bequem von 
Linux aus (auch per ssh wenns sein muss!), kein DOS/Win, keine Floppies.

Zudem kann es auch passieren dass man aus anderen Gründen extern 
SPI-Chips flashen möchte, z.B. aus Set-Top-Boxen ohne Recovery-Option, 
SPI-Chips von Grafikkarten, Netzwerkkarten (PXE, netboot) oder Chips aus 
sonstigem Embedded-Kram. In meinem Fall kommt oft tatsächlich noch das 
Flashen von "normalen" Boards dazu, auch solche mit Recovery-Option, 
beim Portieren von coreboot (open-source BIOS/firmware) auf neue Boards:

  http://www.coreboot.org

In diesem Fall ist die Recovery-Option oft nicht nützlich, da der oft im 
"Bootblock" des SPI-Chips enthaltene Recovery-Code eben auch mit 
coreboot überschrieben wird. Selbst bei Lösungen mit zwei Chips geht das 
oft nicht, da der Mechanismus um "von Hand" (ohne den Recovery-Code vom 
ersten Chip) auf den zweiten Chip umzuschalten proprietär und nicht 
dokumentiert ist.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Frank K. schrieb:
> Warum hast Du nicht den FT2232D genommen?

Der 2232H hat den SPI als Hardware. Du mußt nicht mit den Ports wackeln.
Werf mal einen Blick ins Datenblatt, da hat sich doch einiges geändert.

von Uwe H. (uwehermann) Benutzerseite



Lesenswert?

Kurzes Update: Ich hab inzwischen auch mal die Variante mit einem 
Pin-Header statt DIP-8 Sockel aufgebaut, Foto anbei.

Das ist nützlich wenn man direkt an einen eingelöteten Chip gehen will, 
z.B. mit kleinen Drähten oder Klemmen usw.

Uwe.

von Uwe H. (uwehermann) Benutzerseite


Angehängte Dateien:

Lesenswert?

OK, neuer Versuch für das Foto. Offenbar schneidet sie Software lange 
Dateinamen einfach ab (und damit das .jpg Suffix in diesem Fall) und 
checkt daher nicht mehr, dass es sich um ein jpeg handelt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.