Forum: FPGA, VHDL & Co. Wie flashe ich einen FPGA?


von Olli Z. (z80freak)


Lesenswert?

Ich versuche mich gerade an der Reparatur einer Displayplatine eines 
Radios mit TFT-Bidlschirm. Dort werkelt ein FPGA als Display-Treiber. 
Ich konnte ermitteln das der verbaute Flash-Speicher entweder ne Macke 
oder seine Programmierung verloren hat. Ich habe noch einen intakten, 
mit intakter Software hier und überlege nun wie ich den Inhalt auf den 
vermeintlich defekten bzw. einen Austausch-Flash bekomme. 
Flash-Programmiergeräte sind leider nicht vorhanden.

Der Aufbau besteht im wesentlichen aus folgenden Komponenten:
 * Cyclone II FPGA (EP2C8F256I8)
 * 4 Mbit Serial Configuration EEPROM (EPCS4N)
 * 128 MB SDRAM (MT48LC4M32B2)
 * 64 MB Flash (S29GL064N90TFA02)

Nach allem was ich bislang erfahren konnte ist das ein typischer Aufbau 
für den Betrieb eines FPGA. Er ähnelt dem eines CPU-Basierten Systems. 
Wenn ich es richtig verstanden habe dient das EEPROM für den Bootloader, 
welcher beim Power-Up von hier geladen und ausgeführt wird. Dieser 
wiederrum lädt die FPGA-Programmierung (kompiliertes VHDL bzw. beim 
Altera AHDL) vom Flash-Speicher in das SDRAM und führt dieses dann aus.

Meine Vermutung ist nun das man einen solchen Aufbau via JTAG mit der 
Programmierung betankt, sodass die FPGA den sich um die 
Flash-Adressierung kümmert. Gibt es hier irgendwelche Standards? Oder 
könnte ich da auf eine Kopiersperre stoßen? Ich muss ja zum einen die 
Software des einen Bausteins auslesen und zum anderen in den neuen 
Baustein einprogrammieren können.

Evtl. liegt ich auch komplett falsch, oder es ist einfacher den Flash 
ausserhalb der Schaltung auszulesen und zu beschreiben. Wenn ja, dann 
mit welchen Mitteln ausser sündhaft teuren Programmern für mehrere 
hundert Euro?

Ich dank schonmal für die Hinweise und Mithilfe!

von Christian R. (supachris)


Lesenswert?

Laut Datenblatt passt das komplette Bit File des kleinen FPGA in den 
4MBit Speicher.
Falls dort ein wie auch immer geartetes CPU System synthetisiert sein 
sollte, könnte das aus dem großen Flash betankt werden.
Aber eigentlich ist der Cyclone mit seinen reichlich 8k Logikelementen 
bissl klein für sowas. Kann aber möglich sein.
Der Konfig-Speicher kann üblicherweise indirekt über JTAG programmiert 
werden, darum kümmert sich die jeweilige Design Software also in dem 
Fall Quartus.
Auslesesperre scheint der nicht zu haben, beim Überfliegen des 
Datenblattes.

von Olli Z. (z80freak)


Lesenswert?

Super Christian, das bringt mich wieder etwas weiter! Wenn ich mir das 
auf der Intel-Homepage so ansehe, könnte dann der Stand-Alone-Programmer 
"Quartus Prime Pro Edition Programmer and Tools" das sein was ich suche?

von Christian R. (supachris)


Lesenswert?

Ich kenne mich nur mit Xilinx aus, aber vom Namen her könnte das sein.
Wenn allerdings im großen Flash was defekt ist, wirds damit 
wahrscheinlich schwierig, bei einem so kleinen FPGA wird der ganz sicher 
nicht für den Bitstream gebraucht, der muss zu was anderem da sein. Und 
wie der prigrammiert wird, weiß ich auch nicht.

von Olli Z. (z80freak)


Lesenswert?

Ich fürchte ich verstehe nicht ganz was Du mir sagen willst. Was ist mit 
"Bitstream" gemeint?
Ich habe natürlich weder Schaltplan noch eine Idee was dort im Flash 
gespeichert wird. Aber die Tatsache das es mit dem Flash-Chip eines 
anderen Board klappt sagt mir das dort in dem defekten Teil was fehlt 
oder dieses wirklich hin ist. Am liebsten würde ich ja auch außerhalb 
vom System programmieren, dann wär ich aber gleich bei der Frage wie man 
DAS dann wieder macht. Neben einem Programmieradapter (oder fürs 
einmalige zur Not auch eine Platine, dann muss ich halt drauf und später 
wieder runterlöten...) benötige ich ja ein Interface, welches den Chip 
parallel programmiert. Also neben den Daten- und Adressleitungen auch 
die Signale und vor allem Spannungen dafür bereitstellt. Grundsätzlich 
könnte ich mir sowas als Breadboard-Aufbau in Verbindung mit einem 
Arduino Mega vorstellen, der hat genügend I/O-Leitungen. Ich bin mir 
aber nicht sicher ob ich die Software zum programmieren/auslesen des 
Flash so ohne weiteres selbst hinbekomme. Das Teil ist ja doch etwas 
mehr als ein dummer Datenspeicher, kennt Kommandos und Modi, etc. Evtl. 
ist auch ein gewisses Timing wichtig.

Da müsste ich schon eine Programmiersoftware und eine für den Mega 
passende Firmware haben. Sowas konnte ich aber im Netz nicht finden. Aus 
diesen Gründen hatte ich ja die Programmierung via FPGA in Betracht 
gezogen, denn da gibt es sicher Tools und Hardware zu.

P.S.: Habe mich oben bei der Flash-Kapazität vertan. Der Speicher hat 8 
MB (64 Mbit) Kapazität. Ist vielleicht eher sekundär, wollte es nur 
richtig stellen.

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

Unter "Bitstream" versteht man üblicherweise die Konfigurationsdatei des 
FPGA's. Bevor der den nicht hat, tut er nix (jedenfalls nichts 
vernünftiges).

Die FPGA Config dürfte im EPCS4N stecken. Das S29GL064N90TFA02 hat damit 
nichts zu tun, das FPGA kann damit nicht umgehen (jedenfalls nicht für 
seinen eigenen "Bootstrap").

Schau' mal, ob die Platine einen "AS" (active Serial) Steckverbinder 
hat. Damit wird das EPCS4N üblicherweise "betankt". Vielleicht gibt's 
auch einen JTAG Stecker (damit kann das FPGA direkt vom USB-Blaster 
geladen werden).

Vielleicht gibt's auch gar nichts (dann wäre das EPCS4N schon geflasht 
verbaut worden).

Die Quartus Programmiersoftware ist im (kostenlosen) Quartus Web-Pack 
enthalten. Die letzte Version, die Cyclone II unterstützt ist m.W. die 
13.0.

von 1N 4. (1n4148)


Lesenswert?


von Olli Z. (z80freak)



Lesenswert?

Bezüglich möglicher Steckverbindungen kannst Du vielleicht auf den Fotos 
was entdecken?!

Mein Problem steckt aber definitiv im Flash. Das Config Eeprom habe ich 
schon gewechselt, jedoch ohne Effekt, das ist intakt. Wenn es aber dann 
so ist, das eine Flash Programmierung von hause aus garnicht vorgesehen 
ist, dann ist es auch ncht wahrscheinlich den Chip irgendwie auslesen 
und programmieren zu können. Das ist dann höchstwahrscheinlich eine 
eigenimplementation des Herstellers, welche dann im EPCS4N Bootloader 
steckt.

Dann bleibt mir ja eigentlich nur die Programmierung im ausgelöteten 
Zustand.

: Bearbeitet durch User
von Christian R. (supachris)


Lesenswert?

Woher weißt du dass das Problem am Flash liegt? Das Config Prom wechseln 
bringt ja nix, dann hast du jetzt ein leeres drauf, damit bootet das 
FPGA natürlich nicht. Steckverbinder dediziert für JTAG sehe ich jetzt 
nicht.
Was ist denn das für ein Display? Und wieso hat das so einen großen 
Flash? Kann das irgendwelche speziellen Sachen?

von Markus F. (mfro)


Lesenswert?

Olli Z. schrieb:
> Das Config Eeprom habe ich
> schon gewechselt, jedoch ohne Effekt, das ist intakt.

Wenn Du das getauscht hast, was steckt dann im getauschten drin? Wie 
gesagt, ohne eine passende Config kommt das FPGA nicht hoch. Ich nehme 
an, da gehört eine Config rein, die aus dem FPGA einen SOC (µC) macht, 
der dann aus dem Flash bootet und das SDRAM als Hauptspeicher verwendet.

Vorstellbar wäre auch, eine spezielle Config zu erstellen, die als 
Flashloader über JTAG sozusagen die Brücke zum S29GL064N90TFA02 schlägt. 
Dann könnte - falls die restliche Beschaltung das erlaubt - ein Flashen 
über JTAG -> FPGA -> Flash möglich sein. Das würde aber erstens eine für 
den Altera-Blaster zugängliche JTAG-Schnittstelle an's FPGA's (seh' ich 
zumindest auf Anhieb nicht) und zweitens eine ziemlich genaue Kenntnis 
des "Drumrums" erfordern.

Nicht ganz so einfach, wenn man's doppelt nimmt..

von 1N 4. (1n4148)


Lesenswert?

Also nochmals:

> * Cyclone II FPGA (EP2C8F256I8)

Der ist von Haus aus doof

>  * 4 Mbit Serial Configuration EEPROM (EPCS4N)

In dem steckt die Konfiguration des FPGA

>  * 128 MB SDRAM (MT48LC4M32B2)

Von Haus aus auch doof

>  * 64 MB Flash (S29GL064N90TFA02)

Hier können irgendwelche relevanten Daten drin stehen, die vom FPGA 
verwendet werden.

Was hast du aus einem funktionsfähigen Gerät getauscht? EPCS4N und 
S29GL064N90TFA02 enthalten ab Werk nix, müssen also erst programmiert 
werden.

von Olli Z. (z80freak)


Lesenswert?

Also, das ist von einem Navi. Ich habe zwei Displayboards, ein 
funktionierendes (B) und ein defektes (A). Der Defekt besteht darin, das 
auf dem Display Texte und Zeichen einfach fehlen. Auf der Suche nach dem 
Fehler habe ich angefangen Komponenten von (B) nach (A) umzubauen, in 
der Hoffnung die defekte Komponente zu finden.

Zuerst habe ich das EEPROM von (B) nach (A) gewechselt, der Fehler 
blieb.

Dann habe ich den Flash, ebenfalls von (B) nach (A) getauscht und siehe 
da, das vorher defekte Board zeigte alles an.

Ergo muss das Problem im Flash liegen! Ob der nun wirklich defekte 
Speicherstellen hat, oder aus irgendeinem Grund teile seines Programms 
überschrieben wurden oder verloren gingen weiss ich nicht. So oder so 
muss ich den Inhalt umkopieren und da würde ich gleich einen neuen Flash 
Chip einbauen.

von 1N 4. (1n4148)


Lesenswert?

> So oder so muss ich den Inhalt umkopieren und da würde ich gleich
> einen neuen Flash Chip einbauen.

Dann wirst du einen Weg finden müssen, ein paralleles Flash auszulesen 
und zu schreiben. Mit Datenblatt und uC einen Programmer bauen? Wird 
außerhalb vom Board einfacher sein.

von Sigi (Gast)


Lesenswert?

Such dir mal bei Altera zum CycloneII die
Pinout Doc zu deinem Chip, damit lassen sich
dann mit ein wenig Glück die Config-Leitungen
und damit vlt. Abgreifpunkte finden.
Beispiel: MSEL0=J13, MSEL1=K12. Je nach
Beschaltung hast du dann schon mal den
Konfigurationsmodus.

Btw: wie heisst das Display/der Monitor?

von 1N 4. (1n4148)


Lesenswert?

> Je nach Beschaltung hast du dann schon mal den
> Konfigurationsmodus.

Das bringt ihm leider nichts, wenn das Problem tatsächlich im parallelen 
Flash liegt und nicht im EPCS4.

Im EPCS4 wird ne Soft-CPU stecken die Daten aus dem Flash lesen will...

von Sigi (Gast)


Lesenswert?

1N 4. schrieb:
> Das bringt ihm leider nichts

MSEL* wird hier natürlich kaum weiterhelfen,
entscheidend sind aber weitere Config-Pins
(JTAG). Und wenn diese angezapft werden
können, dann kann auch ein neues/eigenes
Design aufgespielt werden, unabhängig vom
Flash.

von Strubi (Gast)


Lesenswert?

Moin,

wenn du ein BSDL-File für dein FPGA hast, kannst du ev. mit gängigen 
Boundary-Scan-Tools den Flash-Inhalt auslesen, aber mit Altera/Intel 
habe ich da keine Erfahrung. Auf dieselbe Weise kriegst du auch ein 
zerfetztes Flash auch wieder programmiert. Möglicherweise könntest Du 
mit openjtag und einem FTDI 2232H zum Erfolg kommen, alles andere ist 
deutlich teurer und lohnt wohl kaum. Bei spezifischen Plattform-Flashes 
muss man teils aber selber Code schreiben...

von 1N 4. (1n4148)


Lesenswert?

> Und wenn diese angezapft werden
> können, dann kann auch ein neues/eigenes
> Design aufgespielt werden, unabhängig vom
> Flash.

Ja, aber was bringt ihm das? So wie er schreibt, liegt das Problem im 
Inhalt des parallelen Flash und nicht im Inhalt des EPCS4.

Er will ja das Navi reanimieren und keinen Kaffeetoaster daraus bauen.

von Gerald B. (gerald_b)


Lesenswert?

Gebrauchte GALEP 4 gehen für gewöhnlich für'n Fuffi über den Tisch. Neu 
kosteten die mal 399 Äste. Guck mal hier in die Liste, ob dein Stein mit 
dabei ist: http://www.conitec.net/german/galep4device_list.htm
Dann brauchst du nur noch einen Recher mit echter paralleler 
Schnittstelle.
Wenn du den Stein ausgelesen hast, dann gucke doch mal mit einem 
Hex-Editor rein. Vielleicht steht da was in Klartext, was über die 
Funktion Aufschluss gibt.

von Olli Z. (z80freak)


Lesenswert?

Vielen Dank für die Ideen. In der Tat möchte ich nur die Daten vom einen 
Flash in den anderen (oder einen neuen) übertragen. Weder will ich aus 
dem Inhalt schlau werden, noch was daran ändern.

Der Weg über einen Flash Prommer, egal ob günstiger fertiger, oder 
Selbstbaulösung, scheint mir am sinnvolsten.

von Markus F. (mfro)


Lesenswert?

Wahrscheinlich läßt sich das Ding per SD-Karte oder CD ROM flashen (so 
eine Upgrade-Möglichkeit ist ja bei den meisten Auto-Navigationssystemen 
vorgesehen). Vorausgesetzt, es fehlen tatsächlich nur ein paar Zeichen 
und keine "wichtigeren" Softwarebestandteile (was ich eher seltsam 
fände).

Ist das ein Blaupunkt?

Bevor ich irgend etwas anderes probieren würde, wäre das meine erste 
Tat.

von TL866 (Gast)


Lesenswert?

Kauf dir einen TL866 (CS oder A Version, würde die CS nehmen und auf A 
umflashen).


http://www.autoelectric.*cn/minipro/miniprosupportlist.txt

Da ist die Liste mit den unterstützen Devices.

Kauf dir dazu entsprechende Adapter.

(Den Stern im Link entfernen).

von Olli Z. (z80freak)


Lesenswert?

Es gibt eine, wenn auch etwas unschöne Neuigkeit in der Sache. Seit 
gestern macht das eigentlich intakte Display ebenfalls, änhliche 
Probleme. Jetzt fehlen auch wieder Teile der Bildschirminhalte.

Ich vermute das ich es selbst schuld bin, denn bei einem Mainboardtest 
ohne Display habe ich dieses draufsteckt ohne das Gerät vorher stromlos 
zu machen :-( Ja, böser Fehler! Seitdem ist das so. Vermutlich ist dann 
das andere Display auf ähnliche Art "kaputt" gegangen.

Hat jemand ne Idee was dabei passiert sein klnnte? Weisst ja eher auf 
Flashinhalt als auf Chipdefekt hin...

von Alex W. (a20q90)


Lesenswert?

TL866 schrieb im Beitrag #5133085:
> http://www.autoelectric.*cn/minipro/miniprosupportlist.txt
>
> (Den Stern im Link entfernen).

Was soll der Scheiss?

von Olli Z. (z80freak)


Lesenswert?

TL866 schrieb im Beitrag #5133085:
> Kauf dir einen TL866 (CS oder A Version, würde die CS nehmen und auf A
> umflashen).
Einen Flasher flashen... das hat was ;-)
Der günstigste CS kostet mit Versand aus Deutschland knappe 50,- €.
Was muss ich denn tun und warum? Sprich wo ist der Unterschied zur A 
Version?

von Duke Scarring (Gast)


Lesenswert?

Alex W. schrieb:
> Was soll der Scheiss?
Links nach China werden hier üblicherweise als Spam erkannt...
Der '*' stelt eine Maßnahme dar, um der Zensur zu entkommen.

Beitrag #5134383 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Duke Scarring schrieb:
> Links nach China werden hier üblicherweise als Spam erkannt...
Funktioniert tadellos... ;-)

TL866 schrieb im Beitrag #5133085:
> http://www.autoelectric.cn/minipro/miniprosupportlist.txt

: Bearbeitet durch Moderator
von TL866 (Gast)


Lesenswert?

Olli Z. schrieb:
> TL866 schrieb im Beitrag #5133085:
>> Kauf dir einen TL866 (CS oder A Version, würde die CS nehmen und auf A
>> umflashen).
> Einen Flasher flashen... das hat was ;-)
> Der günstigste CS kostet mit Versand aus Deutschland knappe 50,- €.
> Was muss ich denn tun und warum? Sprich wo ist der Unterschied zur A
> Version?

Die A Version hat ICSP. Die CS nicht. Einziger unterschied. Bei der CS 
fehlt nur die Stiftleiste und es ist ein Blinddeckel im Gehäuse. 
Stiftleiste einlöten, Blinddeckel raus und umflashen. Dann wird aus der 
CS eine A Version. Für dein Flash nicht nötig. Kannst halt Geld sparen.

Lothar M. schrieb:
> Duke Scarring schrieb:
>> Links nach China werden hier üblicherweise als Spam erkannt...
> Funktioniert tadellos... ;-)
>
> TL866 schrieb im Beitrag #5133085:
>> http://www.autoelectric.*cn/minipro/miniprosupportlist.txt

 Bei mir gings nicht ohne Stern. (Brauch schon wieder einen)

von Markus F. (mfro)


Lesenswert?

Olli Z. schrieb:
> Es gibt eine, wenn auch etwas unschöne Neuigkeit in der Sache. Seit
> gestern macht das eigentlich intakte Display ebenfalls, änhliche
> Probleme. Jetzt fehlen auch wieder Teile der Bildschirminhalte.

Sollte es tatsächlich mit dem Flash-Inhalt zu tun haben, hast Du jetzt 
ja wohl keinen funktionierenden mehr, den Du kopieren könntest?

Damit scheint mir der Fall erst mal erledigt zu sein ...

von Olli Z. (z80freak)


Lesenswert?

Markus F. schrieb:
> Olli Z. schrieb:
>> Es gibt eine, wenn auch etwas unschöne Neuigkeit in der Sache. Seit
>> gestern macht das eigentlich intakte Display ebenfalls, änhliche
>> Probleme. Jetzt fehlen auch wieder Teile der Bildschirminhalte.
>
> Sollte es tatsächlich mit dem Flash-Inhalt zu tun haben, hast Du jetzt
> ja wohl keinen funktionierenden mehr, den Du kopieren könntest?
>
> Damit scheint mir der Fall erst mal erledigt zu sein ...

Weit gefehlt! So leicht kommt ihr mir nicht davon ;-)
Ich hab inzwischen noch einen weiteren funktionierenden hier.

AAABER, wie und warum auch immer hat sich das Teil wieder selbst 
geheilt. Plötzlich ging das Board mit dem umgelöteten Chip wieder. 
Dazwischen lagen aber mehrere Stunden und ich kann nicht wirklich sagen 
ob ich was besonderes gemacht hab.

Jetzt könnte es natürlich sein das der Flash nicht kaputt ist und auch 
der ausgelötete es nicht war, sondern das hier ein thermisches Problem 
auf dem Board vorliegt. Das könnte ich evtl. herausfinden indem ich den 
"defekten" Flash in das andere Board umlöte. Wandert der Fehler mit, ist 
mit dem Flash auf jeden Fall was nicht in Ordnung.

Die Ursache ist aber noch unklar. Nicht das es ein Problem auf dem 
Display-Board ist, welches den Flash korrumpiert...

von Duke Scarring (Gast)


Lesenswert?

Olli Z. schrieb:
> Die Ursache ist aber noch unklar.
Schon mal die Stromversorgung kritisch beäugt?
Solche 'komischen' Fehler kommen gerne mal von ausgelutschten Elko am 
Schaltregler.

Duke

von 1N 4. (1n4148)


Lesenswert?

Mal den FPGA mit Kältespray und Lötlampe stressen. Der ist BGA und damit 
verdächtig.

von Olli Z. (z80freak)


Lesenswert?

Duke Scarring schrieb:
> Olli Z. schrieb:
>> Die Ursache ist aber noch unklar.
> Schon mal die Stromversorgung kritisch beäugt?
Meinst Du bezüglich Restwelligkeit? Mehr als mit nem Oszi draufschauen 
kann ich eigentlich nicht tun und das sah für mich erstmal ok aus. Was 
genau würdest Du erwarten zu sehen?

von Olli Z. (z80freak)


Lesenswert?

1N 4. schrieb:
> Der ist BGA und damit verdächtig.
Was ist an denen denn verdächtig? Sind die besonders empfindlich?
Reballing hab ich noch nie gemacht und etwas Respekt vor...

von Duke Scarring (Gast)


Lesenswert?

Olli Z. schrieb:
> Meinst Du bezüglich Restwelligkeit? Mehr als mit nem Oszi draufschauen
> kann ich eigentlich nicht tun und das sah für mich erstmal ok aus
Eher bezüglich Spannungseinbrüchen, die letztendlich zum Reset (ggf. nur 
teilweise) führen können.
Vielleicht mal auf fallende Flanke triggern und die Triggerschwelle 
knapp unterhalb der Betriebsspannung legen. Außerdem sollte man die 
automatische Triggerung deaktivieren.

1N 4. schrieb:
> Mal den FPGA mit Kältespray und Lötlampe stressen.
Ich würde statt Lötlampe einen Fön nehmen und auch mal den SDRAM-Chip 
anpusten:

Olli Z. schrieb:
> Der Defekt besteht darin, das
> auf dem Display Texte und Zeichen einfach fehlen.
Da im FPGA vermutlich zu wenig Speicher ist, um den kompletten 
Bildschirm drin unterzubringen wird wohl der SDRAM als 
Bildschirmspeicher herhalten. Dort könntest Du auch nochmal näher 
draufschauen...

Duke

von 1N 4. (1n4148)


Lesenswert?

>> Mal den FPGA mit Kältespray und Lötlampe stressen.
> Ich würde statt Lötlampe einen Fön nehmen und auch mal den SDRAM-Chip
> anpusten:

Irgendeine kalte Lötstelle könnte es sein. SDRAM kann man mit dem 
Mikroskop kontrollieren, FPGA im BGA leider nicht.

von Olli Z. (z80freak)


Lesenswert?

Das mit dem SDRAM könnte natürlich sein. Am besten ich löte es erstmal 
nach. Evtl. ist es auch kaputt. Auf Wärme reagiert es jedenfalls nicht. 
Aber, es ist auch ein Micron RAM, wenn auch leicht anderer Typ. Und der 
machte auf dem Mainboard definitiv Probleme, deshalb hatte ich die dort 
ausgetauscht. Womöglich war die wiederhergestellte Funktion beim 
Flash-Tausch nur Zufall.

Danke nochmal für den Tipp mit dem Spannungstriggerm das werde ich mal 
tun. Habe ein Rigol DSO, damit geht das ja ganz einfach.

Grundsätzlich bin ich aber auch immer noch mit dem auslesen den Flash 
beschäftigt. Werde mir wohl so einen TL866CS zulegen.

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.