Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2026, o 13:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 20 gru 2015, o 18:44 
Offline
Nowy

Dołączył(a): 03 lis 2015
Posty: 10
Lokalizacja: Legnica
Pomógł: 0

Do tej pory pracowałem na Atmel Studio 6.0. Ostatnio postanowiłem spróbować popracować w środowisku Eclipse Luna.

Jak już wszystko skonfigurowałem przeniosłem kilka projektów i skompilowałem dla porównania. W obu środowiskach ustawiłem tryb "Release", optymalizację rozmiaru -Os i ku memu zdumieniu w każdym projekcie kod wynikowy programu był w Eclipse ok 400 bajtów większy. Co prawda Atmel Studio używa kompilatora 3.4.1.95 a Eclipse 3.4.2.1573 ale to chyba nie to. Czy Eclipse dodaje jakiś kod do wsadu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2015, o 18:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27456
Lokalizacja: Szczecin
Pomógł: 1045

zark napisał(a):
Czy Eclipse dodaje jakiś kod do wsadu?

Pomyśl teraz przez małą chwileczkę .... skoro eclipse czy Atmel Studio pełnią TYLKO rolę EDYTORA , gdzie równie dobrze mógłbyś użyć NOTEPAD.EXE zamiast Eclipse czy Atmel Studio - to jak myślisz - NOTEPAD.EXE dodaje jakiś wsad do kodu ? Ma to jakiś sens ?

Edytory są tylko edytorami a kompilacją zajmuje się kompilator i jeśli masz różne wersje kompilatora albo np nawet te same ale inaczej poustawiane (bo nie tylko -Os się liczy) .... to skąd ci do głowy przychodzi że notepad.exe może dodać coś do kodu ?

------------------------ [ Dodano po: 1 minucie ]

zark napisał(a):
Co prawda Atmel Studio używa kompilatora 3.4.1.95 a Eclipse 3.4.2.1573 ale to chyba nie to

No tu sam sobie odpowiadasz ale widzę, że zamiast tego wolisz bardziej tajemnicze rozwiązania z kosmosu

Oczywiście, że już to może mieć wpływ - ale też tak jak mówię ustawienia kompilatora

------------------------ [ Dodano po: 2 minutach ]

zark napisał(a):
Ostatnio postanowiłem spróbować popracować w środowisku Eclipse Luna.

A tak aprop'os Luna - to co cię skłania do używania tak już ARCHAICZNYCH wersji ? Może jednak rzuć na to okiem: http://mirekk36.blogspot.com/2015/07/ec ... ogram.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2015, o 19:08 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

Nie. Eclipse nie dodaje żadnego kodu do wsadu. Zwróć uwagę na wywołanie kompilatora w obydwu przypadkach. Różnią się (zapewne).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2015, o 19:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A masz włączone w Eclipse przy kompilowaniu opcje -ffunction-sections -fdata-sections i przy linkowaniu opcje -Wl,--gc-sections ?

Najlepiej wrzuć logi z kompilacji z consoli z Eclipse oraz takie same z AS.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2015, o 11:26 
Offline
Nowy

Dołączył(a): 03 lis 2015
Posty: 10
Lokalizacja: Legnica
Pomógł: 0

mirekk36 napisał(a):
Pomyśl teraz przez małą chwileczkę .... skoro eclipse czy Atmel Studio pełnią TYLKO rolę EDYTORA , gdzie równie dobrze mógłbyś użyć NOTEPAD.EXE zamiast Eclipse czy Atmel Studio - to jak myślisz - NOTEPAD.EXE dodaje jakiś wsad do kodu ? Ma to jakiś sens ?

Pozwlę sobie nie zgodzić się ze stwierdzeniem, że eclipse pełni TYLKO rolę EDYTORA. Eclipse to IDE czyli zintegrowane środowisko do pracy. Gromadzi w jednym miejscu szereg narzędzi, koordynuje ich działanie, zapewnia wzajemną komunikację i ułatwia posługiwanie się nimi.

mirekk36 napisał(a):
Edytory są tylko edytorami a kompilacją zajmuje się kompilator i jeśli masz różne wersje kompilatora albo np nawet te same ale inaczej poustawiane (bo nie tylko -Os się liczy)

Różnica była stała bez względu na złożoność kodu i tym samym objętość kodu wynikowego. Ponadto utrzymywała się na tym samym poziomie w trybie debug i release.

mirekk36 napisał(a):
.... to skąd ci do głowy przychodzi że notepad.exe może dodać coś do kodu ?

Nigdy tego nie twierdziłem.

mirekk36 napisał(a):
zark napisał(a):
Co prawda Atmel Studio używa kompilatora 3.4.1.95 a Eclipse 3.4.2.1573 ale to chyba nie to

No tu sam sobie odpowiadasz ale widzę, że zamiast tego wolisz bardziej tajemnicze rozwiązania z kosmosu

Oczywiście, że już to może mieć wpływ - ale też tak jak mówię ustawienia kompilatora

Oczywiście, ale nie aż taki. Kompilatory C generują bardzo zwarty kod. Dlatego język C jest używany do tworzenia oprogramowania układowego na większości platform sprzętowych. Nie jest możliwe aby z wersji na wersję kod wynikowy urósł z ok. 1200 bajtów do ok 1600. Różnice w ustawieniach też aż takiej różnicy nie powinny wygenerować. Bardziej bym obstawiał linker. Tym bardziej, że różnica jest stale ta sama.

mirekk36 napisał(a):
zark napisał(a):
Ostatnio postanowiłem spróbować popracować w środowisku Eclipse Luna.

A tak aprop'os Luna - to co cię skłania do używania tak już ARCHAICZNYCH wersji ? Może jednak rzuć na to okiem: http://mirekk36.blogspot.com/2015/07/ec ... ogram.html

Niedawno kupiłem bluebook'a i to środowisko jest na płycie. Traktuje je jako sprawdzone. Wolę wystartować od czegoś pewnego i dopiero po bliższym poznaniu brać się za najnowsze wersje. Z doświadczenia wiem, że nowsze wersje nie zawsze są lepsze. Ostatnio Atmel wydał Atmel Studio 7. Zainstalowałem popracowałem godzinę i wróciłem do wersji 6.

A tak tytułem wyjaśnienia rozpocząłem ten wątek z nadzieją, że ktoś wcześniej zwrócił uwagę na ten sam problem i ma gotowe wnioski oraz sposób na takie ustawienie opcji kompilacji aby uzyskać porównywalne wyniki. Wiem, że mogę porównywać logi, linie wywołań kompilatora i linkera, kopać w plikach wynikowych itp, ale chyba po to jest forum aby sobie nawzajem pomagać w miarę możliwości i w granicach rozsądku, dzieląc się wiedzą i doświadczeniem. Nie oczekuję aby ktoś odwalił tę robotę za mnie. Jeśli nikt nie ma gotowego rozwiązania sam go poszukam i podzielę sie rezultatami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 gru 2015, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Cytuj:
A masz włączone w Eclipse przy kompilowaniu opcje -ffunction-sections -fdata-sections i przy linkowaniu opcje -Wl,--gc-sections
Sprawdziłeś jak masz ustawione wcześniej podawane opcje? Od ich ustawienia zależy czy linker wyrzuci zbędne elementy.

Ustaw je według załączonych zrzutów i zobacz jakiej wielkości masz kod wynikowy.
ObrazekObrazek

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2015, o 08:53 
Offline
Nowy

Dołączył(a): 03 lis 2015
Posty: 10
Lokalizacja: Legnica
Pomógł: 0

rskup napisał(a):
Cytuj:
A masz włączone w Eclipse przy kompilowaniu opcje -ffunction-sections -fdata-sections i przy linkowaniu opcje -Wl,--gc-sections
Sprawdziłeś jak masz ustawione wcześniej podawane opcje? Od ich ustawienia zależy czy linker wyrzuci zbędne elementy.

Jeszcze nie. Przedświąteczna gorączka = brak czasu.

rskup napisał(a):
Ustaw je według załączonych zrzutów i zobacz jakiej wielkości masz kod wynikowy.

Dzięki za zrzuty. Jak zrobię testy dam znać. Generalnie chcę przejść na eclipse więc będę drążyć temat aż do uzyskania porównywalnych rezultatów kompilacji. Na takim ATtiny13A 400 bajtów jest bezcenne.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2015, o 18:21 
Offline
Nowy

Dołączył(a): 03 lis 2015
Posty: 10
Lokalizacja: Legnica
Pomógł: 0

Testy zrobione. Domyślne ustawienia kompilacji są takie jak na zrzucie. Tu nie musiałem nic zmieniać. Wprowadziłem zmiany w ustawieniach linkera zgodnie ze zrzutem. W efekcie tych zmian nastąpiła znacząca redukcja objętości programu. Na domyślnych ustawieniach rozmiar programu 1628 bajtów. Po wprowadzeniu zmian 970 bajtów. W Atmel Studio wprowadziłem te same ustawienia i rozmiar programu to 1266 bajtów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 09:36 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 kwi 2015
Posty: 20
Lokalizacja: Bydgoszcz
Pomógł: 0

Dlaczego przy identycznym kodzie źródłowym kompiluje się program wynikowy o różnej objętości dla atmegi32 i atmegi8? :o



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 09:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27456
Lokalizacja: Szczecin
Pomógł: 1045

karlowic napisał(a):
Dlaczego przy identycznym kodzie źródłowym kompiluje się program wynikowy o różnej objętości dla atmegi32 i atmegi8? :o

A zajrzałeś sobie chociaż raz do noty PDF żeby sobie porównać chociażby np ilość rozkazów asemblerowych pomiędzy prockami ? (nie mówię, że akurat w przypadku tych dwóch są ale jest to jedna z wielu przyczyn) ... a nie widziałeś w nocie, że procki różnią się ilością każdego rodzaju pamięci i już to może wpływać na dobór rozkazów asm w kodzie wynikowym, że procki różnią się możliwościami niektórych peryferiów a więc również nazwy rejestrów bywają inne i obszerniejsze ... itp itd itp itd

podsumowując NIC W TYM DZIWNEGO ;) ... to normalne wręcz

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 12:02 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 kwi 2015
Posty: 20
Lokalizacja: Bydgoszcz
Pomógł: 0

mirekk36 napisał(a):
procki różnią się ilością każdego rodzaju pamięci i już to może wpływać na dobór rozkazów asm w kodzie wynikowym

Czyli może tak być, że kod źródłowy napisany w asm (nie wykompilowany przez GCC) dla rożnych procesorów wykonujący to samo będzie się różnił?
mirekk36 napisał(a):
NIC W TYM DZIWNEGO

Oj czuję, że jeszcze wiele rzeczy mnie zdziwi w tej "tajemnej" dziedzinie wiedzy. :|



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 14:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27456
Lokalizacja: Szczecin
Pomógł: 1045

Cytuj:
Czyli może tak być, że kod źródłowy napisany w asm (nie wykompilowany przez GCC) dla rożnych procesorów wykonujący to samo będzie się różnił?

Nie może tak być - tylko tak będzie ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2016, o 17:34 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2606
Pomógł: 129

Podstawą przy tego typu testach są:
1) ta sama wersja toolchain
2) te same procki
3) ten sam kod źródłowy
4) te same ustawienia kompilatora i linkera

Jakiekolwiek odstępstwa od w/w powodują wyciąganie błędnych wniosków.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2016, o 19:02 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

taa zaczyna się ...

-- to eclipse jest złe uzywaj nowego ... -- a jakie ma to znaczenie ??/ to tylko edytor , każda nowa wersja nic nie wnosi szczególnego
poza coraz większym cięzarem samego edytora ... który działa coraz zawodniej i wolniej ...

dlaczego ten kod jest większy a ten mniejszy

-- bo jest wiele warunków , wersja kompilatora jest istotna ... wersja samych includ jest istotna , procek , zasoby , ustawienia,
baaa nawet sposób pisania kodu ma znaczenie .... ale nic niema do gadania edytor .... równie dobrze możecie wrócić do korzeni i pisac w notatniku ...

(przynajmniej szybko się odpala)

zaraz zaczniecie się kłócić o kilka ms czasu kompilowania ... jakie ma to znaczenie ?? niech się kompiluje ile trzeba byle by działało dobrze i nie było błędów :) Jak siedzisz kilka dni nad kodem to jakie ma znaczenie te parę ms , te kilka bajtów ... ??

Nie róbcie takich porównań bo do niczego nie prowadzą i nic nie wnoszą

-- sam sposób uzycia delaya ma duże znaczenie i wpływ na rozmiar kodu ....
czasem przestawienie funkcji , zmiana kilku przecinków czy nawiasów daje duże korzyści w kodzie i jego rozmiarze
trzeba czasem przemyśleć kod nawet ten najprostszy ... a sposobów jest tyle ilu programistów wiec nie da się powiedzieć
jednoznacznie .... każdy ma swoje maniery w kodowaniu ....

podobnie jak starszy kompilator może generować większy kod wynikowy , a czasem nawet jest odwrotnie gdyż zmienia się
sposób interpretacji niektórych rzeczy przez niego ...

nie zawsze nowe idzie w parze z lepszym , ale też i nie jest lepsze wrogiem nowego ....
trzeba zastosować często umiar w zmianach , nie ulegać złudzeniom , a wybrać swoje środowisko i swój styl i się tego trzymać

Używam wprawdzie AS7 , ale Toolchain mam stary .bo nowy nie był taki dobry jak opisywali .... po za tym nic nie wnosił
te same procki działają dalej ... a kilka bitów nie było warte zmiany ....

Podobnie mam na ARM czy PC ... co z tego że jest VS2017 .... dalej używam VS2010 bo niema śmieci wodotrysków i działa szybko
a programy takie same mogę pisać .... '

Przemyślcie to zanim popadniecie w paranoję szukania winy we wszystkim ,....
przez 2 bajty czy 2ms :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lis 2016, o 23:58 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2606
Pomógł: 129

No nie zawsze nie ma sie o co bic. Jak Ci braknie kilku bajtów w Attiny10 to sie będziesz cieszył jak niemowlę, że toolchain zaoszczędził ci troche bajtów (nawet i 100 sie zdarzyło i to na starszej wersji).
Ale to tak na marginesie. Kolega chciał wiedzieć skąd różnice i błędnie założył że wersja toolchaina nie ma znaczenia.
A ma i to spore.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO