Hallo, ich möchte für den TMS320C6713 eine ISR schreiben (ohne BIOS). TI macht zum Thema IST auch Vorschläge. Aber was soll denn hier passieren??? _vec_dummy: B B3 NOP 5 Hat dass schon mal jemand gesehen? Die drei Zeilen tauchen immer wieder auf! Gruss Dirk
Das ist ein Teil einer (möglichen) Vektortabelle. Ich habe gerade mal danach gesucht (http://www.nd-tech.com/webk/winko/include/etc_down_hit.php?code=qna&v=eng&category=&page=4&number=188&keyfield=&key=&file=vecs.asm). Mit dem Macro direkt davor (VEC_ENTRY) wird in die jeweilige Startadresse der eigentlichen Interruptroutine gesprungen. Da die Vektortabelle mit irgendetwas während der Initialisierung gefüllt werden muss, nimmt man Dummys für nicht benötigte Interrupts. Zur Info: Die ISRs müssen genau acht Befehle lang sein. Wenn der Code zu lang ist, muss aus der ISR in eine andere Routine gesprungen werden. Die 5 NOPs am Ende sind wichtig für die Fließbandverarbeitung (pipelining, delay-slots). Du solltest dir das leben nicht unnötig schwer machen, und das BIOS dafür verwenden. Das ist wesentlich unkomplizierter. Gruß, Jan
Hallo Jan, was ich halt nicht blicke ist, warum steht der dummy vor der eigentlichen Vektortabelle? Und warum ein Sprung nach B3 (B B3)? Wann würde denn ein Sprung nach _vec_dummy: erfolgen? Mit dem BIOS hast Du natürlich recht. Damit geht es echt einfach und bequem. Aber das BIOS ist nunmal so ne Art Mini-Betriebssystem und ich weiss nicht ob der Einsatz wirklich sinnvoll ist? Habe da noch zuwenig Erfahrungen. Läuft das stabil? Gruss Dirk
Das Makro VEC_ENTRY bekommt die Adresse des Dummys oder einer anderen Routine. VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm "addr" wird also mit _vec_dummy ersetzt. Im Makro selbst wird dann B0 auf den Stack gerettet, unterer und oberer Teil (wegen fester Befehlslänge bei RISC, load store Problematik) der Adresse geladen und zur Adresse gesprungen. Danach wird der alte Inhalt von B0 vom Stack zurück kopiert. LDW und die NOP Befehle sind wieder Delayslots für den branch. Warum gerade nach B3 gesprungen wird weiß ich nicht. Da handelt es sich eventuell um reine Willkür. B3 hat imho auch keine spezielle Funktion, wie etwa B15 (stackpointer). Ja, das BIOS läuft sehr stabil. Gruß, Jan
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.