Forum: Mikrocontroller und Digitale Elektronik Luminary LM3S8962 Start-Up-Code und Linker-Skript


von Sebastian H. (rs2)


Lesenswert?

Hallo,

ich besitze das Luminary Micro LM3S8962 Eva-Board und würde es gern mit 
Eclipse + CDT Plugin sowie der Sourcery G++ Lite Tool-Chain 
programmieren.

Ich bin noch etwas unbeholfen und habe daher ein paar grundlegende 
Fragen:

Benötige ich zwingend ein Linker-Skript-File, oder sind die Sourcery G++ 
Lite Standardlinkereinstellungen für das LM3S8962 ausreichend?

Benötige ich Start-Up-Code bzw. einen Bootstraploader um lauffähige 
Programme auf den Controller zu laden?
Bei Luminary Micro steht:

All Stellaris microcontrollers ship with a royalty-free serial flash 
loader application pre-programmed into flash. The serial flash loader is 
a small application that allows programming of the flash without the 
need for a debugger interface or production programmer.

Bedeutet dies unteranderem, dass ich generierten Maschinen-Code z.B. mit 
dem LMFlashProgrammer ohne Startup-Code auf dem Controller zum Laufen 
bekomme?

(Kann es momentan nicht einfach testen, da ich das Eva-Board nicht 
griffbereit habe.)

Schonmal danke für eure Antworten!

Sebastian

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Sebastian H. schrieb:
> Hallo,
>
> ich besitze das Luminary Micro LM3S8962 Eva-Board und würde es gern mit
> Eclipse + CDT Plugin sowie der Sourcery G++ Lite Tool-Chain
> programmieren.
>
> Ich bin noch etwas unbeholfen und habe daher ein paar grundlegende
> Fragen:
>
> Benötige ich zwingend ein Linker-Skript-File, oder sind die Sourcery G++
> Lite Standardlinkereinstellungen für das LM3S8962 ausreichend?

Hmm, widersprüchliche Frage, ein Linker-Skript wird immer benötigt. 
Standardeinstellung heisst, dass ein bestimmtes Linkerscript aus dem 
gcc-Installationspfad genutzt wird. Welches genau kommt auf die 
multilib-Einstellungen und Linkeroptionen an. Selbst bisher immer 
"eigene" Linkerscripte genutzt.

Da selbst LMI in der DriverLib ein (sehr minimales) Linkerscript beilegt 
(gcc/standalone.ld), sollte man zumindest für die ersten Schritte auch 
dieses nutzen. Es ist nicht mehr als die Angabe das Dateinames in Option 
-T beim Linken.

> Benötige ich Start-Up-Code bzw. einen Bootstraploader um lauffähige
> Programme auf den Controller zu laden?

Durcheinander. Also um ein Programm "zu laden" benötigt man einen Weg 
den Maschinencode in einen Speicher (Flash oder RAM) des Controllers zu 
laden. Unter startup-code versteht man üblicherweise die Anweisungen, 
die vor dem Sprung zu main() abgearbeitet werden. Das hat erstmal nichts 
mit "laden" zu tun.

> Bei Luminary Micro steht:
>
> All Stellaris microcontrollers ship with a royalty-free serial flash
> loader application pre-programmed into flash. The serial flash loader is
> a small application that allows programming of the flash without the
> need for a debugger interface or production programmer.
>
> Bedeutet dies unteranderem, dass ich generierten Maschinen-Code z.B. mit
> dem LMFlashProgrammer ohne Startup-Code auf dem Controller zum Laufen
> bekomme?

Nicht ausprobiert aber eher nicht. Selbst wenn, der Bootloader läuft nur 
"auf Anfrage". Man tut also gut daran, in eigenen Programm Startup-Code 
einzubauen. Auch hierfür findet man vorgekauten Code in der DriverLib 
(gcc/startup.c). Dieser enthält alles notwendige 
(exceptions-vector-table, data init, bss clear, Aufruf von main()). 
(Angaben beziehen sich auf eine relativ alte Version der DriverLib von 
Mitte 2008, Pfade/Dateinamen in aktuellen mglw. anders.)

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.