Hallo Leute, geht eigentlich um reine Optik. Beim Assemblieren zeigt der avrasm32.exe (v 2.1.7) eine Übersicht über die Belegung: ----snip---- ATmega32 memory use summary [bytes]: Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x0069a6 26002 1030 27032 9999999 0.3% [.dseg] 0x000060 0x0001e2 0 386 386 9999999 0.0% [.eseg] 0x000000 0x000080 0 128 128 9999999 0.0% Was mich daran stört, daß (obwohl alles funktioniert, sogar das Device richtig ist) die prozentuale Speicherbelegung falsch ist. Wie kann ich den Assembler dazu brinen statt 9999999 die richtigen Größen anzuzeigen (und damit die prozentuale Belegung auch) ? Wenn er schon das Device kennt, warum zeigt er nicht gleich die Größen an ? Gruß Peter
Peter S. wrote: > > Wie kann ich den Assembler dazu brinen statt 9999999 die richtigen > Größen anzuzeigen (und damit die prozentuale Belegung auch) ? Indem du beim Hersteller deines avrasm32 einen Bug reklamierst und um Behebung des Bugs bittest. > Wenn er schon das Device kennt, warum zeigt er nicht gleich die Größen > an ? Programmfehler. Gibts auch auf PC. Besonders beliebt waren/sind da die Setup Routinen, bei denen das Setup dann schon 178% deines Programmes installiert hat.
Ich vermute mal, da fehlt ein
1 | .include "m32def.inc" |
in Deinem Code. Und daher stimmen die Size-Angaben nicht. Oder der Assembler ist zu alt, ich benutze: AVRASM: AVR macro assembler 2.1.12 (build 87 Feb 28 2007 07:31:13) Copyright (C) 1995-2006 ATMEL Corporation Peter
Hi Das liegt an deinen Include-Dateien. Du musst die im Ordner AVRASSEMBLER2 benutzen. Alternativ funktioniert das Einfügen folgender Programmzeilen am Programmanfang: #pragma AVRPART MEMORY PROG_FLASH 131072 #pragma AVRPART MEMORY EEPROM 4096 #pragma AVRPART MEMORY INT_SRAM SIZE 4096 #pragma AVRPART MEMORY INT_SRAM START_ADDR $0100 Die Speichergrößen müssten entsprechend angepasst werden. MfG Spess
spess53 wrote: > Das liegt an deinen Include-Dateien. Du musst die im Ordner > AVRASSEMBLER2 benutzen. Wenn man das AVRStudio installiert hat, wird automatisch das richtige Includeverzeichnis benutzt. Peter
Hi Wenn der Pfad in der '.include'-Anweisung explizit angegeben wird, geht das schon. MfG Spess
Hi! >Wenn man das AVRStudio installiert hat, wird automatisch das richtige >Includeverzeichnis benutzt. Aber nur wenn aus AVRStudio übersetzt wird. Es geht auch anders. avrasm32.exe ist der alte Assembler, den musst du auch mit den alten .def's füttern. Der neue Assembler nennt sich avrasm2 und die zugehörigen .def's solltest du benutzen. Zu erkennen sind sie an etlichen #pragma-Einträgen. Siehe auch: Beitrag "Re: AVRASM2.exe ist für graue Haare geeignet" MFG Uwe
Uwe wrote: > Aber nur wenn aus AVRStudio übersetzt wird. Es geht auch anders. > avrasm32.exe ist der alte Assembler, den musst du auch mit den alten > .def's füttern. Der neue Assembler nennt sich avrasm2 und die > zugehörigen > .def's solltest du benutzen. Nö, geht auch außerhalb des AVRStudio. Der AVRASM2 findet die Includes auch auf der Kommandozeile. Es wird der Eintrag "AvrAssemblerPath" in der Registry angelegt. Peter
warum immer die Registry vollmüllen? In der hilfeanzeige von AVRASM2 wird gezeigt, wie man das Includeverzeichnis auf der Kommandozeile angibt. Hab ich allerdings auch erst etwas später gefunden. mfg
Vielen Dank Leute ! Die Pragmas waren es. Sie waren nicht bei mir drin, weil ich einen alten Compiler (+ alte Includes) verwende. An den bin ich aber gebunden, wegen der vorgegebenen FastAVR Entwicklungsumgebung (und der benutzt den avrasm32.exe). Leider funktionieren die neuen Includes nicht mit dem FastAVR, wegen der Hex-Codierung: FastAVR benötigt statt 0xXXX die $XXX Notation. Die neuen Includes haben die 0x Notation und dann gibt es "Unsupported device". Der scheint sich die Adressen aus dem Include zu holen. Da ich nicht alle Includes jedesmal patchen möchte habe ich die Pragmas als Inline-Assembler eingetragen und es funktioniert. Danke für den Tip. Gruß Peter
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.