-
Data: 2017-12-15 11:52:28
Temat: Re: Biblioteka CMSIS DSP Keil ARM
Od: Marcin <m...@o...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> Nie podałeś z jakimi flagami kompilujesz program, czy włączyłeś
> optymalizację, czy każesz kompilatorowi usunąć nieużywane funkcje i dane
> z programu. Na początek dodaj flagi -Os -ffunction-sections
> -fdata-sections do kompilacji oraz -Wl,--gc-sections do wywołania linkera.
> Sprawdź też jak wygląda rozmiar po kompilacji na Cortexa M4. Jeśli wtedy
> rozmiar mocno spadnie, to winna może być software'owa emulacja floatów.
> Komercyjne pakiety (także te korzystające z gcc) mają często biblioteki
> ręcznie dłubane w assemblerze i stąd różnica w prędkości/wielkości.
Czesc,
optymalizacja kompilatora dokladnie jak proponujesz: -0s, probowalem tez -O3 ale
niewiele sie zmienia.
linker tez powinien usuwac zbedny kod (-ffunction-sections -fdata-sections ), newlib
nano ( nie powinno miec znaczenia)
Przyklad ktory testuej uzywa staloprzecinkowych Q15, wiec floatow nie powinno nigdzie
byc.
Kod zrodlowy CMSIS DSP jest dostepny i biblioteki dla Keila i GCC kompilowalem sam. Z
tego co wypatrzylem sa uzywane duze tablice wspolczynnikow ( dla roznych dlugosci FFT
rozne tablice) w stylu:
arm_rfft_init_q15(){
switch (S->fftLenReal)
{
case 8192U:
S->twidCoefRModifier = 1U;
S->pCfft = &arm_cfft_sR_q15_len4096;
break;
case 4096U:
S->twidCoefRModifier = 2U;
S->pCfft = &arm_cfft_sR_q15_len2048;
break;
case 2048U:
S->twidCoefRModifier = 4U;
S->pCfft = &arm_cfft_sR_q15_len1024;
break;
case 1024U:
S->twidCoefRModifier = 8U;
S->pCfft = &arm_cfft_sR_q15_len512;
break;
case 256U:
S->twidCoefRModifier = 32U;
S->pCfft = &arm_cfft_sR_q15_len128;
break;
case 128U:
S->twidCoefRModifier = 64U;
S->pCfft = &arm_cfft_sR_q15_len64;
break;
case 64U:
S->twidCoefRModifier = 128U;
S->pCfft = &arm_cfft_sR_q15_len32;
break;
case 32U:
S->twidCoefRModifier = 256U;
S->pCfft = &arm_cfft_sR_q15_len16;
break;
.... }
moje podejrzenie jest, ze Keil widzac ze wywoluje ze stala dlugoscia 128, potrafi
"wyrzucic" niepotrzebne struktury const typu arm_cfft_sR_q15_len1024 ( ktore sa np.
3000 x uint16_t)
Bede musial sie dokladniej przygladnac .map i .lst z GCC, co faktacznie jest w
zlinkowanym pliku .elf
I kolejne pytanie - _wydawalo_ mi sie, ze biblioteki skompilowane roznymi
kompilatorami powinny byc kmpatybilne ( ARM calling convention) ale biblioteki z
Keila nie linkuja sie w GCC :(
Marcin
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
- Który symulator AVR jest ,,prawilny"?
- Disk on Module, czym to odczytać?
- Pasta ochronna? Lutownicza?
- zagadka pneumatyczna
- Klip testowy, jak sie to używa
- Jak sie smazy elektronike z odleglosci kilkuset metrów?
- William Shockley, co-inventor of the transistor
Najnowsze wątki
- 2025-12-05 Czyją własnością w RP3 byłby "ruski dron znaleziony na polu"? [Chłop dronowi nie przepuści (Mołdawia)]
- 2025-12-04 Tradycyjnie pod koniec roku
- 2025-12-04 która kurwa pierwsza
- 2025-12-04 Kol. sukces po polsku: firma Szumisie sp. z o.o.
- 2025-12-04 Kol. sukces po polsku: firma Szumisie sp. z o.o.
- 2025-12-04 Re: Leżakujące SSD gubią po roku dane
- 2025-12-04 male zaginiecie
- 2025-12-04 Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- 2025-12-04 Gównoburza bo "odsiedział" nieprawomocny wyrok w areszcie i zwiał z Polski po zwolnieniu z aresztu
- 2025-12-04 Warszawa => Project Manager (AI and innovation) <=
- 2025-12-04 Warszawa => Project Manager (AI and innovation) <=
- 2025-12-04 wetomat.pl
- 2025-12-04 Re: Mein Kampf
- 2025-12-04 Rosja "ludobójczych terrorystów" w Senacie USA [deportacje dzieci ludobójczym sponsorowaniem terroryzmu]
- 2025-12-03 RS-485 ale automatycznie dwukierunkowy




Ile kosztują tanie mieszkania w polskich metropoliach?