Moin!
Nachdem mir mein Flash beim 2313 so langsam ausgegangen ist (ich quäle
den schon ganz schön) habe ich mit Glück bei Pollin tiny4313 beschaffen
können.
Ich wollt das Programm nun für den 4313 kompilieren (sind ja 100%
kompatibel bis auf die unterschiedliche Speichergröße)
Leider kennt der AVR-GCC den tiny4313 nicht. Kann ich einfach für 2313
kompilieren und es funktioniert trotzdem (auch mit über 2KB)?
Oder muss ich die Headerdateien vom 2313 kopieren und anpassen (oder
gibt es die fertig)?
LG :)
Leider nicht. Das Problem ist auch bekannt.
Für avrdude habe ich den entsprechenden Abschnitt in der avrdude.conf
schon eingefügt. (gibts im Netz verteilt, unter anderem bei nongnu)
Laut diesem Artikel kann der avr-gcc das auch (in einigen Versionen) Ich
habe jetzt die 4.7 (vom Nov 2011) installiert - damit gehts nicht.
Welche Version nutzt du denn? Ich arbeite unter Linux (Suse 11.4)
Ist das den eine Frage des gcc oder der avr-libc, ich denke erstes,
oder?
LG :)
J. W. schrieb:> Laut diesem Artikel kann der avr-gcc das auch (in einigen Versionen) Ich> habe jetzt die 4.7 (vom Nov 2011) installiert - damit gehts nicht.
*Was* geht denn damit nicht?
Handbücher und XML-Beschreibung für ATtiny4313 sind falsch: sie listen
SP als 8-Bit Register, was nicht korrekt ist. Das Problem wurde erst
12/2011 erkannt und behoben:
http://gcc.gnu.org/viewcvs?view=revision&revision=182053
Johann L. schrieb:> *Was* geht denn damit nicht?
Er (er)kennt den MCU-Typ nicht und macht dem entsprechend gar nix:
> Fatal error: unknown MCU: attiny4313
Es gibt auch keinen anderen MCU-Typ dafür.
LG :)
PS: Habe avr-gcc-47-20111105-4.7_20111105-6.1.x86_64.rpm installiert.
Ich hab avr-gcc aus den (K)ubuntu 11.10 paketen mit eclipse in Benutzug
und der kompiliert mein Projekt (welches den flash zu 51% füllt (dewegen
auch der 4313 statt 2313) ganz normal...
Update: Ich habe die entsprechende Header-Datei bei mir gefunden.
Wie bekomme ich ihn dazu, die auch zu nutzen?
Habe auch schon -mmcu=tn4313 probiert
Liegt in /opt/cross/avr/avr/include/avr und heisst iotn4313.h
Direkter Include anstelle von <avr/io.h> funktioniert nicht.
LG :)
Aha.
Der Compiler kann also attiny4313, aber der Assembler (avr-as) hingegen
nicht!
Du brauchst eine weniger angestaubte Version der binutils, etwa 2.21.
Ein segmentation fault in 2.22 (PR12161) ist seit Anfang Januar behoben,
aber dieser Fix ist m.W. noch nicht releast.
http://sourceware.org/bugzilla/show_bug.cgi?id=12161#c17
Ich habe binutils 2.21 und avr-binutils 2.19 installiert. Kreige leider
auch keine neueren Versionen übers Repo.
Woraus schliesst du, dass es nicht am Compiler liegt?
Ich fange so langsam an zu verzweifeln... ;)
LG :)
Daran:
> Assembler messages:> Fatal error: unknown MCU: attiny4313
Und weil der Assembler gestartet wird, was bei einem Compilerfehler
nicht der Fall ist, siehe
> opt/cross/avr/lib64/gcc/avr/4.7.0/../../../../avr/bin/as -v -mmcu=atti
ny4313 -o /tmp/ccYThXke.o /tmp/ccfMW9TH.s
Mit -save-temps bekommst du auch das Assembler-File vom Compiler:
vitrinencontroller.s
binutils 2.21 nutzen dir nix. Es sei denn, du willst ein Programm für
deinen Rechner übersetzen...
Es müssen schon die avr-binutils sein.
Johann L. schrieb:> binutils 2.21 nutzen dir nix. Es sei denn, du willst ein Programm für> deinen Rechner übersetzen...>> Es müssen schon die avr-binutils sein.
Hast du einen Tipp für mich, wo ich die entweder als *.rpm zur
Installation finde, oder aber wo ich den src-Code beziehen kann und wie
ich dann installieren muss?
Zumindest weiß ich jetzt schonmal, wo das Problem liegt, klasse!
LG :)
Die configure-Optionen für binutils sind leider nicht angegeben, aber
von dem was oben steht sollte
> --target=avr --prefix=/opt/cross/avr
passen. Also eigenes Build-Verzeichnis machen und von dort aus
> <PATH_TO_BINUTILS>/configure --target=avr --prefix=/opt/cross/avr> make> make install (als Ruth)http://ftp.gnu.org/gnu/binutils/
Johann L. schrieb:> Die configure-Optionen für binutils sind leider nicht angegeben, aber> von dem was oben steht sollte>>> --target=avr --prefix=/opt/cross/avr>> passen.
Und evtl. noch --disable-nls wenn man keine Fehlermeldungen in Khmer,
Sanskrit oder Kisuaheli braucht.
J. W. schrieb:> Im Repo findet sich seit dem 7.2. die Version 2.22 der avr-binutils als> rpm:
Das habe ich als Reaktion auf diesen Thread dorthin gepackt. :)
Ich bin allerdings noch nicht groß zum Testen gekommen und bin deshalb
an Feedback interessiert...
Hallo,
so ich bin jetzt schon so weit, dass die Datei wohl vom Linker gebraucht
wird und ich weiß auch, wo sie hingehört (und dort fehlt sie
tatsächlich, obwohl angeblich Teil der avr-libc).
Erst habe ich hier eine gefunden:
http://chomikuj.pl/plama6/Nauka/Kursy+Elektronika/winavr/avr/lib/avr25/crttn4313,1072117332.o
Da mein PC kein Polnisch spricht, oder wohl eher, da für Win hat das
nicht funktioniert.
Dann habe ich mir das avr-libc-RPM von Fedora installiert. Ist leider in
einem anderen Pfad gelandet. Odrt habe ich die crttn4313.o herauskopiert
und das Paket wieder deinstalliert. Anschliessend habe ich die avr-libc
aus dem Suse-Repo wieder installiert und die Kopie der crttn4313.o aus
dem Fedora-Paket im entsprechenden Verzeichnis
(/opt/cross/avr/avr/lib/avr25) eingefügt.
Neuer Versuch: Es hat funktioniert!!
(Obs auch rennt, wird noch getestet)
Ich danke vielmals für eure Hilfe und werde mich mal an die Jungs von
Suse wenden: die sollen ihre avr-libc komplettieren :p
LG :)
J. W. schrieb:> so ich bin jetzt schon so weit, dass die Datei wohl vom Linker gebraucht> wird und ich weiß auch, wo sie hingehört (und dort fehlt sie> tatsächlich, obwohl angeblich Teil der avr-libc).
Ja, die crt*-Dateien enthalten Startup-Code und werden automatisch
dazugelinkt.
> Ich danke vielmals für eure Hilfe und werde mich mal an die Jungs von> Suse wenden: die sollen ihre avr-libc komplettieren :p
Ich kümmere mich am Montag darum...
R. Max schrieb:> Ich kümmere mich am Montag darum...
Oh, schön, dann brauch ich ja gar keine Mailadresse mehr zu suchen usw.
;)
Der Controller rennt im übrigen, also alles rund um erfolgreich.
LG :)
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.