Codevision- konverze syntaxe souboru .S
Jaroslav Buchta
jaroslav.buchta na hascomp.cz
Pondělí Únor 13 09:50:26 CET 2012
Asi blba otazka ale proc nepouzit AVRGCC pro cely projekt???
Tech spcifik interoperability mezi C a ASM bude IMHO vic (konvence
predavani parametru v registrech atp.)
Dne 13.2.2012 9:45, Milan napsal(a):
>
> Dobrý den. Našel jsem na internetu příklad projektu pro spektrální
> analyzátor.
> Projekt je psaný v AVRGCC a používá unitu FFFT.h která má v
> externím souboru
> nadefinované rutiny - funkce v asembleru. Externí soubor má název FFFT.S
>
> Používám Codevision AVR a nedaří se mě (jsem začátečník) přepsat
> syntax zápisu tak aby CVAVR pracoval
> s tím externím souborem FFFT.S
>
> Chci poprosit někoho zkušenějšího zda by byl ochoten mě pomoci a
> nakopnout správným směrem
> jak vyřešit přidání asemblerovských procedur do CodevisionAvr.
> Můj kopmpletní projekt a původní zdrojáky bych poslal emailem.
> Nechci po nikom aby to za mě přepisoval nebo na tom pracoval ale pouze
> poradit
> jakým zpusobem to uzpůsobit pro codevision.
>
> Pro tento test lze použít eval.verzi CvAvr
> ke stažení zde
> http://www.hpinfotech.ro/cvavre.zip
>
>
> Zatím pro názornost přidám výsek z kodu (jedna procedura)
>
> překladač hlásí
> Linker error: C:\cvavr2\examples\Analyzer\fft.h(20): function
> 'fft_input' declared, but never defined
>
> takže podle mě "nevidí" definici této funkce v externím souboru.
>
> //======================================================
>
> Soubor FFFT.h
>
> #ifndef FFFT_ASM /* for c modules */
>
> typedef struct _tag_complex_t {
> int r;
> int i;
> } complex_t;
>
> #ifndef INPUT_NOUSE
> #ifdef INPUT_IQ
> void fft_input (const complex_t *, complex_t *);
> #else
> void fft_input (const int *, complex_t *);
> #endif
> #endif
>
> //======================================================
>
> Soubor FFT.s
>
> #ifndef INPUT_NOUSE
> .global fft_input
> .func fft_input
> fft_input:
> pushw T2H,T2L
> pushw AH,AL
> pushw YH,YL
>
> movw XL, EL ;X = array_src;
> movw YL, DL ;Y = array_bfly;
> clr EH ;Zero
> ldiw ZH,ZL, tbl_window ;Z = &tbl_window[0];
> ldiw AH,AL, FFT_N ;A = FFT_N;
> 1: lpmw BH,BL, Z+ ;B = *Z++; (window)
> ldw CH,CL, X+ ;C = *X++; (I-axis)
> FMULS16 DH,DL,T2H,T2L, BH,BL, CH,CL ;D = B * C;
> stw Y+, DH,DL ;*Y++ = D;
> #ifdef INPUT_IQ
> ldw CH,CL, X+ ;C = *X++; (Q-axis)
> FMULS16 DH,DL,T2H,T2L, BH,BL, CH,CL ;D = B * C;
> #endif
> stw Y+, DH,DL ;*Y++ = D;
> subiw AH,AL, 1 ;while(--A)
> brne 1b ;/
>
> popw YH,YL
> popw AH,AL
> popw T2H,T2L
> clr r1
> ret
> .endfunc
> #endif /* INPUT_NOUSE */
>
>
>
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list