www.mikrocontroller.net

Forum: Compiler & IDEs avrdude hex file > 64k


Autor: Ludger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo *,

weiss einer warum der avrdude Intel HEX Files > 64k richtig lesen kann, 
obwohl in der funktion ihex2b die Adressen als unsigned int und damit 
doch 16 bittig deklariert sind?

AVRDUDE5.5

...
static int ihex2b(char * infile, FILE * inf,
             unsigned char * outbuf, int bufsize)
{
  char buffer [ MAX_LINE_LEN ];
  unsigned char * buf;
  unsigned int nextaddr, baseaddr, maxaddr;
  int i;
  int lineno;
  int len;
  struct ihexrec ihex;
  int rc;
...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil es nicht auf einer 8-/16-Bit-Maschine läuft, sondern auf einer
32-Bit-Maschine (oder gar 64-Bit-Maschine).

Autor: Ludger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heisst:

wenn ich unsigned int schreibe wird mit long oder unsigned long oder 
noch etwas anderem gerechnet ?

Autor: Thomas Holland (innot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ludger wrote:
> Das heisst:
>
> wenn ich unsigned int schreibe wird mit long oder unsigned long oder
> noch etwas anderem gerechnet ?

Per definition ist in C ein int mindestens 16 bit lang, aber auf i386 
und anderen 32 bit Prozessoren ist ein int üblicherweise 32 bit lang.

Die genauen Limits sind in der Headerdatei <limits.h> für die jeweilige 
Umgebung zu finden.

brgds

Thomas

Autor: Ludger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke !

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ludger wrote:
> weiss einer warum der avrdude Intel HEX Files > 64k richtig lesen kann,
> obwohl in der funktion ihex2b die Adressen als unsigned int und damit
> doch 16 bittig deklariert sind?


Das liegt am Aufbau des Hex-Files, jeder Record enthält nur eine 
16Bit-Adresse.
Das Hex-File enthält also die Daten in 64k-Blöcken.

Und diesen Blöcken wird ein Segment-Record vorangestellt der den Offset 
des Blocks enthält.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.