Forum: Mikrocontroller und Digitale Elektronik Microcontroller als JTAG Programmer


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tobias Weber (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe in meinem Praktikum folgende Aufgabenstellung bekommen. Ein 
CPLD (XC9572XL) soll über seine JTAG Schnittstelle von einem 
Microcontroller (STM32F107) programmiert werden. Der Microcontroller 
soll also als JTAG Programmer dienen. Ich bräuchte eine JTAG Emulation 
für den Microcontroller.
Die JTAG Schnittstelle des CPLD hängt an I/O Ports des Microcontrollers.

Bevor ich jetzt anfange so etwas selbst du schreiben (was vermutlich 
deutlich länger dauert), hier meine Frage.

Kennt jemand eine entsprechende Bibliothek, ich hab leider schon ein 
Problem damit die Aufgabenstellung kurz und klar zu formulieren und nach 
dem richtigen zu googeln. Ich finde viele JTAG Emulationen für den PC 
aber bisher war noch nichts entsprechendes für meinen Fall dabei.

Gruß und vielen Dank,
Tobias

von Pete K. (pete77)


Bewertung
2 lesenswert
nicht lesenswert
Hallo Tobias,

das Praktikum ist dann für Dich erfolgreich, wenn Du nicht nur 
copy+paste benutzt. Du willst doch etwas lernen, oder?

VG Pete

von Tobias Weber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi Pete,

klar will ich was lernen und das kommt bisher auch nicht zu kurz :)
Wenn es allerdings eine fertige Bibliothek gibt nehme ich die gerne her, 
sowas gehört nach meinem empfinden auch dazu.

Gruß
Tobi

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Tobias Weber schrieb:
> ich habe in meinem Praktikum folgende Aufgabenstellung bekommen. Ein
> CPLD (XC9572XL) soll über seine JTAG Schnittstelle von einem
> Microcontroller (STM32F107) programmiert werden. Der Microcontroller
> soll also als JTAG Programmer dienen.

Versaloon wird von OpenOCD unterstützt und implementiert JTAG auf einem 
STM32 µC: https://github.com/versaloon/versaloon

Das Repository ist etwas unübersichtlich weil da auch der User Code für 
den PC mit drin ist. Hint: "dongle/firmware/".

Den µC Teil hatte ich mal auf LPC13xx für die CCC R0ket portiert: 
https://github.com/turboj/versaloon-r0ket/tree/master/firmware
die interessanten Teile verstecken sich im "Interfaces" und "USB_TO_XXX" 
Ordner.

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bibliothek ist hier:

http://www.clifford.at/libxsvf/

Für PIC gibt es das fertig, dagegen kannst Du Dein Werk dann testen:

http://dangerousprototypes.com/docs/Bus_Pirate_JTAG_XSVF_player

von Base64 U. (6964fcd710b8d77)


Bewertung
0 lesenswert
nicht lesenswert
Openocd oder blackmagic probe 
(https://github.com/blacksphere/blackmagic/wiki) anschauen, kann aber 
gut sein das du noch support (ja, auch das kann man im Praktikum lernen, 
und es würde sich die Community freuen ;) ) für die Chips hinzufügen 
musst.

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
??? Er will doch einen CPLD flashen, nicht JTAG/SWD am ARM machen:

Tobias Weber schrieb:
> CPLD (XC9572XL) soll von einem Microcontroller (STM32F107) programmiert

Also nochmal:

Lothar schrieb:
> http://www.clifford.at/libxsvf/

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tobias Weber schrieb:
> klar will ich was lernen

OK, dann fange an:
1. schaff dir ein Grundgerüst. Dazu kann (nicht MUSS) z.B. ein 
chinesischer ST-Link dienen, der enthält bereits einen µC, eine 
Mini-USB-Buchse und ein paar Pins an einer Wannensteckleiste - UND: er 
ist billig, so 2..4 Euro. Dessen Schaltung findet man per Google. Damit 
hast du ne HW, ohne dich anstrengen zu müssen.

2. schaff dir ein Konzept. So ein Programmer braucht ja etwas, das ihm 
gesagt werden muß, damit er was tut.

Also konzipiere das Interface zwischen Programmer und PC, also wer wem 
auf welche Weise was sagt - und schreibe das Konzept auf, das ist der 
Anfang aller weiteren Entwicklungsaktivitäten.

Du willst sowas sicherlich per USB betreiben, also überlege dir eine 
USB-Schnittstelle, ob VCP oder was sonst, über die die Kommunikation 
laufen soll.

2a. Hier kannst du im Prinzip schon mal dein Grundgerüst für deine 
Firmware anfangen, also Pins und Takte aufsetzen, dann Interface zum PC 
hin schreiben, dann Kommandoauswertung und dann Trockentest, ob deine 
Firmware erstmal läuft und mit deinem PC-Programm zusammen läuft.

3. lies die JTAG-Dokumentationen und leg dir ein Konzept zurecht für den 
Lowlevel-Betrieb, also wie Clock, Daten rein und raus und tms betrieben 
werden müssen, um irgendwo irgendwas rein und raus zu bekommen. Da gibt 
ein weiteres Papier als Grundlage für alles Weitere. Hier kanst du mit 
dem Firmwareschreiben weitermachen, ein paar (temporäre) Kommandos in 
die Kommandoauswertung rein, um auf Kommando ein oszillografierbares 
JTAG-Datenspiel zu erzeugen und so.

4. Jetzt ist es Zeit, sich um die eigentlichen Programmieralgorithmen zu 
kümmern, also der HiLevel-betrieb: Daten und Kommandos rein, 
JTAG-Signalspiele raus.

Ungefähr so wäre die Vorgehensweise, also fang an und suche nicht nach 
den gebratenen Tauben, die gibt's nicht wirklich.

W.S.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hi Tobias,

kurz gefragt:

Was ist Dein Ausbildungsstand?
Was für ein Praktikum ist das und welcher Zeithorizont wurde für die 
Aufgabe vereinbart?

Grüße,
 marcus

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Bewertung
0 lesenswert
nicht lesenswert

von Tobias Weber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich studiere aktuell Elektrotechnik (5. Semester) und werde nach dem 
Praktikum als Werksstudent da bleiben, einen festen Zeitrahmen gibt es 
nicht aber es sollte wohl nicht unbedingt ein Jahr dauern.

Vielen Dank soweit, ich werde mir die Vorschläge durchschauen und melde 
mich sobald ich Fortschritte mache.

VG
Tobi

von TheAargauer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

von XILINX gab es mal ne App Note zu diesem Thema.

Ciao

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ah, danke für die Info.

Wenn Du Dich auf das Thema konzentrieren kannst und die Hardware 
zuverlässig läuft:
- 2-3 Tage für eine Portierung bzw.
- 5-7 Tage für aus dem Vollblock schnitzen

Cooles Thema!

marcus

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Marcus H. schrieb:
> Wenn Du Dich auf das Thema konzentrieren kannst und die Hardware
> zuverlässig läuft:
> - 2-3 Tage für eine Portierung bzw.
> - 5-7 Tage für aus dem Vollblock schnitzen

So lange? ;-)

Nach seinem 'Empfinden' geht es aber doch nicht darum, irgendetwas 
selber zu programmieren, sondern mit den richtigen Suchbegriffen die 
fertige Lösung vorzufinden. Oder habe ich etwas falsch verstanden?

Tobias Weber schrieb:
> Wenn es allerdings eine fertige Bibliothek gibt nehme ich die gerne her,
> sowas gehört nach meinem empfinden auch dazu.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Tobias Weber schrieb:
>... einen festen Zeitrahmen gibt es
> nicht aber es sollte wohl nicht unbedingt ein Jahr dauern.

von Tobias Weber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

ich habe mich jetzt mit dieser Bibliothek beschäftigt:
http://www.ethernut.de/en/xsvfexec/index.html

Gut auskommentiert und relativ nahe an meinem Anwendungsfall dran. 
Vielen dank für die bisherigen Antworten. Die nicht portablen Codeteile 
(weil Plattformabhängig) sind in einem extra File ausgelagert.

VG
Tobias

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
m.n. schrieb:
> Nach seinem 'Empfinden' geht es...

..., Nee, du hast das schon ganz richtig erfaßt. Das heutige 
E-Technik-Studium scheint mir eher eine Lehranstalt für Kopierer zu sein 
als etwas, das den jungen Leuten die Fähigkeit zu selbständigem Denken 
und Tun vermittelt.

Und die Zeitangaben von Marcus H. erscheinen mir herzlich illusorisch.

Aber viellecht bezieht sich das ja nur auf das Finden von interessant 
erscheinendem Zeugs im Internet.

W.S.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Und die Zeitangaben von Marcus H. erscheinen mir herzlich illusorisch.
Ja, ich weiß, dass ich nicht der Schnellste bin...

>Aber viellecht bezieht sich das ja nur auf das Finden von interessant
>erscheinendem Zeugs im Internet.
Yep, ich habe die Angewohnheit vorhandene Doku zu lesen.
Deswegen zitiere ich die auch laufend bei Lösungsvorschlägen.


Scherz beiseite - wenn ich mir die Zeit anschaue, die ich für meine 
Diplomarbeit gebraucht habe:
Das hat damals fast ein halbes Jahr gedauert.
Dieselbe Aufgabe würde ich heute wohl in vier Wochen lösen.
Habe aber auch etwas geübt in den letzten zwanzig Jahren...

Insofern darf der Praktikant ruhig etwas länger brauchen.
Dafür hat er vermutlich auch einen anderen Stundensatz...

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.