Forum: Mikrocontroller und Digitale Elektronik Wechsel der IDE von Crossworks auf Keil µVision


von S. M. (hellor)


Lesenswert?

Hallo,

ich arbeite seit kurzem mit einem Mikrocontroller-Programm, welches ich 
nun von Crossworks for ARM 1.7 auf Keil µVision 3 portieren soll. Ich 
habe in einigen Praktika mal mit dem MSP430 gearbeitet, bin aber beim 
besten Willen kein Profi...

Verwendeter µC ist der LPC2106 von NXP. Das Programm besteht aus 
etlichen C-Files sowie Headern. Viele der Funktionen sind 
Interruptgesteuert. Kann mir mal jemand grob zusammenfassen, welches die 
Hauptprobleme bzw. Schwierigkeiten sein werden.

Die Header zwecks Registeransteuerung anzupassen sollte ja nicht das 
große Ding seien.Mir wurde jedoch gesagt, dass die Interruptfunktionen 
und andere zeitkritische Funktionen Probleme machen können.

Falls mir jemand Tips geben kann, worauf ich am besten gleich zu Beginn
achten sollte, bzw. mit was ich rechnen muss, wäre ich ausgesprochen 
dankbar.
Achja, auch wenn jemand irgendwelche Lesetips (wenn möglich zum 
Download) hat, immer her damit :)

MfG, hellor

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Hinter Crossworks arbeitet die GNU Toolchain. Habe schon öfter Code für 
IAR EWARM und Realview (die Toolchain hinter uVision) nach GNU portiert, 
nur sehr selten von GNU->"kommerziell", hier also nur eine Kurzfassung 
der Unterschiede:
- Startup-Code anpassen von GNU-Assembler nach Realview Assembler, die 
Assembler-Anweisungen selbst kann man 1:1 übernehmen. Die 
Assembler-Direktiven müssen angepasst werden. Falls der Startup-Code 
nicht allzu komplex ist, dürfte es einfacher sein, auf Grundlage eines 
Beispiels von Keil einen neuen Startup-Code zu schreiben.
- Das Memory-Layout in den uVision Dialogen anpassen. Normalerweise kann 
man Standardeinstellungen verwenden (Startadresse Flash, Startadresse 
RAM).
- Bei komplexem Memory-Layout müssen man die Einstellungen aus 
Crossworks, mit denen im Hintergrund ein Linker-Script erzeugt wird so 
in uVision übernommen werden, dass ein vergleichbares 
"scatter-load-file" erzeugt wird bzw. eigene Scatter-Load-File vorgeben 
(nie selbst ausprobiert, Keil Eval. unterstützt dies nicht).
- Interrupt-Handler anpassen, falls kein Assembler-Wrapper genutzt wird: 
Bei Code für GNU erkennbar am attribute in der Funktionsdeklaration, 
Portierung vgl. Realview Dokumentation __irq. Bei Assembler-Wrapper ist 
nur der Wrapper zu portieren, C-Code der Handler bleibt gleich.
- evtl. gibt es noch Besonderheiten wie spezielle Memory-Sections, 
RAM-Funktionen etc. Falls der Fall, nochmal konkret fragen.

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.