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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.