Wie flashe ich einen FPGA?

#5132467
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!
#5132477
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.
#5132599
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.
#5132650
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.
#5132686
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.
#5132814
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?
#5132818
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..
#5132879
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.
#5132882
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.
Gast #5132933
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...
#5133010
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.
#5133071
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.
#5134205
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...
Beitrag #5134383 wurde von einem Moderator gelöscht.
Gast #5135274
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)
#5135513
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 ...
#5135587
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...
Gast #5136422
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
#5136959
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren