- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Bootloader flashen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225

    Bootloader flashen

    Anzeige

    Powerstation Test
    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Du kannst beim Linken angeben, wo ein bestimmtes Segment hin soll. Schau mal in die libc Faq, da ist das beschrieben.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225
    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

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    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.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225
    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

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    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.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225
    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

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.09.2005
    Beiträge
    225
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests