Bootmanager und Mainprogramm auf einmal Flashen

OP #455850
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
#455883
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
Gast #455973
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
Gast #456961
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren