MetaFlash

aus Metalab, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Wechseln zu: Navigation, Suche
Sprache: Deutsch




MetaFlash
MetaFlash.jpg

Gestartet:

15.03.2014

Involvierte:

User:A

Status:

Gestohlen, Neue Spende willkommen

Beschreibung:

SPI Programmierer

Zuletzt aktualisiert:

16.03.2014


Das MetaLab hat jetzt den MetaFlashwurde gestohlen, einen aus einem Raspberry Pi (Rev B) & (im Moment) einem Breadboard bestehenden SPI Programmierer. Der MetaFlash befindet sich in der µC programmers-Lade im WhateverLab. Bisherig einziger Anwendungszweck: BIOS/UEFI SPI Chips neu programmieren. Im Moment können damit nur 8-pin DIP SPI Chips programmiert werden. Als in Wien lebender Mensch ist man nun also nicht mehr an kommerzielle Anbieter gebunden um sein BIOS flashen zu können.

Erstes PCB für die Schaltung.

Anschlüsse, Verdrahtung, Spezifikationen

Verdrahtung

RPi header SPI flash Jumper-Wire
17 Vcc 3.3V Blue
19 DI / MOSI Purple
21 DO / MISO Grey
23 SCK White
25 GND Black
24 /CS / CS# Green

Details

Die MAC des verwendeten Raspberry Pi: b8:27:eb:c1:8e:3e

Der Programmierer wurde nach einer Anleitung von win-raid.com zusammengestöpselt, welche auf der Raspberry Pi Doku von flashrom.org basiert. Es gibt hier eine Auflistung der Pinouts "gängiger" Embedded Boards

Anleitung

Um mit dem MetaFlash einen UEFI SPI Chip neu zu programmieren:

Raspberry/MetaFlash Vorbereitung

  1. Raspberry Pi GPIO Pins mit MetaFlash Breadboard verdrahten (sollte bereits der Fall sein)
  2. Raspbian auf eine SD Karte einspielen
  3. Ethernet anschließen
  4. Entweder Monitor & Tastatur finden, oder später irgendwie via MAC die IP finden
  5. Raspberry Pi einschalten & einloggen, entweder lokal oder via ssh
  6. Sicherstellen dass die neueste Raspbian Version läuft. Wenn nicht-->apt-get dist-upgrade
  7. sudo apt-get install pciutils-dev
  8. sudo apt-get install zlib1g-dev
  9. sudo apt-get install build-essential
  10. sudo apt-get install subversion
  11. cd ~
  12. svn co svn://flashrom.org/flashrom/trunk flashrom
  13. cd flashrom
  14. make
  15. Neuen Club-Mate holen
  16. sudo make install
  17. sudoedit /etc/modprobe.d/raspi-blacklist.conf
  18. -->Den Eintrag "blacklist spi-bcm2708" mit einem # auskommentieren
  19. sudo shutdown -r now

ROM Binary Vorbereitung

  1. UEFI bzw. BIOS ROM Datei organisieren. Zum Beispiel von der Homepage des Mainboard Herstellers.
  2. Mit UEFITool sicherstellen dass das ROM das Format "Intel image" oder "XX region has intersection with YY region" (Bei Gigabyte Mainboards) hat.
  3. Wenn nein, mittels "Extract body" in UEFITool den capsule header entfernen, dann nochmal überprüfen.
  4. Den OPROMs des UEFI vielleicht ein Update spendieren wenn es sich um ein AMI UEFI handelt, mittels UBU
  5. Sicherstellen dass der SPI Chip für das Mainboard vorgesehen ist
  6. Sicherstellen, dass das ROM Binary file /exakt/ die Kapazität des SPI Chips hat

ROM flashen

  1. Raspberry Pi vom Strom nehmen
  2. Der SPI Chip muss mit dem MetaFlash Breadboard verbunden werden. Der Pin 1 des SPI Chips sollte dabei mit dem Steckplatz 1e am Breadboard verbunden sein und der Pin 5 mit dem Steckplatz 4f. (Die restlichen 6 Verbindungen sollten somit logisch sein: 2-->2e, 3-->3e, 4-->4e, 7-->2f, 6-->3f)
  3. Dazu gibt es 2 Möglichkeiten:
    1. Den SPI Chip direkt in das Breadboard stecken (Vorsichtig, aber bis zum Anschlag!), d.h. die SPI Chip Kerbe zeigt dabei vom Breadboard weg
    2. Den SPI Chip via Jumper-Drähten an das Breadboard anschließen. Bei Mainboards mit nicht-gesockeltem Chip kann das zwangweise notwendig sein. Siehe dazu ISP auf flashrom.org
  4. ROM Datei auf den Raspberry Pi transferieren
  5. modprobe spi_bcm2708
  6. modprobe spidev
  7. Man KÖNNTE jetzt den Inhalt des Chips mittels sudo flashrom -E -V -p linux_spi:dev=/dev/spidev0.0 löschen, das sollte aber nicht notwendig sein. Es sei hier nur erwähnt.
  8. Stromversorgung sicherstellen, Stoßgebete an alle zuhörenden Mächte des Universums absenden & den Flash Vorgang starten: sudo flashrom -w /foo/bar/YOUR_ROM_GOES.HERE -V -p linux_spi:dev=/dev/spidev0.0
  9. It's NOT hung. Flash+Verify brauchen approximately forever.
  10. You're done. sudo shutdown now, Strom abstecken, Chip entnehmen bzw. Verbindung trennen, testen.
  11. Wer bei einem ASRock Mainboard jetzt durch eine fehlende Firewire GUID belästigt wird, schaut bitte hier

Potential MetaFlash Improvements / TODO

* Der MetaFlash muss neu etikettiert werden, das alte Label wurde noch erstellt als der MetaFlash namenlos war

  • Der MetaFlash verfügt momentan über keine dezidierte SD Karte, dadurch muss sich jeder Raspbian immer neu aufsetzen.
  • Aus dem vorherig genannten Punkt ergibt sich dass der MetaFlash keine statische IP im Metalab hat. Das ist auch lästig, weil man dadurch immer Monitor & Tastatur jagen muss, oder nach der zur MAC gehörenden IP fahnden muss.
  • Die Oberseite des Gehäuses des Raspberry Pi der für den MetaFlash verwendet wird hat keine Aussparung für den Raspberry Pi GPIO Anschluss & kann dadurch nicht verwendet werden. Sollte sich (sofern das Material geeeignet ist) via Geil-o-mat, Lazzor oder ansonsten via Handarbeit beheben lassen.
  • Die Entkopplung via Elko ist zwar funktionsfähig, aber nicht perfekt. Eigentlich sollte hier ein Elko in Parallelschaltung mit einem Keramik Kondensator verwendet werden. Ist aber eigentlich wurscht.
  • Der MetaFlash verwendet momentan ein Breadboard. Das ist wackelig und fehleranfällig. Irgendwann sollte man hierzu vielleicht eine Platine ätzen.
  • Der MetaFlash kann momentan nur 8-pin DIP SPI Chips flashen. Eigentlich sollte sich das aber auf beliebige Chip-Dimensionen erweitern lassen.
  • Der MetaFlash verwendet momentan direkt Jumper-Drähte zum Anschluss an den Raspberry Pi. Ein Header wäre hier hübscher.

* Ein SOIC Clip wäre für fix verlötete/nicht gesockelte Chips praktisch.

    • m besitzt einen solchen, könnte man auf Anfrage borgen