avrasm32.exe zeigt falsche ROM/RAM/EEPROM Belegung

OP #736478
Lesenswert?

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
#736487
Lesenswert?

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.
Gast #736517
Lesenswert?

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
Gast #736787
Lesenswert?

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
#736853
Lesenswert?

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
OP #737857
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren