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
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
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
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
Hmm... Bootmanager und Mainprogramm - das klingt irgendwie nach Flußschifffahrt in Bayern ! duck und wegrenn Gruß, Hendrik.
gugst Du hier "Beitrag "AVR-GCC, Flash teilweise ersetzen (Bootloader?), die Zweite";. Vielleicht ist mein vorhaben dann klarer ?! Gruss Jürgen Sachs
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.