Re: Interrupt in ASM Kategorie: Programmierung Assembler (von Michael - 20.03.2009 8:04) | ||
Als Antwort auf Re: Interrupt in ASM von PeterS - 16.01.2009 11:56 | ||
| ||
> > > > > > Hallo Peter; > > > > > > > > > > > > wird dies in naher Zukunft funktionieren ?! > > > > > > > > > > Ich habe deswegen schon schlaflose Nächte. :-) Nicht exakt so, aber so ähnlich wird es gehen. Kann aber > > > > > sein, das ich es noch kurz nach dem Release nachschiebe. Also von jetzt an ca. 5-6 Wochen. > > > > > Die Interruptroutinen werden dann den Assembler Code aufrufen, also ein "ret" und kein "reti" am Ende. > > > > > > > > > > Gruss Peter > > > > > > > > Hallo Peter, > > > > verstehe ich das richtig: Der Interrupt unterbricht nicht die Ausführung des Interpreters sondern > > > > der Interpreter Pollt weiterhin den Interrupt und ruft dann eine Assemblerroutine auf? Falls es so wäre > > > > würden weiterhin Echtzeitanforderungen nicht realisierbar sein > > > > > > Nein das verstehst Du nicht richtig. Die Interruptroutine springt dann direkt in die Assemblerroutine und > > > bypassed den Interpreter. Nur wie ich die Adresse der Assemblerroutine sauber in einen function pointer > > > in der Interruptroutine gebracht bekomme, lässt die Anzahl meiner grauen Haare weiter steigen. > > > > > > Gruss Peter > > > > Hallo Peter, > > ich vermute mal, das du für den Assembler Teil Speicherbereiche festlegts für Code und Daten. Dieser > > kollidert nicht mit deinem Interpreter / Bytecode Bereich. Somit steht doch diese Einsprungadresse fest > > und könnte mit Irq_SetVect(...) in das Interruptregister bzw. die Sprungtabelle eingetragen werden. > > So habe ich es bei einem 18186 Projekt gemacht ich kann nur leider nicht sagen, ob es beim ATMEL > > auch so geht. > > Viele Grü�e > > Jo > > Der Bytecode Compiler übersetzt zuerst das Hauptprogramm. Anhand der der Länge des Bytecodes > wird die Org Adresse des Assembler Codes ermittelt. Der Bytecode Compiler erstellt eine Textdatei > mit dem Namen und Adressen der Assembleraufrufe im Bytecode. Der Assembler erstellt neben > dem Object auch eine mapping Datei mit den Adressen der generierten Assemblerroutinen. Die mapping > Datei und die Textdatei mit Namen und Adressen werden eingelesen und die IDE patcht in einer Art > "Linker" die Assembler Adressen in den Bytecode. Alles sehr dynamisch. > > Es gibt nur leider noch keinen Mechanismus um die Adressen der Assemblerroutinen übergeben zu > können. Dafür mu� ich noch den "Linker" in der IDE kräftig aufbohren. > > Gruss Peter > > > > > > > > > > > > > > > > Viele Grü�e > > > > > > > > Jo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > cc: > > > > > > > > > > > > void start $asm("start")(void); > > > > > > > > > > > > void main(void) > > > > > > { > > > > > > Irq_SetVect(INT_1,start); > > > > > > } > > > > > > > > > > > > > > > > > > asm: > > > > > > > > > > > > Start: ;Irgendwas > > > > > > > > > > > > reti > > > > > > > > > > > > > > > > > > Gru� Michael > > > > > > Morgen Peter, ich wollte nur mal den IRQ Aufruf in die Erinnerung zurückrufen !!!!???? Schönen Tag noch Michael | ||
Antwort schreiben Antworten: Re: Interrupt in ASM (von Heiko - 16.11.2009 11:32) Re: Interrupt in ASM (von Andy - 11.12.2009 13:22) Re: Interrupt in ASM (von PeterS - 17.12.2009 11:46) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum