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.
$(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...
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?
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.
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:
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.