Programmieren eines Mikrocontrollers - JTAG und SWD

Ich habe diesen Mikrocontroller - S32K118 64 Pins.

Ich möchte meine Software-Datendatei mit dem unten genannten Debugger in den Mikrocontroller laden.

Ich verwende dieses J-LINK Segger BASE Debugger-Modell, um meinen Mikrocontroller zu programmieren.

Ich habe ein Windows-Betriebssystem und die Software-Datendatei, die ich auf den Mikrocontroller herunterladen möchte, hat die Erweiterung „.s28“.

Ich habe die JTAG-Schnittstellenleitungen auf meiner Platine, die mit dem Mikrocontroller verbunden ist. Und ich habe die JTAG-Leitungen vom Debugger mit der Platine verbunden. Es gibt keine Fehlanpassung wie TDI zu TDO (wie im UART-Protokoll). Ich habe eine TDI-Leitung auf dem Debugger mit der TDI-Leitung auf der Platine verbunden. So für alle JTAG-Verbindungen.

(PS Eigentlich habe ich 2 Mikrocontroller auf der Platine. Aber sie sind nicht verkettet. Jeder Mikrocontroller hat einen separaten Satz von JTAG-Schnittstellenleitungen.)

Bitte haben Sie Geduld mit meinen folgenden Fragen, da ich mich mit Software nicht so gut auskenne.

Meine Fragen :

  1. Der Debugger hat auch die Möglichkeit, den Mikrocontroller über die SWD-Schnittstelle zu programmieren. Ich habe das Handbuch gelesen, das besagt, dass dieser Debugger auch die SWD-Schnittstelle verwenden kann, indem er nur die TMS- und TCK-Leitungen verwendet.

Aber wie wird die JTAG- oder die SWD-Schnittstelle zum Programmieren des Mikrocontrollers ausgewählt? Wird diese Auswahl der Programmierschnittstelle im Softwarecode erwähnt oder sollte die Hardwareperson sie auswählen? Wenn die Hardware-Person es auswählen muss, wie sollte sie es dann tun?

Grundfrage - Wie wird die Programmierschnittstelle zwischen JTAG und SWD festgelegt? Wird es im Softwarecode erwähnt oder wie ist es?

  1. Im J-Link Segger Debugger Manual , auf Seite 279, Kapitel 13.3.3 Menüstruktur, wird es angegeben als

Geben Sie hier die Bildbeschreibung ein

Es wird erwähnt, dass die Softwaredatendatei das Format .hex, .mot, .srec oder .bin haben sollte.

Aber meine Software-Dateierweiterung ist .s28

Akzeptiert der Debugger diese Datei? Bei einer einfachen Google-Suche fand ich heraus, dass es sich bei den .s28- und .srec-Dateien um Motorola S-Record handelt, ein von Motorola erstelltes Dateiformat, das binäre Informationen als Hex-Werte in ASCII-Textform übermittelt. Dieses Dateiformat kann auch als SRECORD, SREC, S19, S28, S37 bekannt sein. Es wird erwähnt, dass .srec und .s28 gleich sind?

Also kann ich diese .s28-Datei mit diesem Debugger auf den Mikrocontroller laden?

Ich habe 2 Arten von Fehlern erhalten, wie unten gezeigt

Fehler 1:

Geben Sie hier die Bildbeschreibung ein

Im obigen Bild können Sie sehen, dass ich meine richtige Mikrocontroller-Teilenummer und die erforderliche Softwaredatendatei ausgewählt habe (weiß nicht, ob diese Erweiterung .s28 vom Mikrocontroller unterstützt wird). Aber ich bekam den Fehler wie, CULD NOT CONNECT TO TARGET.

Warum kommt dieser Fehler? Ich habe die Hardwareverbindung überprüft, sie ist perfekt.

Ich habe versucht, die Schnittstelle von SWD auf JTAG zu ändern (wie im obigen Bild hervorgehoben. Aber ich habe die Geschwindigkeit nicht geändert. Beide waren bei 4000 kHz). Trotzdem das gleiche Ergebnis, das ich bekam. Keine Änderung

Fehler 2: Nach einiger Zeit, im selben Fenster, fing ich an, den Fehler zu bekommen wie – „FEHLER: Datei konnte nicht heruntergeladen werden“

Ich habe nichts an meinem Hardware-Setup oder irgendetwas geändert. Aber der Fehler war ein anderer.

Ich habe im Debugger-Handbuch recherchiert, ich konnte keine Lösung für diese Fehler finden. Ich bin auch in den Segger-Foren und den NXP-Community-Foren. Aber immer noch keine Ergebnisse.

Kann mir bitte jemand bei diesen Fehlern helfen und wie ich sie beheben kann?

Frage 3 :

Angenommen, der Debugger programmiert den Mikrocontroller. Wie hoch sollte der Spannungspegel am RESET-Pin in dem Moment oder dem Moment sein, in dem der Debugger die Softwaredatei auf den Mikrocontroller lädt? Sollte der RESET hoch sein oder sollte der RESET niedrig sein? Und wenn es LOW sein sollte, zieht der Debugger den RESET herunter?

BEARBEITEN :

Schema: Mikrocontroller - S32K118 64 Pin.

Das Reset-Signal an der Basis des unten gezeigten Transistors befindet sich im Zustand Always High. Es wird also kein Problem sein. Für die JTAG-Reset-Verbindung habe ich das RESET-Signal vom oberen Ende des C0103-Kondensators genommen.

Geben Sie hier die Bildbeschreibung ein

Könntest du den Schaltplan hinzufügen? Es kann jemandem helfen, Ihnen eine Antwort zu geben.
Ja, Schaltplan hinzugefügt.
Eine s28-Datei ist eine srec-Datei. Wenn die Segger-Software es laden kann, ist die Datei in Ordnung - das Mikro weiß nicht oder kümmert sich nicht darum, ob es ein Srec, ein Bin, ein Hex oder etwas anderes war.
Haben Sie 'RESET' oder 'RESET_MC1' mit dem J-Link verbunden (zusammen mit allen anderen 'JTAG_xxx'-Leitungen?
Ja, ich habe die RESET-Leitung auch an den J-LINK angeschlossen.
JTAG vs. SWD wird durch die PC-Softwarekonfiguration ausgewählt, natürlich müssen die Verkabelung und das Ziel Ihre Wahl unterstützen. Sie müssen zuerst mit dem Chip sprechen, wahrscheinlich haben Sie schlechte Verbindungen, schlechte Hardware / Stromversorgung oder schlechte Konfiguration. Bis Sie mit dem Ziel kommunizieren, ist überhaupt nichts über die Datei, die Sie laden möchten, relevant.
Mehrpunktfragen sind übrigens nicht erlaubt
Ich habe die Fragen gestellt, da sie Teil desselben Problems sind, bei dem ich etwas falsch machen könnte. Daher die Mehrpunktfrage
Kann jemand eine Antwort geben
Diese Pull-up-Widerstände auf den SWD-Leitungen sollten nicht erforderlich sein.

Antworten (2)

Ich werde versuchen, die Fragen zu beantworten.

Frage 1: Standardmäßig initialisiert der Controller den Debugging-Port (nach dem Zurücksetzen) in den JTAG-Modus. Wenn Sie SWD verwenden möchten, müssen Sie den Befehl Sequence anwenden, der im Referenzhandbuch Kap. 56.3.1 auf p. 1968. Die Auswahl erfolgt also weder in der HW noch in der Programmierdatei. Sie sollten (vielleicht) in der Lage sein, den Programmiermodus in Ihrem Flashing-Tool auszuwählen.

Frage 2: J-Flash unterstützt die folgenden Motorola S-Dateiformate: .mot, .srec, .s, .s19, .s28, .s37 Daher sollten Sie in der Lage sein, Ihre von Ihrer Toolchain generierte Firmware zu flashen.

Frage 3: Debugging ist deaktiviert, wenn sich der Controller im Energiesparmodus befindet oder "Security" aktiviert ist (s. Kap. 56.15 auf S. 1978). Stellen Sie also sicher, dass beides nicht der Fall ist. Zum Flashen müssen Sie RESET für eine gewisse Zeit niedrig halten. Weitere Informationen finden Sie im folgenden Anwendungsmodus: https://www.nxp.com/docs/en/application-note/AN12130.pdf Aber Sie müssen dies nicht manuell tun. Dies wird von der J-LINK/J-Flash-Anwendung durchgeführt. Sie müssen jedoch sicherstellen, dass Ihr J-Link die Reset-Leitung kontrolliert (verbinden Sie den Reset-Pin mit dem entsprechenden Pin am JTAG/SWD-Anschluss).

Die Pinbelegung für den SWD/JTAG-Anschluss sollte wie folgt aussehen:Geben Sie hier die Bildbeschreibung ein

Die Verbindung auf dem Controller sollte wie folgt aussehen. Ich habe die relevanten Pins auf dem Schema für 32K118 hervorgehoben:Geben Sie hier die Bildbeschreibung ein

In obigem Beispiel sind nur die SWD-Leitungen am 32K118 angeschlossen. Du kannst aber natürlich auch die anderen 2 Leitungen für JTAG anbringen. Das Wichtigste, was vielleicht fehlt, ist die Reset-Leitung für den J-Link. Oder ist RESET_MC1mit dem Debug Connector verbunden? Vielleicht könntest du den Schaltplan für den Debug Connector posten.

Danke für die Antwort. Ich habe einen Zweifel. Bei Frage 3 bin ich mir nicht sicher. Bevor das Blinken tatsächlich auftritt, befindet sich die RESET-Leitung des Mikrocontrollers im aktiven High-Zustand. Wenn ich es mit dem Debugger verbinde, sollte der Debugger nur den Active High-Reset auf Active Low ziehen, richtig? Der Inhalt der Firmware wird übertragen, wenn der Reset im Zustand Low oder High ist? Können Sie mir bitte die Stufe des Zurücksetzens während der Inhaltsübertragung vom Debugger zu Micro mitteilen? Und soll der Debugger nur zum Flashen die Resetleitung auf Low ziehen?
Sie müssen nicht selbst mit dem Reset-Pin interagieren. Dies sollte alles von der J-FLash-Anwendung/J-Link erledigt werden. Was Sie tun müssen, ist, die Reset-Leitung mit dem entsprechenden Pin des JTAG/SWD-Anschlusses auf Ihrer Platine zu verbinden. Siehe meine aktualisierte Antwort.

Speziell zum .s28Format:

Ihre Binärdateien hier sind das gute alte Motorola S-Record- Format, ein Dateiformat, das Binärdateien mit Textdarstellung ausdrückt - Sie können es in notepad.exe öffnen und lesen. (Ein weiteres beliebtes und sehr ähnliches ist Intel Hex.)

S-Records bestehen aus verschiedenen Einträgen. Eine Zeile, die mit S1, S2 oder S3 beginnt, bedeutet, dass sie eine Adresse von 16, 24 bzw. 32 Bit enthält. Eine Zeile, die mit S7, S8 oder S9 beginnt, bedeutet, dass sie die Startadresse des Programms von entweder 16, 24 oder 32 Bit enthält.

Anscheinend wird Ihre Binärdatei mit 24-Bit-Adressen generiert, sodass Ihre Datei S2- und S8-Zeilen enthält. Daher das Format .s28, das als Teilmenge von .srec. Jedes Tool, das behauptet, es zu unterstützen, .srecwird auch unterstützt .s19, .s28und .s37da es sich wirklich um dasselbe Dateiformat handelt.

.motbezieht sich wahrscheinlich auch auf S-Records, obwohl ich nicht sagen kann, dass ich es oft verwendet gesehen habe.

Und ja, all dies wird von Segger gut unterstützt.