Guten Tag Gemeinde, der folgende Exkurs ist etwas länger aber ich möchte direkt alle Infos liefern: da mein neuer Router kein Impulswahlverfahren mehr versteht, ich meine W48 aber weiter nutzen möchte benötige ich einen Konverter Impulswahl zu Tonwahl. Dieser soll einen Nummernspeicher besitzen, damit ich die Apparate auch mal benutze wenn ich zu faul zum Wählen bin oder die Nummer gerade mal nicht auswendig kenne. In Assembler für die 8-Bit AVRs kenne ich mich ganz passabel aus, doch habe ich wegen der Sanierung meines Hauses gerade keine Zeit da mal 10, 20 oder mehr Stunden Zeit zu investieren um einen lauffähigen Code auszubrüten. (Ich kann telefonieren, es befindet sich noch ein "moderneres" Telefon im Haus) So habe ich das WWW nach Entsprechendem abgesucht aber nur einen passenden Code in C gefunden. Komme ich nun zur Sache: Mit C kann ich fast nichts anfangen und wegen o.a. habe ich auch keine Zeit mich da JETZT etwas einzuarbeiten. Allerdings gelang es mir nach langem Einreden auf: AVR-Studio 4.14 , AVR-GCC 1.0.0.9 das C-File zu compilieren und eine HEX-File zu generieren. Leider weigert sich das Atmel-Studio (mit einem Dragon als Programmieradapter) das File in den Attiny 25 zu laden. Fehlermeldung: "The contents of the HEX File does not fit in the selected device" Die Datei ist nur 1,6 KB groß und der Tiny zu 60% damit gefüllt. Das hat sicher etwas mit den vorletzten 5 Zeilen des HEX-Files zu tun. Wo kommen die her? Was kann ich machen? Von meinen Assemblerprojekten kenne ich das nicht. Wenn ich als Device im AVR-Studio größere (auch viel größere) Controller angebe, kommt immer wieder die gleiche Fehlermeldung. Um einen Denkanstoß wäre ich froh. Danke PS.: nein, ich kaufe keine alte analoge Telefonanlage um den gleichen Zweck zu erreichen und Kommentare zu dem Code bitte nicht an mich sonder an den Programmierer.
am ende vom make kommt doch die Ausgabe, wie groß das Programm ist. Was steht dort?
Hallo Peter, da steht: program 1420 Byte (69,3% full) sowie data 24 Bytes (18,8% full)
$(PROJECT).elf: telefonadapter.c $(COMPILE) -o $@ $< Hier compilierst und linkst Du ja in einem Schritt. Vielleicht kannst Du den Linker ja mal eine Map-File erstellen lassen. Da stehen dann auch evtl. Informationen über zusätzliche Segmente (static, stack etc.) und deren Mindestgrößen drin. Sollte aber auch im Nachhinein mit avr-objdump zu erkennen sein. Dann kann man versuchen, mit den passenden Linker-Flags die störenden Segmente klein zu kriegen. Vielleicht schaust Du mal, was AVR-Studio so macht, wenn der Tiny das Target ist...
Max D. schrieb: > Tiny 45 oder 85 nehmen... probiert, geht gleiches Verhalten Mega 8 bis 64 probiert, gleiches Verhalten
Fritz Katze schrieb: > $(PROJECT).elf: telefonadapter.c > $(COMPILE) -o $@ $< > > Hier compilierst und linkst Du ja in einem Schritt. > Vielleicht kannst Du den Linker ja mal eine Map-File erstellen lassen. > Da stehen dann auch evtl. Informationen über zusätzliche Segmente > (static, stack etc.) und deren Mindestgrößen drin. Sollte aber auch im > Nachhinein mit avr-objdump zu erkennen sein. > > Dann kann man versuchen, mit den passenden Linker-Flags die störenden > Segmente klein zu kriegen. > > Vielleicht schaust Du mal, was AVR-Studio so macht, wenn der Tiny das > Target ist... Hallo Fritz, was du da schreibst geht schon über mein "C-Wissen" hinaus. Kann ich leider nicht umsetzen.
Stefan K schrieb: > Hallo Peter, > da steht: program 1420 Byte (69,3% full) sowie > data 24 Bytes (18,8% full) merkwürdig, sollte also passen hast du es mal mit avrdude versucht zu flashen?
Deine toolchain klingt komisch. Hast du es mal mit WinAVR (lezte Version von 2010...) probiert? Oliver
Stefan K schrieb: > Leider weigert sich das Atmel-Studio (mit einem Dragon als > Programmieradapter) das File in den Attiny 25 zu laden. > Fehlermeldung: "The contents of the HEX File does not fit in the > selected device" Das ist offensichtlich falsch. Das Atmel-Studio spinnt. Vermutlich(?) kommt es nicht damit klar, daß die Fuse-Bytes mit im .HEX stehen. Verwende besser eine aktuelle Version von AVRdude, die direkt das .elf File lesen kann.
Oliver S. schrieb: > Deine toolchain klingt komisch. Hast du es mal mit WinAVR (lezte > Version > von 2010...) probiert? > > Oliver Hallo oliver, ich habe WinAVR-20100110 installiert um den C-Code zu compilieren. Vorher konnte ich im Atmel-Studio keinen C-Code compilieren. Ist AVR-GCC etwas anders? Wie gesagt ich habe praktisch keinen Plan von C und der Toolchain. Ich versuche gerade als Nichtschwimmer das andere Ufer zu erreichen, dessen bin ich mir bewußt :-) @ Peter: avrdude kenne ich nicht. Ist das ein anderes Programm zum Flashen? Ich habe mal gelernt: nie an zwei Baustellen gleichzeitig arbeiten und das wäre mit avrdude dann der Fall.
du kannst ja einfach mal die letzen 6 Zeilen aus dem hex löschen.
Axel S. schrieb: > Vermutlich(?) kommt es nicht damit klar, daß die Fuse-Bytes mit im .HEX > stehen. Verwende besser eine aktuelle Version von AVRdude, die direkt > das .elf File lesen kann. Hallo Axel, jetzt wo du es sagst dass die FuseBytes im HEX-File stehen sehe ich die auch dort. Ich habe sie aus dem C-Code mal entfernt (die kann ich schliesslich auch händisch setzen, begreife im Moment noch nicht, was die im Programmcode zu suchen haben) und nun bleiben nur noch die letzten beiden Zeilen im HEX-File unverständlich. Atmel-Studio meckert daher weiter ein zu großes File an.
Hallo, kannst mal das komplette Studio-Projekt hier anhängen? Einfach den kompletten Projekt-Ordner packen. Ich nutze hier noch Stdio 4.18 mit WinAVR-20100110 und einen Dragon hätte ich auch noch zum Test. Wobei mir Dein 4.14er Studio doch etwas alt vorkommt. Gruß aus Berlin Michael
Peter II schrieb: > du kannst ja einfach mal die letzen 6 Zeilen aus dem hex löschen. Ich habe die vorletzten 5 Zeilen (die letzte Zeile habe ich mal gelassen) gelöscht und jetzt passt das File in den Controller. Ob der Code funktioniert kann ich mangels passender Hardware zur Zeit noch nicht beurteilen. Was mir der Compiler/Linker oder wasweisich da hinten alles ausser Fuses noch ins HEX schreibt bleibt mir zunächst unklar. Vielen dank bis hierhin.
Stefan K schrieb: > Atmel-Studio Bitte aufpassen bei den Bezeichnungen Version bis 4.19: --> AVR Studio Version 5.xx bis 7.xx (heute): --> ATMEL Studio Sonst weiss man icht genau wovon du sprichst. Ich würde auch die AVR Studio Version 4.18 empfehlen .....
Hi >Ich habe die vorletzten 5 Zeilen (die letzte Zeile habe ich mal >gelassen) gelöscht und jetzt passt das File in den Controller. Wieso 5 Zeilen? Die Zeile :0C058000739478947ADEF3CFF894FFCFE8 gehört noch zum Programm. MfG Spess
Stefan K schrieb: > Axel S. schrieb: >> Vermutlich(?) kommt es nicht damit klar, daß die Fuse-Bytes mit im .HEX >> stehen. Verwende besser eine aktuelle Version von AVRdude, die direkt >> das .elf File lesen kann. > > jetzt wo du es sagst dass die FuseBytes im HEX-File stehen sehe ich die > auch dort. > Ich habe sie aus dem C-Code mal entfernt (die kann ich schliesslich auch > händisch setzen, begreife im Moment noch nicht, was die im Programmcode > zu suchen haben) Die stehen im Programmcode, weil das Programm auf die korrekt gesetzten Fuses angewiesen ist. Und wenn sie im Programm stehen, dann kann man nicht vergessen, sie händisch zu setzen. Im Prinzip ist das eine sehr gute Sache, die eine Fehlerquelle eliminiert. Man darf nur nicht eine ranzige alte Toolchain benutzen, die damit nicht klar kommt. Wie bereits gesagt: nimm avrdude zu flashen, damit geht das. Stefan K schrieb: > nun bleiben nur noch die letzten beiden Zeilen im > HEX-File unverständlich. Das dürften die Signatur-Bytes sein. Aus dem Makefile:
1 | %.hex: $(PROJECT).elf |
2 | avr-objcopy -j .text -j .data -j .fuse -j .signature -O ihex $< $@ |
Hier werden explizit die Sektionen .fuse und .signature in das .hex übernommen.
An alle, vielen Dank es ist für mich etwas Licht ins Dunkel gekommen. Viel Input, den es für mich noch zu ver- und erarbeiten gilt. Wenn ich statt des HEX-Files das erzeugt telefonadapter.elf als Brennanweisung nutze funktioniert alles bestens. Nochmals danke.
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.