Rozmiar kodu AVR-GCC kontra 51-KEIL

Jul 10, 2003 6 Replies

Witam wszystkich. Mam pytanie do praktyków tworzących oprogramowanie na AVR'a (GCC) i '51 (KEIL). Jak sie zgrubsza przekłada rozmiar kodu wynikowego programu napisanego w C na AVR'a w porownaniu do '51?



Na przykład mam program w C, który kompiluje się na 96kB (bankowany) w '51, jaki będzie rozmiar kodu wynikowego tego samego programu skompilowanego na AVR'a?



Mam obawy przed zastosowaniem AVR'a w projekcie -- czy sie zmieszczę w ATMEGA128.



Na '51 piszę w Keil'u, na AVR'a chciałbym użyć GCC


Ja mam inne zdanie na ten temat przerobilem program napisany na 51 na AVR z zastosowaniem WINAVR, na 51 w keilu wynikowy byl wielko¶ci ok 15k a wynikowy zrobiony dla AVR jest ju¿ ponad 20k. Byæ mo¿e ¿le ustawiam jak±¶ optymalizacje itp (ale i tak to niewiele daje), ale (chyba) g³ówny powód to mo¿e jeszcze kiepskie biblioteko do PRINTF z zastosowanie obliczeñ zmiennoprzecinkowych

Adam Dybkowski napisal(a):

Niekoniecznie. Zauwaz, ze 8051 wiele instrukcji mialo dlugosc 1 bajt, a tu najkrotsze instrukcje maja dlugosc 2 bajtow. Najdluzsze pod 51 to

3 bajty, a pod AVR 4 bajty. Tak czy siak ja zrobilem pewne porownanie, ale tylko pod Codevision i w dodatku program jest, niestety, bardzo krotki. Rzeczony program napisany pod Keil mial 932 bajty, a po przerobieniu na Codevision 1400 bajtow. Program wykorzystywal I2C i EEPROM. Aha,do obslugi I2C wykorzystalem gotowce z Codevision. Pod 51 mialem wlasne procedury.

U¿ytkownik "Marcin E. Hamerla" snipped-for-privacy@Xpro.Xonet.Xpl.remove_X>

napisa³ w wiadomo¶ci news: snipped-for-privacy@4ax.com

Moje do¶wiadczenie z AVR jest niewielkie. Ot.. parê kawa³ków kodu na 2313. Ale _subiektywnie_ stwierdzam, ¿e w 2313 znacznie czê¶ciej ogl±da³em siê na znikaj±cy obszar pamiêci programu. (CV i gcc)

Marek Dzwonnik napisal(a):

Jeszcze dopisze, bo poprzednio zapomnialem. W porownaniu do kodu generowanego przez Keila kod z Codevision nie wyglada zbyt ciekawie. Znaczy, kod generowany Keila jest elegancki i mozna z latwoscia przesledzic bieg programu. Nawet jesli jakas instrukcja jest zbedna, to wiadomo dlaczego ona tam jest. W przypadku CV jest inaczej - logika dzialania kompilatora jest taka, ze program sledzic jest trudno, a zbednych instrukcji jest sporo. No i dziwne wywolania procedur o ramptem dwoch liniach kodu....

Reasumujac powiedzialym, ze jesli nawet kod dla AVR _moglby_ byc taki sam czy krotszy, to jakosc narzedzi moze byc znacznie nizsza niz dopracowany kompilator Keila i dlatego kod wynikowy bedzie dluzszy.

U¿ytkownik "Pawel Sklarow"

napisa³ w wiadomo¶ci news:bejg4u$glb$ snipped-for-privacy@atlantis.news.tpi.pl...

Witam Robi³em do¶æ du¿o w Keil'51 Muszê przyznaæ, ¿e jest bardzo dobry. Kiedy¶ co¶ próbowa³em na kompilatorze opartym na gcc; jaki¶ sdcc czy co¶ takiego. Optymalizacja nie by³a tak dobra jak w Keil; chyba, ¿e jest co¶ o czym nie wiedzia³em Pozdrawiam Jacek Po¼niak

Zrobiłem teścik - kod na '51 zajmujący ~50kB po skompilowaniu na AVR'a zajął niecałe 30kB. Jako, że to jest mój kod docelowy - pięknie użyję AVR'a, czego się troszkę bałem. Dziękuje wszystkim za zainteresowanie.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required