Forum: Mikrocontroller und Digitale Elektronik Interrupt-Vektor-Tabelle <> modular programmieren


von Bestromer (Gast)


Lesenswert?

Hallo liebe Gemeinde,

ich programmiere z.Z. in Assembler auf verschiedenen AVR und versuche 
ein wenig Struktur ins Chaos zu bringen :)

kurze Frage:

wie löst ihr die Verwaltung der Interruptvektortabelle wenn ihr modular 
programmiert?

etwas nicht ganz so kurze Erklärung:

Meistens wird die IVT schön übersichtlich an den Anfang des Programms 
gestellt, gefolgt von Initialisierungen und dem eigentlichen 
Programmcode mit allen Unterprogrammen, also sehr statisch,übersichtlich 
und clean.
Entsprechend schlecht lassen sich Programmteile wiederverwenden, also 
ist Kapselung/Modularisierung momentan für mich das Zauberwort.

Jetzt möchte ich z.B. Hardware modular abstrahieren und die Module bei 
Bedarf includieren.
Alles bis dahin kein Problem, ausser wenn das Modul einen 
Interruptvektor nutzt.
In dem Fall muss ich diesen manuell in die schöne Interruptvektortabelle 
am Anfang eintragen und das finde ich nicht so toll.

Überlegungen zur Abhilfe:
-am Programmanfang mit der Direktive .org INT_VECTORS_SIZE den Speicher 
frei halten und direkt in den Modulen mit .org die Sprungadresse zur 
Interruptroutine in den jeweiligen Vector schreiben.
-irgendwelches Macro oder anderes Präprozessorgedöhns nutzen, wobei mir 
da die Ideen/Erfahrungen fehlen....


Danke fürs lesen und evtl. Antwort :)

von Peter D. (peda)


Lesenswert?


von Bestromer (Gast)


Lesenswert?

...der Peter, hat er wieder das Zauberkästle aufgemacht und mich einfach 
nur verblüfft....wieso hab ich den wertvollen Beitrag nicht selber 
gefunden!!*Kopfkratz*

Ich verneige mich zu tiefst und wünsche Dir eine besonders schöne Woche 
:o)

von Bernd K. (prof7bit)


Lesenswert?

Bestromer schrieb:
> muss ich diesen manuell in die schöne Interruptvektortabelle
> am Anfang eintragen

Warum nimmst Du nicht weak symbols, oder nochmal anders gefragt, warum 
schreibst Du die überhaupt selber und wenns dafür nen Grund gibt warum 
dann jedesmal neu?

von Bestromer (Gast)


Lesenswert?

Bernd K. schrieb:

> Warum nimmst Du nicht weak symbols....
im Zusammenhang mit Assembler kann ich damit gerade nix anfangen,aber 
ich werde mal Googeln...

> oder nochmal anders gefragt, warum schreibst Du die überhaupt selber...
In Assembler kümmert man sich so ziemlich um alles selber, ich kenne da 
jetzt keinen anderen Weg?

> und wenns dafür nen Grund gibt warum dann jedesmal neu?
Jedes mal neu will ich sie ja nicht schreiben,sondern in den jeweiligen 
Modulen die Initialisation vornehmen, deshalb meine Fragestellung :)

von Bernd K. (prof7bit)


Lesenswert?

Bestromer schrieb:
> Bernd K. schrieb:
>
> Warum nimmst Du nicht weak symbols....
>
> im Zusammenhang mit Assembler kann ich damit gerade nix anfangen,aber

Die weak Symbole werden vom linker ausgetauscht wenn er in irgendeinem 
objekt file das selbe Symbol nochmal findet und es dort nicht als weak 
markiert ist.

Mit der Gnu Toolchain sollte das gehen. Schau dir mal die oft in asm 
geschriebenen startup files und vektortabellen für Arm Controller an, da 
wird das genauso gemacht.

von Bestromer (Gast)


Lesenswert?

Hallo Bernd,

erst mal vielen Dank für Deine Anwort :)

Die Funktionsweise konnte ich schon erahnen, aber bei mir gibt es keinen 
Linker, da ich direkt in Assembler programmiere und deshalb auch keine 
Toolchain benutze.
Da gibt es nur den Präprozessor mit seinen paar Direktiven und eben den 
Assembler...klingt ein wenig wie in der Steinzeit, in gewissen 
sicherheitsrelevanten Bereichen oder kleinen Minimalsystemen ist das 
aber noch gängige Praxis.

Projekte in C werde ich in Zukunft definitiv realisieren, da man dann 
doch einen gewissen Komfort hat und sehr übersichtlich in Headerfiles 
verankern kann.
Allerdings ist dies für mich Neuland, da ich bisher nur sehr 
zeitkritische Dinge programmieren sollte wo der Code nachvollziehbar aus 
einer Hand stammen musste und nicht durch Fremdmechanismen wie eine 
Toolchain bearbeitet werden durfte.
Die Zeiten sind aber vorbei, denn die Entwicklungszeit spielt heute die 
grössere Rolle....wobei man das aber auch sehr oft an der Qualität 
mancher Produkte sieht ;)
Ich bin aber überzeugt, das man mit genug Hintergrundwissen über die 
verwendete Toolchain und evtl. eingesetzter Bibliotheken auch sehr 
zuverlässige Software entwickeln kann und dies mit den tollen Vorzügen 
dieser Sprache.

LG Frank

von Falk B. (falk)


Lesenswert?

@  Bestromer (Gast)

>ich programmiere z.Z. in Assembler auf verschiedenen AVR und versuche
>ein wenig Struktur ins Chaos zu bringen :)

>Die Funktionsweise konnte ich schon erahnen, aber bei mir gibt es keinen
>Linker, da ich direkt in Assembler programmiere und deshalb auch keine
>Toolchain benutze.

Einfache Lösung. Nimm C.

>Da gibt es nur den Präprozessor mit seinen paar Direktiven und eben den
>Assembler...klingt ein wenig wie in der Steinzeit, in gewissen
>sicherheitsrelevanten Bereichen oder kleinen Minimalsystemen ist das
>aber noch gängige Praxis.

Bei Moby und seinen Spießgesellen, jaja ;-)

>Allerdings ist dies für mich Neuland, da ich bisher nur sehr
>zeitkritische Dinge programmieren sollte wo der Code nachvollziehbar aus
>einer Hand stammen musste und nicht durch Fremdmechanismen wie eine
>Toolchain bearbeitet werden durfte.

Das sagen sie alle. Was für Steuerungen sollen das sein?
Wenn man taktgenau programmieren muss nimmt man meist 
besserProgramierbare Logik in Form von CPLDs und FPGAs. Es gibt nur noch 
sehr wenige Ausnahmen, die hand- und taktoptimierten Assmbler WIRKLICH 
rechtfertigen.

>Die Zeiten sind aber vorbei, denn die Entwicklungszeit spielt heute die
>grössere Rolle....

Na immerhin bist du noch erkenntnisfähig, im Gegensatz zu Moby.

>wobei man das aber auch sehr oft an der Qualität
>mancher Produkte sieht ;)

Früher war alles besser ;-)

>Ich bin aber überzeugt, das man mit genug Hintergrundwissen über die
>verwendete Toolchain und evtl. eingesetzter Bibliotheken auch sehr
>zuverlässige Software entwickeln kann und dies mit den tollen Vorzügen
>dieser Sprache.

In der Tat.

"Everything is easy with the right tool. But a fool with a tool is still 
a fool."

von Bestromer (Gast)


Lesenswert?

Hallo Falk,

ja, diese Kriegsszenarien habe ich öfter amüsiert mitgelesen...für mich 
als Leser und "Anfänger" stecken da viele Infos drin, auch wenn der Ton 
manchmal etwas rau geworden ist...aber wir sind ja keine Mädchen :)
Grundsätzlich bin ich kein Verfechter von Assembler wobei mir gewisse 
Dinge echt Spass gemacht haben, aber wirkliche Effizienz und Komfort bei 
der Entwicklung ist eben auch eine verlockende Sache.
Ich bin gespannt auf die Kombination von beiden, damit kann man die 
Vorzuge beider Sprachen nutzen...ich glaube das wird gut.

Danke für Deinen Beitrag ;)

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.