Gast
#632904
Hallo Leute, nun, der ARM7 (LPC21xx) läuft und läuft, ganz gut, ich möchte nur noch mal heraus finden, ob ich mit einfachen Mitteln den Code vereinfachen und die Performance verbessern kann, ohne der Anwendung zu schaden. Ich möchte heute mal in Erfahrung bringen, in welchem Mode man seine Anwendung auf einem ARM7 sinnvoll betreiben kann. Nicht, daß ich die Modes und deren jeweilige Einschränkung und Vorteile nicht kenne. Gehen, tut ja vieles, und im Grunde kann ich auch machen was ich will, Hauptsache die Anwendung läuft hinterher sauber. Aber: ARM gibt in seinen Manuals die bevorzugte Benutzung des USER-Modes an, stellt aber andere Modes zur Debatte. Im USER-Mode jedoch, ist man auch am weitesten in der Benutzung des Controllers eingeschränkt. Ein Kollege, mit anderen ARM, ARM9, beschäftigt, sagte mir dazu, der USER-Mode sei schon sinnvoll, verhindere eine Menge Unfug und unstrukturierte Programmierung. Nun, ich kann das noch nicht ganz nachvollziehen. An anderen Stellen liest man wieder Diskussionen, ob der Betriebsmode der Anwendung der USER-Mode, SYSTEM-Mode oder SUPERVISOR-Mode sein kann. Meine Anwendung läuft zur Zeit im USER-Mode. Möchte ich Teile des Codes gegen alle IRQ gesperrt haben, z.B. so sensible Dinge wie FIFO-Zugriffe, die keinesfalls reentrant sein dürfen, muß ich diese im SWI-Mode laufen lassen, da aus dem USER-Mode kein Zugriff auf CPSR, um IRQ- und FIQ- Line direkt zu sperren. Interrupt-Sperre geht aus dem USER-Mode nur über VIC mit Sicherung aller Flags in einer Variablen. Im SYSTEM-Mode könnte ich Interrupts IRQ und FIQ direkt über CPSR sperren und hätte den Code-Overhead des SWI nicht. Die SWI-Numerierung muß ich unter GCC oder RealView parallel an 2 Stellen und zwar für das SWI-Assembler-File und in einem C-Header-File verwalten. Bei Fehlern in der Numerierung, gibt es keine Compiler-Errors, weil logische Fehler. Hinzu kommt, daß es auch mehrere Targets gibt, wobei jeweils Teilmengen der SWI-Funktionen benötigt werden. Das macht das ganze zur Compile-Time schon störungsanfällig. Keil CARM, 2005 eingestellt und nicht mehr zur weiteren Verwendung empfohlen, generiert die SWI-Tabelle noch automatisch, da fiel eine der beiden Definitionsquellen weg, und es war problemlos. Das sind jetzt nur mal ein paar Überlegungen, Details und Anregungen. Wer hat denn da gute Erfahrung mit der einen oder anderen Lösung? Gruß Dietmar