Hallo, wer schonmal diversen Codde aus dem Netz verwenden wollte stellt fest, dass die Registerbelegung mit Symbolnamen auf unterschiedliche Weise gehandhabt wird. Rowley hat eine grosse Datei mit Registernamen und Bitposition darin, R O Software verwendet eine sehr pfiffige struct,union Struktur aus ca 20 Header Dateien, die voneinander abhängig sind , Keil hat auch etwas Eigenes geschaffen. Das Dumme ist, dass die Registernamen sich nicht am offiziellen Handbuch des Arm orientieren sondern mal so und mal anders sind, manchmal ist es eine grosse Datei, manchmal sind es auch viele, für jedes Peripheriegerät eine, die man dann einbindet wenn man es braucht. Ein gutes beispiel sind die uart Implementationen, oft benutzt von R O Software, man findet sie in vielen Projekten wieder. Das Dumme: Der Programmcode, den man nutzen will ist durch die Syntax fix an diese Dateien gebunden, im schlimmsten Falle muss man hunderte Zugriffe ändern, wenn man sie portieren will, da es nicht möglich ist zwei dieser Headerdateien gleichzeitig in einem Projekt zu haben, wenn sich darin Namen überschneiden oder Spezial DEFINES verwendet werden. Crossworks "kennt" die defines global, auch wenn ich eine "Solution" als mehrere Projekte aufteile und zusammenlinke. Vielleicht könnte mal jemand, der diese Umgebung nutzt auch den Unterschied zwischen "projects" und "Solutions" erklären, der wird mir nicht ganz klar. Ich überlege nun zu welchem System ich tendieren soll, welches die grösste Verbreitung hat was zB den LPC2138 angeht ddenn natürlich möchhte ich code, den es schon gibt nicht nochmal schreiben müssen. Jene, die sich mit diesem problem schon mal rumgeschlagen haben können vielleicht ihre erfahrungen dazu beitragen. Danke. Christian
Es zwingt dich niemand dazu, die vorhandenen Header zu verwenden. Wenn kein eindeutiger Standard existiert (wie etwa bei AVR) oder erst garkeine dabei sind (ARM/GCC), dann baue ich mir solche Header gerne auch selbst. Zudem neige ich dazu, nur auf unterster Ebene direkt die Hardware zu gehen. Diese unterste Ebene bilden Software-Module für UART,I2C,CAN,... und der Rest des Programms arbeitet dann nur noch mit den Modulen. Andere nenne das einen HAL. Ähnlich bei Portbits, nur sind es dort eher Makros. Das erleichtert die Portierung, nicht zuletzt auch auf Controller mit abweichender Hardware.
@Christian das Problem wurde bei ARM erkannt, denn es geht nicht so sehr um die Header der Chipanbieter oder SW-Anbieter sondern um die Header fuer ARM, d.h. den groessten Nutzen haben ARM und die Endanwender. Fuer den Cortex-M3 gibt es jetzt eine Normung, oder mindestens den Vorschlag. http://www.arm.com/news/23722.html Bei den LPC, nimm die Form, die dem Tool Deiner Wahl entspricht, also Keil/IAR/GCC/Rowley... Ohne es genauer geprueft zu haben, wahrscheinlich ist die Keil Nomenklatur relativ nahe der M3-Spezifikation Robert
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.