Interrupt-Vektor-Tabelle <> modular programmieren

Gast #4488017
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 :)
Gast #4488075
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)
Gast #4488609
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 :)
#4488687
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.
Gast #4489161
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
#4489194
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."
Gast #4489214
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 ;)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.