hallo leute, ich bin dabei die fft von microchip aus zu probieren habe mir dazu das beispiel CE018 angesehen. http://embeddedcodesource.com/developer/microchip_technology_59/ce018__using_the_fast_fourier_transform_fft_for_frequency_detection wenn ich dieses beispiel einfach so überneme und nur den wert von FFT_BLOCK_LENGHT verkleinere sagt der compiler mir: build/default/production/main.o(.text+0x10): In function `.LSM1': : undefined reference to `_FFTComplexIP' make[2]: *** [dist/default/production/CE018.X.production.hex] Error 255 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 das selbe sagt der mir auch in meinem eigenen code. ich benutze den xc16-compiler, den dsPIC30F3010 und habe xc.h und dsp.h eingebunden vielen dank für eure hilfe
:
Verschoben durch Admin
voynich schrieb: > FFT_BLOCK_LENGHT verkleinere sagt der compiler mir: Das sagt nicht der COmpiler, sondern der Linker > > build/default/production/main.o(.text+0x10): In function `.LSM1': > : undefined reference to `_FFTComplexIP' Der Linker ist dafür zuständig, aus den diversen einzeln compilierten C-Dateien und diversen Bibliotheken, das endgültige Programm zusammenzubauen. undefined reference bedeutet: Das Objekt (die Funktion) wird zwar verwendet (bei einer Funktion aufgerufen), aber ich kann die IMplementierung in den Bausteinen, die du mir gegeben hast nicht finden. Also: schau nach, wo die Implementierung der Funktion _FFTComplexIP ist und warum sie nicht in den Build-Prozess mit einfliesst.
:
Bearbeitet durch User
danke für die antwort aber soweit habe ich auch schon gedacht die funktion welche ich verwende ist in dsp.h definiert daran kanns eig nicht liegen. in dsp.h steht: extern fractcomplex* FFTComplexIP (...); hab mal gelesen das man noch extra die bib libq-dsp-coff.a und/oder libdsp-coff.a einbinden muss. Wie geht das? Was hat es damit auf sich?
voynich schrieb: > die funktion welche ich verwende ist in dsp.h definiert daran kanns eig > nicht liegen. Die Funktion ist nicht in dsp.h 'definiert'. Die ist dort deklariert. D.h. in dsp.h steht .... > > in dsp.h steht: > extern fractcomplex* FFTComplexIP (...); ... dass es diese Funktion gibt. Irgendwo. Aber nur weil jemand behauptet, dass es etwas irgendwo gäbe, bedeutet das noch lange nicht, dass es diese Funktion dann auch tatsächlich gibt oder dass der Linker eigenmächtig die Festplatte danach absuchen würde. > hab mal gelesen das man noch extra die bib libq-dsp-coff.a und/oder > libdsp-coff.a einbinden muss. Wie geht das? Was hat es damit auf sich? Das klingt ja mal nicht so schlecht. Ich hab nämlich auch auf der Microchip Website ein wenig gelesen. Die 'Funktion' steckt in irgend einer Library (ich vermute mal die im linkerscript angegebene -ldsp), denn die eigentliche Funktionalität wird in Hardware erledigt. Die Funktion FFTComplexIP ist also nur ein Vermittler, der der Hardware die Daten zum Verwurschten vorwirft. Also: Mit welchen Librarys linkst du?
:
Bearbeitet durch User
juhu ...vielen dank habs jetz hinbekommen. also normalerweise nimmt die ide dann nur das standard linkerskript aber um die anderen bibliotheken mit einzu binden muss ich das skript vom projekt nemen welches dann auch wieder das standard skript einbindet? wie das genauer funktionier steht warscheinlich im "MPLAB XC16 ASSEMBLER LINKER AND UTILITIES Users Guide" von microchip oder?
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.