Wechsel der IDE von Crossworks auf Keil µVision

OP #860030
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
Moderator Persönliche Seite
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.