Linking Problem in AVR-Studio



  • Hallo

    Folgende Fehlermeldung:
    gcc plug-in: Error: Object file not found on expected location C:\Users\...\default\MP3.elf

    Ausgelöst durch die Datei cfmm.c . Diese stammt wie der Rest der Dateien hierher (AVR-Ordner): http://elm-chan.org/fsw/ff/ffsample.zip

    Ich habe als neue Mainschleife, das Beispiel unten von dieser Seite genommen und nur etwas modifiziert.

    Sieht jemand von euch, was mit der Einbindung dieser einzelnen Datei nicht stimmt? Wenn ich sie nämlich aus dem Projekt entferne, dann klappts 😉

    Danke euch



  • Aus deinen Angaben werde ich nicht richtig schlau. Der Link zu der zip Datei wird auf pir.org weitergeleited so das ich mir das nicht ankucken kann. Schreib mal mehr genau was du machen willst .



  • Mmh stimmt. Also hier auf der Seite unter Sample-projects ganz unten.

    Ich will mit einem ATmega FAT32-Daten von einer SD-Karte lesen und der Herr Chan hat da eine ganz wunderbar dokumentierte Umgebung geschrieben.



  • PlattitüdenAbonennt schrieb:

    ...und der Herr Chan hat da eine ganz wunderbar dokumentierte Umgebung geschrieben.

    in der tat, ist 'ne spitzenleistung. das FS verwende ich auch (aber nicht auf'nem AVR).
    🙂



  • Schön, dass du das auch so siehst, aber ich vermisse etwas den Tipp von dir, der mich bei meinem Problem weiterbringt.



  • mosta, hast du dir es jetzt mal ansehen können?



  • PlattitüdenAbonennt schrieb:

    Schön, dass du das auch so siehst, aber ich vermisse etwas den Tipp von dir, der mich bei meinem Problem weiterbringt.

    ich kann dir leider keinen tip geben, weil ich weder GCC noch AVRs benutze (ist jedenfalls lange her). ausser soviel: wenn dein problem gelöst ist, dann dürften nicht mehr viele kommen. ChaNs FatFS hat keine schlimmen bugs. auch der SD-karten treiber ist out-of-the-box sehr brauchbar. aber frag doch mal da: http://www.mikrocontroller.net/forum/mikrocontroller-elektronik
    🙂



  • Ok, Problem gefunden. Ganz trivial. Es gab neben der cfmm.c noch eine mmc.c

    Jetzt hab ich mir noch das Petitfs von chan geladen, was für noch kleiner uC geeignet ist.

    Bei Compilieren nun diese Fehler:

    ../usi.S:19: Error: constant value required
    ../usi.S:19: Error: number must be positive and less than 64
    ../usi.S:45: Error: constant value required
    ../usi.S:45: Error: number must be positive and less than 64
    ../usi.S:65: Error: constant value required
    ../usi.S:65: Error: number must be positive and less than 64

    Die Fehlermarker sitzen auf den Zeilen mit _SFR_IO_ADDR(USICR) und _SFR_IO_ADDR(USIDR) . Hat jemand nen Tipp?

    Code dazu:

    ;---------------------------------------------------------------------------;
    ; USI control functions
    ;---------------------------------------------------------------------------;
    
    .nolist
    #include <avr/io.h>	// Include device specific definitions.
    .list
    
    ;---------------------------------------------------------------------------;
    ; Initialize USI
    ;
    ; void init_spi (void);
    
    .global init_spi
    .func init_spi
    init_spi:
    	ldi	r24, 0b00011000
    	out	_SFR_IO_ADDR(USICR), r24
    	ret
    .endfunc
    
    ;---------------------------------------------------------------------------;
    ; Receive a byte (27 clks)
    ;
    ; BYTE rcv_spi (void);
    
    .global rcv_spi
    .func rcv_spi
    rcv_spi:
    	ldi	r24, 0xFF
    	; Link next function
    .endfunc
    
    ;---------------------------------------------------------------------------;
    ; Transmit a byte (26 clks)
    ;
    ; void xmit_spi (BYTE);
    
    .global xmit_spi
    .func xmit_spi
    xmit_spi:
    	out	_SFR_IO_ADDR(USIDR), r24
    
    	ldi	r24, 0b000100		; PB2(SCK)
    	out	_SFR_IO_ADDR(PINB), r24	; Toggle SCK 16 times
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	out	_SFR_IO_ADDR(PINB), r24
    	nop
    	in	r24, _SFR_IO_ADDR(USIDR)
    	ret
    .endfunc
    


  • Mach doch mal .nolist und .list weg und schau, was dann passiert.



  • Leider alles so wie gehabt. 😞


Anmelden zum Antworten