- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: AVR-Studio mit WinAVR erzeugt plötzlich falsches HEX-Format

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi H.A.R.R.Y,

    warum änderst du nicht einfach die Startadresse des .text Segment, statt ein neues zu erfinden. Außerdem müßte für den mega168 der Bootloader bei Adresse 0x3800 beginnen.

    --section-start=.text=0x3800
    Oder guck dir mal an, wie das beim chip45 Bootloader gemacht ist:
    http://www.chip45.com/index.pl?page=chip45boot&lang=de

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

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Bei erzeugen des Hex machst du eigene HEX für jedes Modul (.text, .bootloader, .eerom)

    %_bootloader.hex: %.elf
    $(OBJCOPY) -j .bootloader --change-section-lma .bootloader=0x1c00 -O ihex $< $@

    Falls objcopy keine hex-Zahlen frisst, musst die 0x1c00 eben noch nach dezimal umrechnen.

    Die Startadressen für die Lokatierungen findest du im linker description file.
    Disclaimer: none. Sue me.

  3. #13
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Hi, ich wußte doch das hier professionelle Hilfe geboten wird

    Okay, Danke Euch, ich versuche mal beide Varianten.

    Bei der Option das .text-Segment komplett zu verschieben habe ich auch die komplette IRQ-Tabelle und jede Menge anderen Init-Code vom Compiler mit drin. VORTEIL: Abgesehen von der Startadresse ist alles "wie gewohnt". ABER: es gibt so ein paar "Härtefälle" in denen die absolute minimal-Init (IRQs aus, Stackpointer=RAMTOP und ein zwei Register für den Compiler) vollkommen ausreicht, der Rest steht mit für's Programm zur Verfügung. Dazu muß ich halt sehr genau wissen, was ich da treibe sonst hakt es später im compilierten Programm. Sehe ich das richtig? Über die Frage "guter Programmierstil" möchte ich hier jetzt bitte nicht diskutieren, es geht ums Verständnis.

    Die 0x3800: Laut Doku wird im FLASH mit Wortadressen gerechnet? Naja, das ist aber glaub ich die geringste Schwierigkeit. Ich seh ja im Simulator wohin der mir den Code packt.

    Danke auch für das Syntax-Beispiel, jetzt ist der Groschen gefallen ("... ah jetzt ja!")

    Eine Frage hät' ich noch: Wie heißt so ein Linker Description File typischwerweise und wo kann ich es finden (im WinAVR-Verzeichnisbaum, GROBE Angabe reicht mir schon)? Reicht ein ordinärer Texteditor (notepad, xemacs, ...) zum ansehen? Falls nicht, welches Tool benötige ich dazu?

    DANKE und Gruß
    H.A.R.R.Y.
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von H.A.R.R.Y.
    Eine Frage hät' ich noch: Wie heißt so ein Linker Description File typischwerweise und wo kann ich es finden (im WinAVR-Verzeichnisbaum, GROBE Angabe reicht mir schon)?
    https://www.roboternetz.de/wissen/in...erzeichnisbaum

    Abhängig von den Linker-Flags wird ein anderes ld-Skript genommen (*.x, *.xb) aber frag mich jetzt nicht, was die Endungen bedeuten und wann welche genommen wird.

    Vielleicht mal die specs befragen (welche genommen werden siehst du mit avr-gcc -v ...)

    AFAIK kannst du auch einfach ein ld-Skript dazulinken. Alles, was kein elf32-avr ist, wird als ld-Skript interpretiert.

    Ob die Lokatierungen stimmen siehst du im Mapfile.

    Da IHEX keine Sektion-Information trägt (bzw alles in eine große Sektion gestopft wird) muss die lma (load memory address) für jeden Code-Block (.eeprom, ...) angegeben werden.

    Zitat Zitat von H.A.R.R.Y.
    Reicht ein ordinärer Texteditor (notepad, xemacs, ...) zum ansehen? Falls nicht, welches Tool benötige ich dazu?
    Ein Skript ist ein Skript und damit plain text.

    (x)emacs ist kein Editor, sonder ein Betriebssystem. Bzw wäre ein Betriebbsystem, wenn ein guter Editor dabei wäre
    Disclaimer: none. Sue me.

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Feine Erklärung. Damit komme ich zurecht.
    Danke

    Gruß H.A.R.R.Y.
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests