Forum: Mikrocontroller und Digitale Elektronik MSP430 Software-Interrupt


von Uhu U. (uhu)


Lesenswert?

Zitat aus http://www.mikrocontroller.net/articles/DebugWIRE:

> Anders als JTAG besitzt debugWIRE keine Breakpoint-Möglichkeiten in der
> CPU-Hardware, damit können Breakpoints nur über das Einfügen von
> BREAK-Befehlen in den Flash-ROM-Inhalt realisiert werden
> (Software-Breakpoint). Dies erfolgt transparent durch die Firmware
> des JTAG ICE, die nach dem Erreichen des Breakpoints den ursprünglichen
> Inhalt der entsprechenden Seite im Flash-ROM wieder herstellt.
> Daten-Breakpoints sind nicht möglich.

Kann man diesen BREAK-Befehl auch selbst einsetzen?

Wenn ja, wie ist die genaue Syntax und was bewirkt er?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was hat DebugWire mit MSP430 zu tun?

von Uhu U. (uhu)


Lesenswert?

Rufus t. Firefly wrote:
> Was hat DebugWire mit MSP430 zu tun?

Au ja, garnix... Ich meinte natürlich die AVRs. (Mich hat die Staupe 
offenbar fester im Griff, als ich dachte.)

Aber nichts desto Trotz interessiert mich auch, wie man auf dem MSP430 
einen SWI basteln kann.

von TI-Fan (Gast)


Lesenswert?

> Anders als JTAG besitzt debugWIRE keine Breakpoint-Möglichkeiten in der
> CPU-Hardware, damit können Breakpoints nur über das Einfügen von
> BREAK-Befehlen in den Flash-ROM-Inhalt realisiert werden
> (Software-Breakpoint). Dies erfolgt transparent durch die Firmware
> des JTAG ICE, die nach dem Erreichen des Breakpoints den ursprünglichen
> Inhalt der entsprechenden Seite im Flash-ROM wieder herstellt.
> Daten-Breakpoints sind nicht möglich.

lol, watt für nen Schrott.
Der Haltbarkeit des Flashs bestimmt sehr zuträglich.

Nimm halt nen MSP...
Wenn SpyByWire geht, dann geht auch alles was JTAG kann.

von Uhu U. (uhu)


Lesenswert?

TI-Fan wrote:
> lol, watt für nen Schrott.
> Der Haltbarkeit des Flashs bestimmt sehr zuträglich.

Was glaubst du, warum ich ihn selbst in den Code schreiben will? Per 
ASM, oder C.

> Nimm halt nen MSP...
> Wenn SpyByWire geht, dann geht auch alles was JTAG kann.

Auch das ist nicht hilfreich. Ich will was ähnliches wie int xx auf den 
80x86, oder swi auf den Motorolas etc. pp.

von TI-Fan (Gast)


Lesenswert?

Lieber Uhu Uhuhu,

da jagst Du einem Phantom nach.

Softwareinterrupts wie SWI oder INT gibt es beim MSP430 nicht.

Der C-SPY-Debugger von IAR benutzt nur Hardwarebreakpoints.
Wenn die nicht reichen:
1
Use virtual breakpoints
2
The option Use virtual breakpoints allows C-SPY to use virtual breakpoints when all 
3
available hardware breakpoints have been used. When virtual breakpoints are used, 
4
C-SPY is forced into single-step mode.
5
To prevent C-SPY form entering single-step mode, disable this option. In this case 
6
C-SPY will not use virtual breakpoints, even though all hardware breakpoints are 
7
already used. For further information, see Available breakpoints, page 204 the MSP430 
8
IAR Embedded Workbench® IDE User Guide.

Du könntest aber einen nichtimplementierten Opcode nutzen,
der dann einen Interrupt auslöst.

Viel Spaß

von Uhu U. (uhu)


Lesenswert?

TI-Fan wrote:

> Du könntest aber einen nichtimplementierten Opcode nutzen,
> der dann einen Interrupt auslöst.

Das gibt einen Reset. Hast du eine Idee, wie man das von einem "echten" 
Reset unterscheiden kann?

von Christian R. (supachris)


Lesenswert?

Was ist denn der Sinn des ganzen? Einen kontrollierten Reset kannst du 
auch über den WDT erzeugen, einfach ein ungültiges Passwort drauf 
schreiben und schon beißt er zu. Ist nach dem Reset dann auch auslesbar, 
dass der das war. Ich schreib immer 0xDEAD auf WDTCTL, das sieht auch 
noch schön aus :)

von Uhu U. (uhu)


Lesenswert?

Ich überlege mir, wie man einen Debug-Monitor stricken kann, der einfach 
an festen Positionen stoppt und nachsieht, ob ein neues Debugkommando 
vorliegt.

Beim MSP ist es nicht so furchtbar interessant, aber bei den AVRs wegen 
der fehlenden Breakpoint-Register schon. Wenn die Breakpoint-Register 
auf dem MSP nicht ausreichen, wird es aber auch dort interessant, denn 
die "virtuellen Breakpoints" sind ja in Wirklichkeit keine, sondern das 
Programm wird durchgesteppt und das Zeitverhalten - sofern man davon 
überhaupt noch sprechen kann - ist völlig anders.

Wenn derselbe Monitor auf unterschiedlichen Prozessoren läuft, ist das 
auf jeden Fall ein Vorteil.

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.