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
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.
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
>??? 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.
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 :-)
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.
>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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.