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 :)
...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)
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?
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 :)
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.
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
@ 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."
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.