Herunterladen Inhalt Inhalt Diese Seite drucken

Redirected Interrupt Vectors; Für C-Programme Läßt Sich Eine Codesequenz Nach Folgendem Muster Verwenden - elmicro HCS12 T-Board Benutzerhandbuch

Inhaltsverzeichnis

Werbung

HCS12 T-Board
TwinPEEKs ergänzt in dieser Situation ein $FF-Byte und kann nun das
Datenwort programmieren.
Setzt sich der Datenstrom in der folgenden S-Record Zeile mit dem
zuvor fehlenden Byte fort, müsste der Monitor an der fraglichen
Wortadresse einen erneuten Schreibzugriff vornehmen, was jedoch
nicht zulässig ist. Es kommt zu einem Schreibfehler ("not erased").
Es ist daher notwendig, S-Record Daten vor der Programmierung
auf gerade Adressen auszurichten. Hierzu kann z.B. das frei erhältliche
Freescale Tool SRECCVT verwendet werden:
SRECCVT -m 0x00000 0xfffff 32 -o <outfile> <infile>
Die Syntax ist im SRECCVT Reference Guide (PDF) beschrieben.

Redirected Interrupt Vectors

Die Interruptvektoren des HCS12 liegen am Ende des 64KB umfas-
senden Adreßraumes, d.h. innerhalb des schreibgeschützten Monitor-
codes. Um dennoch Interruptfunktionen in einem Anwenderprogramm
zu ermöglichen, leitet der Monitor alle Interruptvektoren (außer den
Resetvektor) auf Adressen im internen RAM um. Das Verfahren
entspricht der Vorgehensweise des HC11 im Special Bootstrap Mode.
Das Anwenderprogramm setzt den benötigten Interruptvektor zur
Laufzeit (vor der globalen Interruptfreigabe!), indem es einen Sprung-
befehl in den RAM-Pseudovektor einträgt. Um z.B. den IRQ Interrupt
nutzen zu können, muß ein Anwenderprogramm folgende Schritte
ausführen:
ldaa #$06
staa $3FEE
ldd
#isrFunc
std
$3FEF
Für C-Programme läßt sich eine Codesequenz nach folgendem
Muster verwenden:
// install IRQ pseudo vector in RAM
// (if running with TwinPEEKs monitor)
*((unsigned char *)0x3fee) = 0x06;
*((void (**)(void))0x3fef) = isrFunc;
32
; JMP opcode to
; IRQ pseudo vector
; ISR address to
; IRQ pseudo vector + 1
// JMP opcode

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis