PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bootloader flashen



ba4_philipp
21.12.2006, 17:34
Hallo,

warscheinlich eine Recht dumme Frage, aber wie flashe ich einen Bootloader?
Angenommen ich habe ein kleines Prog in C geschrieben und mit dem gcc compiliert. Wie sage ich nun Pony-Prog oder avr-dude, dass er es doch bitte in den Bootloader Bereich legen soll und nicht vorne in den Flash?

Vielen Dank
Gruß Philipp

ogni42
21.12.2006, 18:04
Du kannst beim Linken angeben, wo ein bestimmtes Segment hin soll. Schau mal in die libc Faq, da ist das beschrieben.

ba4_philipp
22.12.2006, 00:09
Ahh vielen Dank. Eigentlich ja auch logisch.

Also, wenn ich einen Mega8 verwende und die beiden BOOTSZ Fuses auf 0 habe. Dann sind ja 1024 Words gewählt. Dazu geb ich dem Linker dann

--section-start=.text=0x0C00

mit oder habe ich doch etwas falsch verstanden?

Und wenn das so ist, kann ich dann eigentlich erstmal 2 Hex Files zusammenkopieren? Also so, dass Ponyprogr Bootloader und ein Prog vorne gleichzeitig flasht? hintereinader geht es ja nicht, oder?

Dann setze ich noch BOOTRST und der Mega8 sollte den Bootloader starten. Ist das so korrekt?

Vielen Dank schonmal
Gruß Philipp

m.a.r.v.i.n
22.12.2006, 10:09
Hi,

im Makefile gibt man die Byte Adresse an, nicht Word Adresse. Also müßte es so gehen:


--section-start=.text=0x1800

In Ponyprog sollte es möglich sein, 2 Hexfiles zu laden und diese zusammen zu flashen.

Gruß m.a.r.v.i.n

ogni42
22.12.2006, 10:12
Die genau Syntax weiss ich jetzt nicht auswendig, aber: Ja, so geht das (mit --section-start=...).

Ob Du die Hexfiles zusammenkopieren kannst weiss ich nicht.

ba4_philipp
22.12.2006, 16:12
Alles klar vielen Dank, dann werd ich heute abend mal die ersten Bootloader Versuche starten.

@Marvin Das hätte mich wohl wieder einen Abend gekostet ohne deinen Hinweis :)

Vielen Dank
Gruß Philipp

linux_80
22.12.2006, 17:43
Hallo,

im Pony kann man ganz einfach erkennen ob das mit dem verschobenen Programmstart hinhaut, denn normalerweise beginnt das ab Adresse 00000. Wenn die Adresse weiter hinten ist, muss man schon ziemlich nach unten scrollen um den Anfang zu finden, nach den FF FF ... Zeilen, da kann dann auch überprüft werden ob die Adresse stimmt.
Nach dem Programmspeicher wird noch der EEPROM-Bereich angezeigt, in anderer Farbe, ist aber auch meist FF FF ...

Oder einfach die Hex-Datei mit einem Texteditor öffnen, und die Adresse am Anfang einer Zeile anschauen, sollte dann auch von :100000 unterschiedlich sein, zB :101C00.

ba4_philipp
23.12.2006, 13:41
Hmm ich habe gerade mal angefangen. Ich habe im Makefile folgende Zeilen unter den Linker Parametern hinzugefügt:

#in den Bootloader Bereich
LDFLAGS += --section-start=.text=0x1800

Die erste Zeile meines Hex Files sieht trotzdem noch so aus:
:1000000012C02BC02AC029C028C027C026C025C0C6

Hat jmd eine Idee?

Vielen Dank
Gruß Philipp

ba4_philipp
23.12.2006, 14:08
Hab mir nochmal einige Makefiles angesehen. Und hab es nun so gemacht:

BOOTSTRT = 0x1800
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref,--section-start=.text=$(BOOTSTRT)

Jetzt sieht das Hex File gut aus, aber warum ging es vorher nicht?

Gruß Philipp