Forum: Compiler & IDEs WinAVR 2010 / AVR-GCC und Atmega48PA


von Info (Gast)


Lesenswert?

Folgendes Problem mit einem ATmega48PA:
1
> make
2
3
-------- begin --------
4
avr-gcc (WinAVR 20100110) 4.3.3
5
Copyright (C) 2008 Free Software Foundation, Inc.
6
This is free software; see the source for copying conditions.  There is NO
7
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
9
10
Compiling C: main.c
11
avr-gcc -c -mmcu=atmega48pa -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-
12
adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o
13
unknown MCU 'atmega48pa' specified
14
Known MCU names:
15
...
16
   atmega48
17
   atmega48a
18
   atmega48p
19
 ...

Nehm' ich A oder P oder bekomme ich irgendwo beides?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

is wurscht

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Info schrieb:
> Nehm' ich A oder P

Besser nähmest du ohnehin mal einen aktuellen Compiler, A hin, P her.

Der 5 Jahre alte optimiert nicht nur (teils drastisch) schlechter als
ein aktueller, du verlierst auch eine Reihe anderer netter Dinge wie
beispielsweise __flash als separaten Adressraum.

von Info (Gast)


Lesenswert?

Hallo und danke.

Woher nehme ich denn einen aktuellen Compiler?

Hier gibt es keine eindeutigen Hinweise:
http://www.mikrocontroller.net/articles/WinAVR#WinAVR-2010_soll_die_letzte_Version_sein.3F_.5B7.5D

von Peter II (Gast)


Lesenswert?

Info schrieb:
> Woher nehme ich denn einen aktuellen Compiler?

einfach beim Hersteller?

http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORWINDOWS.aspx

von Info (Gast)


Lesenswert?

OK. Die Downloadlinks bekommt man per E-Mail.
Ich habe die Daten einfach in die WinAVR-Installation kopiert (die 
Header ins entsprechende Unterverz.). Scheint zu funktionieren.

Also ist WinAVR "tot".

Danke für die Auskunft!

von Joachim B. (jar)


Lesenswert?

Jörg W. schrieb:
> Der 5 Jahre alte optimiert nicht nur (teils drastisch) schlechter als
> ein aktueller, du verlierst auch eine Reihe anderer netter Dinge wie
> beispielsweise __flash als separaten Adressraum.

da ich immer noch gerne mit AVR Studio 4.18 SR3 arbeite war der 2010er 
doch die letzte Version WinAVR-20100110 die mit eingebunden wurde.

AVR Studio    4.18.692
Service Pack 3
Plugins:
AvrPluginavrgccplugin  1, 0, 0, 11

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> da ich immer noch gerne mit AVR Studio 4.18 SR3 arbeite war der 2010er
> doch die letzte Version WinAVR-20100110 die mit eingebunden wurde.

Und, wer hindert dich, da manuell eine andere Toolchain drunter zu
setzen?

von Joachim B. (jar)


Lesenswert?

Jörg W. schrieb:
> Und, wer hindert dich, da manuell eine andere Toolchain drunter zu
> setzen?

meine Kenntnisse?

jetzt weiss ich das es läuft, ich bin immer vorsichtig mit derlei 
Experimente, sie sind auch sehr zeitaufwändig aber heute evtl. nicht 
unmöglich.

Ich hätte ja die Hoffnung ein echtes Plattenbackup zu fahren die neue 
Toolchain zu installieren und zu probieren, aber 2 Risiken, erstens wenn 
mir die Zeit fehlt vollständig zu testen, bis ich Fehler bemerke oder 
was nicht oder schlechter läuft ist der Backupzeitpunkt in die 
Vergangenheit gerutscht, doof bei Restore und wer sagt mir denn das 
Restore wirklich funktioniert, aus meiner Industriezeit weiss ich das 
ein fehlerfreies Backup nicht unbedingt ein fehlerfreises Restore 
bedeutet. Da haben wir früher schon mal Pech gehabt.

von Peter II (Gast)


Lesenswert?

Joachim B. schrieb:
> Ich hätte ja die Hoffnung ein echtes Plattenbackup zu fahren die neue
> Toolchain zu installieren und zu probieren, aber 2 Risiken, erstens wenn
> mir die Zeit fehlt vollständig zu testen, bis ich Fehler bemerke oder
> was nicht oder schlechter läuft ist der Backupzeitpunkt in die
> Vergangenheit gerutscht, doof bei Restore und wer sagt mir denn das
> Restore wirklich funktioniert, aus meiner Industriezeit weiss ich das
> ein fehlerfreies Backup nicht unbedingt ein fehlerfreises Restore
> bedeutet. Da haben wir früher schon mal Pech gehabt.

Darum installiere ich mir die Toolchains in unterschiedliche 
Verzeichnisse und arbeite mit einen Makefile. Ich lege für jedes Projekt 
fest, welchen Toolchain ich verwende und kann jederzeit wird zurück wenn 
etwas merkwürdig ist.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> jetzt weiss ich das es läuft, ich bin immer vorsichtig mit derlei
> Experimente, sie sind auch sehr zeitaufwändig aber heute evtl. nicht
> unmöglich.

Die Toolchain ist einigermaßen isoliert in nur wenigen Verzeichnissen
(oder gar nur in einem) untergebracht.  Es genügt also völlig, dieses
erstmal „zur Seite umzubenennen“, danach dann eine neue Toolchain an
die gleiche Stelle zu schaufeln.  Dann ausprobieren, wenn's geht, ist
alles gut, wenn nicht, ist mit ein paar Handstrichen der vorherige
Zustand wieder hergestellt – ganz ohne (aufwändiges) Komplett-Backup.

von Joachim B. (jar)


Lesenswert?

Jörg W. schrieb:
> Es genügt also völlig, dieses
> erstmal „zur Seite umzubenennen“, danach dann eine neue Toolchain an
> die gleiche Stelle zu schaufeln.

hört sich gut an, nur hatte ich mir damals einen abgebrochen weil es bei 
der Installation auf die richtige Reihenfolge ankam und es nicht auf 
Anhieb auf 5 Rechner gleich laufen wollte.
Vielleicht passten die Versionsnummern auch nicht zueinander oder ich 
bin zu unerfahren, halte mich ja nur für einen Hobbyprogrammierer der 
nur so viel progammiert wie er für seine Anwendungen unbedingt braucht.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Man kann in AVR-Studio 4.18 auch eine neuere Toolchain einbinden, die in 
einem abweichenden Pfad installiert ist.

Der Trick ist ganz einfach:

AVR-Studio sucht die Toolchain immer in dem Pfad, welcher in dem 
Registry-Key
1
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR]

eingetragen ist.

Für den avr-gcc 4.7.2, den ich am liebsten verwende, habe ich mir eine 
.reg-Datei gemacht:
1
Windows Registry Editor Version 5.00
2
3
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR]
4
"DisplayVersion"="20100110"
5
"UninstallString"="C:\\WinAVR\\avr-gcc-4.7.2\\WinAVR-20100110-uninstall.exe"

Ausschlaggebend ist der Pfad, also C:\WinAVR\avr-gcc-4.7.2. Die 
EXE-Datei WinAVR-20100110-uninstall.exe muss überhaupt nicht in diesem 
Verzeichnis liegen, ist hier also nur technisches Beiwerk.

Möchte man wieder zurückschalten auf die avr-gcc.4.3.3-Version aus dem 
Jahre 2010, kann diese reg-Datei verwendet werden:
1
Windows Registry Editor Version 5.00
2
3
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR]
4
"DisplayVersion"="20100110"
5
"UninstallString"="C:\\WinAVR\\avr-gcc-4.3.3\\WinAVR-20100110-uninstall.exe"

(Der Pfad muss eventuell angepasst werden)

Ich sehe aber keinen Grund, wieder zurück auf den alten Compiler zu 
gehen. Der 4.7.2 tuts prima und erzeugt auch schmaleren Code.

Ich habe hier auch noch reg-Dateien für avr-gcc-4.8.1. Dieser hat aber 
die Macke, dass er bei ISRs eine überflüssige (weil falsche) Warnung 
rausgibt und mich daher nervt, und auch eine avr-gcc-4.9.2, die noch 
Beta ist.

Das Hin- und Herschalten mittels reg-Datei funktioniert in AVR-Studio 
4.18 tadellos. Einmal Doppelklick und fertig.

: Bearbeitet durch Moderator
von Kaj (Gast)


Lesenswert?

Es gab hier mal ein "How to": Gcc 4.8 in Winavr
Beitrag "Update von Winavr2010 auf gcc 4.8 Howto"

Gruesse

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Kaj schrieb:
> Es gab hier mal ein "How to": Gcc 4.8 in Winavr
> Beitrag "Update von Winavr2010 auf gcc 4.8 Howto"

Da wird aber auch die destruktive Methode gewählt, indem die Dateien im 
2010-Verzeichnis überschrieben werden. Ohne Backup kein Weg zurück. 
(Auch wenn ich dies persönlich für nicht erforderlich halte).

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Der Trick ist ganz einfach:
>
> AVR-Studio sucht die Toolchain immer in dem Pfad, welcher in dem
> Registry-Key

vielen Dank das hilft mir sehr bei meinem Projekt Antennenmessgerät 
unter verschiedenen Rechnern.

Kennst du dich etwas mit dem reg Editor aus?

Meine Tools für Messgerät und die Reg laufen zwar, aber ich habe noch 
Probleme die Com im Schlüssel zu verändern.

Ein REG Key im Texteditor wird normal gezeigt, aber im HEX Editor sehe 
ich statt ASCII immer 16-bit Werte, ein ASCII Zeichen und 00 aber nicht 
für die ersten beiden Zeichen.

Das macht es nicht leichter die REG Datei zu parsen um die Com, Baud, 
Stoppbits anzupassen.

warum zur Hölle exportiert Regedit 16-bittig und will es genauso wieder 
importieren?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Kennst du dich etwas mit dem reg Editor aus?

Sorry, leider nicht, kann Dir hier nicht helfen.

von Walter T. (nicolas)


Lesenswert?

Frank M. schrieb:
> Für den avr-gcc 4.7.2, den ich am liebsten verwende

Hast Du zufällig parat, in welcher Installations-Version der drin ist?

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Sorry, leider nicht, kann Dir hier nicht helfen.

glaub ich dir nicht, aber egal.

Es ist ja nun nicht so schwer die gesicherte REG Datei zu öffnen und ab 
dem 2-ten Zeichen alle 00 rauszuwerfen und nur den ASCI Text in ein char 
Array zu speichern, dort zu parsen nach Schlüsselwörter die benötigten 
Inhalte zu ändern und dann wieder 16-bittig mit 00 zurückzuschreiben, 
oder jede 00 zu ignorieren.

Es gibt wie immer x Wege nach RAM äh Rom.

Ich dachte nur weil du eben vom REG Editor schriebst du kennst das 
Verhalten und warum.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Walter T. schrieb:
> Frank M. schrieb:
>> Für den avr-gcc 4.7.2, den ich am liebsten verwende
>
> Hast Du zufällig parat, in welcher Installations-Version der drin ist?

Ich habe ihn von hier:

http://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/

Am besten installierst Du ihn in einem Verzeichnis ohne Leerzeichen, 
z.B. C:\WinAVR.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Frank M. schrieb:
>> Sorry, leider nicht, kann Dir hier nicht helfen.
>
> glaub ich dir nicht, aber egal.

Wie bitte?

Ich weiß gerade mal, wie man so einen Key in einer REG-Datei speichert. 
Da ich das 16-Bit-Problem noch nicht hatte, habe ich mich bisher auch 
nicht näher damit beschäftigt.

> Ich dachte nur weil du eben vom REG Editor schriebst du kennst das
> Verhalten und warum.

Sorry, nein.

: Bearbeitet durch Moderator
von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Wie bitte?
>
> Ich weiß gerade mal, wie man so einen Key in einer REG-Datei speichert.
> Da ich das 16-Bit-Problem noch nicht hatte, habe ich mich bisher auch
> nicht näher damit beschäftigt.

na das ist doch eine völlig andere Aussage als

Frank M. schrieb:
> Sorry, leider nicht, kann Dir hier nicht helfen.

ich weiss ja wie es geht, exportiere den gewünschten KEY mit cmd, bzw. 
"system command regedit /e" oder /s blablub in Datei
Öffne diese, editiere und sichere

Danach gehts mit syscommand regedit import wieder rein.

Joachim B. schrieb:
> Es ist ja nun nicht so schwer die gesicherte REG Datei zu öffnen und ab
> dem 2-ten Zeichen alle 00 rauszuwerfen und nur den ASCI Text in ein char
> Array zu speichern, dort zu parsen nach Schlüsselwörter die benötigten
> Inhalte zu ändern und dann wieder 16-bittig mit 00 zurückzuschreiben,
> oder jede 00 zu ignorieren.

Ich bin sicher so wie du programmieren kannst könntest du das auch und 
eleganter als ich.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Ich bin sicher so wie du programmieren kannst könntest du das auch und
> eleganter als ich.

Hm, dafür würde ich ein C-Programm schreiben:
1
#include <stdio.h>
2
3
int main ()
4
{
5
    int ch;
6
7
    while ((ch = getchar()) != EOF)
8
    {
9
        if (ch)
10
        {
11
            putchar (ch);
12
        }
13
    }
14
    return 0;
15
}

Übersetzen und dann: programmname <original.reg >neu.reg

Aber das heisst trotzdem nicht, dass ich ein Experte des 
Registry-Editors wäre ;-)

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Hm, dafür würde ich ein C-Programm schreiben:

so ähnlich habe ich es ja schon, bzw bin gerade dabei das drum rum zu 
schreiben,

schauen ob der KEY AMA_KWS in der REG ist, exportieren wenn nicht KEY 
erzeugen.
Com feststellen, alle durchtackern die open gehen, die OPEN mit 
Teststring beschicken, Antwort einlesen, wenn OK KWS_AMA = TRUE, Com 
angepasst in die REG eintragen.

Erst danach startet mein TV Kanal Messprogramm über alle belegten Kanäle 
analog und digital zur Schieflageermittlung.

Doof halt nur das ich alle Änderungen in der Kanalbelegung händisch in 
eine Tabelle eintragen muss aus der ich lese, gerne hätte ich den Import 
der Tabelle aus der KD Helpdeskwebseite.

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
Noch kein Account? Hier anmelden.