Forum: Compiler & IDEs Bootmanager und Mainprogramm auf einmal Flashen


von Jürgen S. (jsachs)


Lesenswert?

Hallo,

Ich hoffe es gibt hierfür einen einfachen Ansatz.
Ich habe einen Bootmanager und ein Hauptprogramm. Beide haben eine 
"main()" Function.
Jetzt möchte ich beide "in einem Rutsch" Flashen für die erste 
Programmierung  und Entwicklungsphase. Ist einfacher und schneller als 
über den Bus.

Nur wie Bringe ich beide Teile in ein File das ich Flashen kann ?
Mir fällt nur folgende umständliche Lösung ein:
1. Flash löschen
2. Bootmanager flashen
3. Flash nicht löschen
4. Hauptprogramm flashen

Der Linker weigert sich verständlicher weise ein Programm mit 2 "main()" 
zu Linken, das ich dann einfach in einem Stück Flashen kann.

Vorab, der Bootmanager kann von sich aus kein Programm laden, deswegen 
Manager und nicht loader :-) Ich brauche also zwingend das 
Hauptprogramm.
Der Start erfolgt im Bootmanger mit einem nachfolgenden "jmp 0" ins 
Hauptprogramm.

Danke
Juergen

von Joe D. (kosmonaut_pirx)


Lesenswert?

hallo,
mit dem linker hat das meines erachtens nach gar nichts zu tun. der 
linker produziert ein .elf, welches avr-objcopy in ein intel hex (oder 
whatever) kopiert. dieses wird dann geflashed. cmiiw.
du brauchst imo eine möglichkeit, zwei .hex (oder whatever) zu 
verbinden. vll kann man die auch hintereinander zusammenfügen 
('catten'), wäre mal nen versuch wert.
viel erfolg,
bye kosmo

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Jürgen,

ich hab das so gemacht: Anwendung linken. Bootloader linken.
Mit dem Editor die Intel-Hex-Records das "End of File Record" der 
Applicaion gelöscht und die Intel-Hex-Records des Bootloaders angehängt.

Überraschung: Wenn Atmel-Studio nach dem Flashen wieder ausliest, dann 
nun den kompletten Speicher inklusivise der großzügig bemessenen leeren 
Räume.

Programm funktioniert.

Ciao
Wolfgang Horn

von Jürgen S. (jsachs)


Lesenswert?

Super ! Danke !
Jetzt tipper ich mir bei Gelegenheit noch ein Prog das das Automatisch 
macht :-)
(Vor 5 Minuten habe ich das auch herausgefunden. Hat nur gedauert bis 
ich die Intel HEX Beschreibung gefunden habe.)

Gruss
Juergen Sachs

von Hendi (dg3hda) (Gast)


Lesenswert?

Hmm...

Bootmanager und Mainprogramm -
das klingt irgendwie nach Flußschifffahrt in Bayern !

duck und wegrenn

Gruß,

Hendrik.

von Jürgen S. (jsachs)


Lesenswert?

gugst Du hier "Beitrag "AVR-GCC, Flash teilweise ersetzen (Bootloader?), die Zweite";.

Vielleicht ist mein vorhaben dann klarer ?!

Gruss
Jürgen Sachs

von tom (Gast)


Lesenswert?

Hi,

@Jürgen: professionell wird das in der Regel mit der Methode von 
Wolfgang gemacht, d.h. Boot linken und in Hex konvertieren, Main linken 
und in Hex konvertieren, Boot-Hex und Main-Hex zusammenbinden. 
Voraussetzung: unterschiedliche Adressräume (nur um's gesagt zu haben! 
;-) )

Schönen Tag noch,
Thomas

von Ulrich P. (uprinz)


Lesenswert?

Wie habt Ihr denn dem Compiler  Linker  objcopy beigebracht, dass es 
nur eine flash von z.b. 0x3800 hat, obwohl ein mega32 mit 0x4000 
angegeben ist?

Ich krieg das in Avr Studio + AvrGcc nicht hin. Zu doof oder zu blind 
:-)

Gruß,
Ulrich

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.