Forum: Mikrocontroller und Digitale Elektronik JTAG / ISP ?


von Heiko (Gast)


Lesenswert?

Hallo,

ich möchte mir ein Board kaufen, welches ich über JTAG und über ISP 
programmieren kann.

Meine Frage ist, wo liegt der jeweilige Vorteil in den Varianten?

Mit JTAG kann ich programmieren und gleichzeitig debuggen? Brauche aber 
solch ein JTAG-Modul welches sehr teuer ist?

ISP, heisst doch im System programmieren, aber wie stelle ich dies an? 
Über USB?

Danke

von gerd (Gast)


Lesenswert?


von Albert .. (albert-k)


Lesenswert?

ISP läuft immer in Kombination mit einem Bootloader auf dem Chip. Dieser 
Bootloader nimmt den meist Seriell empfangenen Programmcode entgegen und 
fügt ihn an der richtigen stelle im Flash ein. Dies geschieht entweder 
über SPI, UART oder USB. Je nachdem was der Controller unterstützt und 
worauf der Bootloader ausgelegt ist.

JTAG arbeitet im Endeffekt über Schieberegister. Einmal um das Programm 
in den Controller zu bekommen und um die Debug Informationen auszulesen. 
Dazu benötigst du ein speziellen JTAG Debugger. Diese können aber (bsw. 
der Jlink) viele verschiedene Mikrocontroller mit JTAG Interface 
programmieren. Das heißt du kaufst dir ihn einmal und hast dann für 
lange Zeit ausgesorgt.
Bei ISP ist es immer so eine Sache, da kommt es darauf an wie es 
implementiert ist. Da kann es immer mal sein das du einen neuen 
programmer rbauchst. Wenn sie nicht gerade über die Serielle 
Schnittstelle doer USB arbeiten.

von gerd (Gast)


Lesenswert?

Albert ... schrieb:
> ISP läuft immer in Kombination mit einem Bootloader auf dem Chip.

??? Könntest du das bitte kurz mal ein wenig genauer erläutern? Ich höre 
das so zum ersten Mal und bin neugierig! :-)

- gerd

von STK500-Besitzer (Gast)


Lesenswert?

>??? Könntest du das bitte kurz mal ein wenig genauer erläutern? Ich höre
>das so zum ersten Mal und bin neugierig! :-)

Man sollte das "immer" durch "u.a." ersetzen.
Naja, andererseits ist die in Hardware gegossene ISP-Schnittstelle ja 
auch eine Art Bootloader, den man durch eine bestimmte Signalkombination 
startet.

von Floh (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Naja, andererseits ist die in Hardware gegossene ISP-Schnittstelle ja
> auch eine Art Bootloader, den man durch eine bestimmte Signalkombination
> startet.

oder einfach weil der Reset-Pin auf Low liegt :-)

von Albert .. (albert-k)


Lesenswert?

Theoretisch kann man jeden Mikrocontroller über ISP programmieren, 
solange ein dementsprechender Bootloader auf dem Mikrocontroller 
vorhanden ist. Dieser wird beim Start des Mikrocontrollers ausgeführt 
und wartet nun ob ein Programmierwunsch auf dem angegebenen Interface 
(SPI, UART, USB, Ethernet...im Endeffekt alles was man sich vorstellen 
kann) ankommt. Wenn einer ankommt wird das Programm an die 
dementsprechende stelle im flash geladen. Ansonsten wird das vorherige 
Programm ausgeführt. Beliebtes beispiel hierfür ist jeder Router. Denn 
kann man ja auch über das Internet eine Firmware aufspielen. Dabei 
verfügt der Controller des Router auch nur über einen eigenen 
bootloader.

Viele Controller besitzen auch einen in Hardware eingegossenen ISP 
Controller (so bsw. AVR, PIC, MSP430 und die NXP LPC). Dabei wird im 
Endeffekt nichts anderes gemacht als oben. Nach dem Reset startet der 
Controller die ISP Unit und schaut ob ein programmierwunsch ankommt. 
Wenn ja wird das Programm reingeladen, ansonsten wird das alte 
ausgeführt.

Die Identifikation ob ein Programmierwunsch anliegt wird meist über eine 
bestimmte Befehlsfolge gemacht.

von STK500-Besitzer (Gast)


Lesenswert?

>Theoretisch kann man jeden Mikrocontroller über ISP programmieren,
>solange ein dementsprechender Bootloader auf dem Mikrocontroller
>vorhanden ist.

Wie soll sowas bei einem µC gehen, der kein Bootloader-Möglichkeit 
besitzt?
Dann gibt es noch Controller (sind vielleicht nicht mehr so weit 
verbreitet, existieren aber trotzdem noch), die nur mit einem Programmer 
gebrannt werden, nachdem sie aus der Schaltung entfernt wurden 
(gesockelt...).

Ich mag diese Verallgemeinerung nicht.

von gerd (Gast)


Lesenswert?

Albert ... schrieb:
> Theoretisch kann man jeden Mikrocontroller über ISP programmieren,
> solange ein dementsprechender Bootloader auf dem Mikrocontroller
> vorhanden ist...

STK500-Besitzer schrieb:
> Man sollte das "immer" durch "u.a." ersetzen.
> Naja, andererseits ist die in Hardware gegossene ISP-Schnittstelle ja
> auch eine Art Bootloader, den man durch eine bestimmte Signalkombination
> startet.

Floh schrieb:
> oder einfach weil der Reset-Pin auf Low liegt :-)

Ok, vielen Dank für diese Aufklärung. :)
Irgendwie war der Begriff 'Bootloader' in meinem MC-Wissen mit einer 
anderen Vorstellung verknüpft - aber in diesem Kontext macht die 
Erklärung schon Sinn!

- gerd

von Albert .. (albert-k)


Lesenswert?

Man bastelt sich eine Art Workaround?

Im Endeffekt kann dein hauptprogramm das du in den Controller flasht ja 
die ersten 2sec auf der seriellen Schnittstelle lauschen ob du ein neues 
Programm flashen willst. Wenn die zeit vorbei ist springst du an die 
Speicherstelle mit dem eigentlichen Programm. Ansonsten beschreibst du 
eben den Flash mit dem ankommenden programmcode. Hatte ich an der 
Hochschule so bei einigen 8051 Controllern.

von gerd (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Wie soll sowas bei einem µC gehen, der kein Bootloader-Möglichkeit
> besitzt?
...
> Ich mag diese Verallgemeinerung nicht.

Na, nun nicht gleich mit Kanonen auf Spatzen. Ihr meint schon alle das 
Gleiche, denke ich - nur das der Begriff Bootloader etwas "strapaziert" 
wird. ;)

- gerd

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.