Forum: Compiler & IDEs avrlib: interrupt.h, vector table, jmp/rjmp


von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Für die ISR Vector Table soll statt jmp rjmp benutzt werden, was in 
interrupt.h line 228 auch vorgesehen wurde, ABER nichts bewirkt.
Das Konstrukt dazu wird von gcc wohl ignoriert - es kann gelöscht werden 
und ergibt keine Fehlermeldung - Bug?

Gibt es andere Ideen/Lsg. von jmp zu rjmp innerhalb der Vector Table zu 
gelangen?

uC Target Atmega328p


Was war nochmal der Unterschied zwischen asm.s und asm.S files?

von c-hater (Gast)


Lesenswert?

Apollo M. schrieb:

> Für die ISR Vector Table soll statt jmp rjmp benutzt werden

Also, wenn du meine Meinung hören willst: wenn du solche Problem hast, 
dann bist du definitiv in dem Bereich, wo du C komplett droppen 
solltest. Das macht's nur schwieriger.

In purem Assembler ist es viel einfacher, die Hardware des µC optimal zu 
nutzen. Jedenfalls bei so einfachen Target wie den AVR8.

von Oliver S. (oliverso)


Lesenswert?

Die Vektortabelle steckt in .../avr/lib/avr5/crtatmega328p.o.
Das müsstest du entsprechend anpassen.

Oliver

von Apollo M. (Firma: @home) (majortom)


Angehängte Dateien:

Lesenswert?

Meine Lösung für das Problem ...
AVR-VT (initial version) ist ein in Python realisiertes Program das die 
Vector Table patched. Lässt sich im Build Process als post-build Cmd 
aufrufen.

Kann durch Options für old/new AVR's verwendet werden hins. VT an 
beliebiger Adresse z.b. @Startadresse Boot Loader.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Apollo M. schrieb:

> Meine Lösung für das Problem ...
[...]

OMG...

Hätte man's gleich in Assembler geschrieben, gäbe es das Problem erst 
garnicht, nichtmal eine vollständige Vektor-Tabelle gäbe es (die nur 
sinnlos Flash verschwendet), sondern nur die tatsächlich benutzen 
Vektoren wären mit Code gefüllt und zwar mit genau dem optimalen, der 
u.U. sogar noch ohne ein rjmp auskommt, weil der für die ISR nötige Code 
einfach in den Flash der "Vektortabelle" direkt reinpasst...

Noch ein paar Jahre, und du kommst auch dahinter, was wirklich die 
Lösung ist...

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

c-hater schrieb:
> Noch ein paar Jahre, und du kommst auch dahinter, was wirklich die
> Lösung ist...

Du irrst dich, deine Baisics sind mir seit vielen Jahren bekannt! Ich 
programmiere auch native in Assembler seit Jahren.

Das Program AVR-VT ist eher eine Fingerübung für meine Python Praxis, 
weil ich noch andere Tools in Python schreiben möchte, die mir in ASM7 
fehlen und/oder mir teilweise als shell script vorliegen.

Für mich ist das alles nur wie Briefmarkensammeln - also ohne Ideologie 
und Verkrampfung.

Praktisch habe ich die zwei Vectoren in einer Minute händisch 
modifiziert, aber das Python Program hat mir 3 Tage gekostet.
Habe aber wieder etwas mehr Python verstanden und Spasss gehabt!

Das Program wurde weiter entwickelt und gefixt ...

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.