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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.