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