Forum: Mikrocontroller und Digitale Elektronik LPC xxxx Header Philosophien


von Christian J. (elektroniker1968)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von Robert T. (robertteufel)


Lesenswert?

@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
Noch kein Account? Hier anmelden.