mikrocontroller.net

Forum: Compiler & IDEs Probleme mit i2c Eeprom (Assembler einbinden)


Autor: Andreas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche schon seit längerem ein TWI- Eeprom an einem Mega 8 zu 
betreiben. Leider bisher ohne Erfolg.

In verschiedenen Forenbeiträgen wird immer wieder auf die i2c- Routinen 
von P. Fleury verwiesen. Hierzu habe ich auch ein relativ aktuelles 
Beispiel gefunden.
Ich schaffe es allerdings nicht, die Assemblerdatei fehlerfrei 
einzubinden.
Beim Kompilieren erhalte ich seitenweise Fehlermeldungen, die in der 
angehängten Datei unter Fehlermeldungen.txt aufgelistet sind.

Bei anderen Quelltexten, die ebenfalls meist auf den Fleury- Routinen 
basieren bekomme ich die selben Fehlermeldungen.

i2cmaster.S, test_i2cmaster.c und twimaster.c wurden unter source files 
eingebunden. i2cmaster.h befindet sich unter header files.

Ich verwende das AVR- Studio in der Version 4.14.

Was mache ich falsch???

Vielen Dank!
Andreas

Autor: SF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als erstes must du dich entscheiden, ob du eine Software I2C 
Implementation verwenden willst oder eine Hardware I2C Implementation. 
In deiner Zip-Datei verwendest du beide ...

i2cmaster.s ist die Software Implementation und
twimaster.c ist die Hardware Implementation.

Du wirst nur eine von den beiden gebrauchen können. Also niemals beide 
Files gleichzeitig in ein Projekt einbinden!

Aus dem Komentaren im Quellcode geht hervor, das der Code für einen 
AT90S8515 geschrieben worden ist und damit läßt sich das ganze (Die 
Softwarevariante) auch mit einem Winavr081205 ohne Fehlermeldungen 
compilieren. Aber auch für einen Mega8 klappt es. Und da auch beide 
Varianten.

Wichtig ist übrigens auch, das du angibst welche WinAvr-Version du 
verwendest.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Die Lösung mit der Hardware Implementation funktioniert.
Mit der Software- Implementation habe ich so meine Probleme. Hierbei 
werden ziemlich viele Fehlermeldungen angezeigt.

Durch Versuche mit anderen Assembler- Beispielen habe ich 
herausgefunden, dass es nicht am fehlerhaften Quelltext sondern am 
Win-AVR liegt.

Verweise ich (unter Optionen / Einstellungen?) auf des bei manchen 
Quellen beigefügte Makefile, wird ohne Probleme Code erzeugt.

Versuche ich es ohne das beigefügte Makefile, erscheinen massenhaft 
Fehlermeldungen.

Somit lässt sich der Fehler auf das Objekt zwischen Bürostuhl und 
Tastatur eingrenzen ;-)

Was muss ich beachten, wenn ich Assembler- Dateien ohne geklautes 
Makefile einbinden möchte?

Gruß
Andreas

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im makefile steht nicht ohne Grund:

># List Assembler source files here.
># Make them always end in a capital .S.

Hast du das mal beachtet?

Oliver

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was muss ich beachten, wenn ich Assembler- Dateien ohne geklautes
> Makefile einbinden möchte?
 - Die müssen unter "Assembler sources" eingetragen werden (wer hätte 
das gedacht ;) )
 - Die müssen für den GAS geschrieben sein!!
 Die (*.asm) Dateien, die das AVR-Studio so (d.h. ohne WinAVR) 
assemblieren kann, gehen nicht (nicht relokier-/linkbar, andere 
Makro-/Preprocessorsyntax etc.).
hth. Jörg

Autor: SF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was muss ich beachten, wenn ich Assembler- Dateien ohne geklautes
>Makefile einbinden möchte?

Eigentlich nichts besonderes. Außer wie oben schon genannt, das 
Assemblersourcen ein großgeschriebenes .S als Endung haben müssen und im 
GCC Assembler Dialekt (gas) geschrieben sein.

Das aktuelle AVR-Studio (V4.16Build618) erkennt zu meiner Überraschung 
.S Dateien automatisch und ruft dann auch den Compiler mit den richtigen 
Kommandozeilenparametern fürs Assemblieren auf.

Vorrausetzung ist allerdings, das auch die .S Dateien in AVR-Studio zu 
den Source Files Ordner hinzugefügt worden sind.

Hier mal die Ausgaben des AVR-Studios (Compiler: WinAVR20090313):
rm -rf test_i2cmaster.o i2cmaster.o  testos.elf dep/* testos.hex testos.eep testos.lss testos.map
Build succeeded with 0 Warnings...
avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test_i2cmaster.o -MF dep/test_i2cmaster.o.d  -c  ../test_i2cmaster.c
avr-gcc  -mmcu=atmega8 -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT i2cmaster.o -MF dep/i2cmaster.o.d  -x assembler-with-cpp -Wa,-gdwarf2 -c  ../i2cmaster.S
avr-gcc -mmcu=atmega8 -Wl,-Map=testos.map test_i2cmaster.o i2cmaster.o     -o testos.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  testos.elf testos.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex testos.elf testos.eep || exit 0
avr-objdump -h -S testos.elf > testos.lss

AVR Memory Usage
----------------
Device: atmega8

Program:     378 bytes (4.6% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die .S Datei habe ich unter Soruce Files eingebunden.
Allerdings habe ich eine ältere Version des AVR- Studios.

Ich werde mir einemal die neueste Version besorgen und mein Glück damit 
versuchen.

Das Problem ist auch, dass er Fehlermeldungen aus der stdint.h bringt 
(unknown opcode 'typedef').
Darüber hinaus meckert er "bad expression" in der i2cMaster.S.

Dass der Code fehlerhaft ist, glaube ich nicht, da er ja schon bei 
mehreren funktioniert hat.

Vielen Dank für die Bemühungen!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.