może masz włączoną optymalizacje kodu w Makefile ,z głownym naciskiem na szybkość działania programu ?!
Nie za bardzo mi sie chce anlizowac te dwa listingi, ale mozesz sprobowac zaldowac to do avrstudio i debugowac. Po drugie , wylacz optymalizacje kodu w makefile.
Masz racje przeoczylem tego posta. 1. Napiszcie mi prosze jeszcze czy jak dolaczam jakas biblioteke w ktorej powiedzmy jest 10 funkcji a ja kożystam tylko z jednej to kompilator/linker dolaczy do kodu wynikowego tylko ta jedna czy wszystkie. 2. Do czego służy w makefile optymalizacja. Zauważyłem tylko, że gdy chcę debugować to muszę wybrać 0. Ale kod...
Aby te funkcje działały poprawnie należy włączyć optymalizacje kodu. Rozumiem, że optymalizację kodu włącza się w pliku makefile. Mam ustawiony poziom optymalizacji na s. Mam do wyboru 0 - 3. Który najlepiej wybrać?
Eclipse to IDE a nie kompilator. Jeżeli korzystasz z makefile to właśnie tam. Jeżeli masz plugina GNU ARM Eclipse to we właściwościach projektu (Properties -> C/C++ Build->Settings)
Dziękuję bardzo za radę od szanownego forumowicza "gmp" Jak ustawię w pliku Makefile stopień optymalizacji na "0" to program działa prawidłowo, zajmuje około 4 % pamięci w atmega, jednak jak w tej pustej pętli wpisze sie np: k=5(program zajmuje około 3%), wykonuje się ona troszkę krócej, ale też działa Wielkie dzięki za pomoc i serdeczne pozdrowienia...
Witam. Zaniepokoila mnie pewna rzecz, nie wiem czy ja popelniam blad czy blad lezy po stronie nakladki dla WinAvr - AvrSide.. ale do rzeczy Do tej pory korzystalem z WinAVR+AvrSide, a ostatnio jako IDE wykorzystuje Crimson Editor (polecam!!!) (plus WinAVR oczywiscie). Jak wiadomo AvrSide automatycznie generuje makefile, mam ustawiony poziom optymalizacji...
jak kompiluje w avrstudio, to działa dobrze :) Ale już kompilacja przez to samo avr-g++ z którego korzysta avrstudio nie działa, więc problem jest chyba tak jak pisaliście w optymalizacji (Makefile). Zamieniłem z -Os na -O2 ale bez zmian. Później będe jeszcze to męczyć i pewnie napisze jeśli to nie to co myśle. W każdym razie dzięki za pomoc!
Stary kompilator, nowy sposób podawania argumentów. W GCC, od wersji chyba 4.8, można właczyć optymalizację "przyjazną" dla debugingu (czyli "-Og"). W starszych wersjach GCC optymalizacja (parametr -O) przyjmuje wartości od 0 do 3 i dodatkowo s jak size . Makefile ręcznie pisany, czy generowany automatycznie?
Ustaw optymalizację na -O0 (w makefile OPT=0), czyli wyłącz :wink: Piotrek
Pozwoliłem sobie odpowiedzieć nowym postem dlatego,że częściowo problem rozwiązałem. Mianowice kolega michalko12 skompilował moje pliki, ale w makefile zmienił optymalizację z 0 na s i dlatego powstały hex działa. Sprawdziłem i okazuje się że optymalizacja ustawiona na 0 i 1 kompiluje niedziałającego hex'a natomiast 2, 3 i s kompiluje hex'a który działa....
Kompilator kompiluje bez optymalizacji. Oto fragment makefile: # Define optimisation level here OPT = -O0
Po zainstalowaniu ubuntu i skonfigurowaniu eclipse+codesourcery pod niego okazało się że mój archaiczny makefile nie "zbuilduje" mi projektu. Po zainstalowaniu plugina ARM do eclipse okazało się że wygenerowany kod nie mieści się w pamięci. ... Nie mam pojęcia skąd ta róźnica. Kompilator to Codesourcery z 2010, optymalizacja w obu przypadkach na O1...
Dzięki, znalazłem już i przetestowałem, choć trochę napsuł mi ten nowy atmelowski avrgcc nerwów głównie przez to, że makefile mi nie działał co używałem z winavr :/ (brakowało sh.exe (który przekopiowałem z winavr) i avr-size który nie działa wywoływany z makefile - a ręcznie tak :/ ). Co do optymalizacji kodu, po tym jak wyciąłem niepotrzebne funkcje...
Korzystam z WinAVR 20040720. Pokombinowałem z parametrami w funkcji beep i teraz głośniczek cyka. W sumie to wolałbym żeby głośniczek piszczał niż cykał. shg, mógłbyś mi powiedzieć jak to zrobić prościej? I jak wyłączyć optymalizację (gdzieś w makefile, tak?)?
Witam. Mam następujący problem. Po kompilacji poniższego kodu za pomocą Eclipse z CodeSourcery otrzymuję częstotliwość Timera wynoszącą 18kHz, natomiast za pomocą programu Keil 53kHz. Wartości te zostały sprawdzone za pomocą oscyloskopu oraz analizatora stanów logicznych, dlatego w tym punkcie wykluczam błąd. Linker, startup i Makefile jest od Freediego....
1.Czy da się kompilować programy w trybie "Release" czyli bez informacji o debugowaniu, aby działały jak najszybciej i zajmowały mniej miejsca w pamięci. Taka opcja jest dostępna np. w Rowley Crossworks. Informacje o debuggowaniu niczego nie zmieniają. Można sobie ręcznie zmienić w Makefile opcje optymalizacji. Przykładowe projekty mają optymalizację...
Tak, w pliku Makefile ustawiam częstotliwość, dodam że używam środowiska WinAVR i optymalizacja kodu ustawiona jest na Os.
Moj program po skompilowaniu daje plik wynikowy hexa o rozmiarze 186kB, ale sprawdzalem sobie przy pomocy PonyProga ile to bedzie bajtow w pamięci kontrolera i jest to 67.9363kB. Pisze w WinAVR, po wykorzystaniu optymalizacji kodu ustawianej w pliku MakeFile przy pomocy komendy OPT z najwyzszym stopniem optymalizacji 3 program nie zmniejsza sie znaczaco...
A procek wogółe rusza?? Zmien program tak, żeby na stałe zapalić diodę. Może wina twki po stronie makefile bo IAR chyba sam tworzy makefile. Moze włączona jest jakas optymalizacja która usuwa puste pętle. Jesli miganie diodą zrealizowane jest na pętlach opozniajacych może być to powodem. Czy otrzymujesz jakieś ostrzeżenia po kompilacji ??
Czy ktoś wie dlaczego sprintf_P resetuje program? [syntax=c]sprintf_P(bufor, PSTR("%d"), liczba);[/syntax] Nie mogę znaleźć powodu... (W makefile odhaczone wszystkie opcje printf, brak optymalizacji, sprintf() działa normalnie).
Hiob napisał I TU POJAWIA się PROBLEM PONIEWAZ DO PAMIECI MIKROKONTROLERA POWINNA ZALADOWAC się TYLKO PROCEDURA A - RESZTA JEST PRZECIEZ ZBEDNA - A MIEJSCE W PAMIECI ZAJMOWANE PRZEZ PROGRAM POWINNO się ZMNIEJSZYC - W RZECZYWISTOSCI ZAMUJE TYLE SAMO MIEJSCA CO PROGRAM1 Tez mam ten sam problem, nie wiem jak w winavr wlaczyc optymalizacje kodu? czy ktos...
hm taie wielkośći otrzymuje po kompilacji w AVRGCC. Co do stosu nie wiem jak to sprawdzić :( a może co jakiś czas czyścic stos stos aby mieć miejsce Dodano po 3 ...teraz juz nic nie kumam w makefile zmieniłem parametr optymalizacji kompilatora z -O3 na -O1 plik jest mniejszy o połowe i teraz mogę wywoływać proceduryobsługi LCD ktore wcześniej powodowały...
jaki procesor i jakaa optymalizacja to wszystko zawiera sie w pliku makefile, zobacz ten plik w przykladzie podanym w katalogu example Kompilujemy program naciskajac na "Make All" w menu Tools w ProgrammersNotepad.
Zmień opcję optymalizacji kodu z -O0 na -Os w makefile i spróbuj ponownie. I jeżeli się skompiluje, to pokaż tą mapę (.map), bo coś tego kodu jest za dużo.
To ja dodam tylko, że Keil kosztuje jakieś $3000 i nie obsługuje żadnego JTAGa na USB tańszego niż $500 <: Nie wiem czy jest jakikolwiek sens porównywania jakości kodu wynikowego na poziomie optymalizacji -O0... Ten poziom ma znaczenie jedynie dla specyficznych sytuacji jak debuggowanie kodu. Ustawiłem taki w makefile, aby można było sobie kod wygodnie...
są różnice cały czas, np. bez optymalizacji z AVR studio 14kB, z GCC 11kB. Ale zrobiłem coś innego - w opcjach projektu AVR Studio wyłączyłem wszystkie ustawienia przez funkcję 'użyj zewnętrznego pliku Makefile' i wskazałem plik makefile z GCC - teraz jest identycznie to samo. Skąd tak wielkie różnice ustawień AVR Studio i Makefile z GCC? Przy niby...
Wychodzi na to, że muszę za rączkę :( . Próbowałem ręcznie w makefile dodawać linker flags ale on sobie za każdym razem zmienia makefile według tego co ma w konfiguracji. Jak to przeskoczyć? Wychodzi na to że pierwszy raz stało się to potrzebne...
(at)R-MIK No przypuszczam, że gdzieś w katalogach Arduino IDE jest Makefile, którego można zmienić. Zachowujesz się jakby to była moja wina, że nie można tego zmienić z poziomu samego IDE.
Ale taki dobry to ja jeszcze nie jestem. Nauczyłem się jako/tako pisać w C, natomiast do końca nie rozumiem tych definicji, deklaracji itd... Ponieważ program jest dość skomplikowany i zawiera sporo plików dodatkowych typu .c i .h więc miałem spore problemy żeby to wszystko się zobaczyło i skompilowało. Pewnie mam tam sporo błędów, przynajmniej w sensie...
W tym momencie to tej zmiennej po prostu w ogóle nie ma [; W pliku map (i w pliku .lss pośrednio) można zobaczyć, że w programie jest zerowy rozmiar sekcji .data i .bss. Linker wyrzucił ją, bo nie jest nigdzie używana (jak zapewne cały kod z widget.c). W Makefile domyślnie włączona jest optymalizacja 0, ale też jest włączone usuwanie nieużywanych zmiennych...
$katalog_WinAVR$/doc/avr-libc/avr-libc-u... Tworzysz osobny plik w asemblerze (.S, nie .s) zawierający procedurę obsługi przerwania, kompilujesz do pliku .o i linkujesz z pozostałymi plikami. W dołączanym wo WinAVR szablonie Makefile jest przewidziane miejsce na wypisanie źródeł w asemblerze (ASRC = $tu wpisz nazwy plików$). Przykład,...
Witam Temat dotyczy optymalizacji kompilatora gcc dla uC AVR, dodam jeszcze że nie mam wielkiego doświadczenia w programowaniu w tym środowisku. A więc problem jest taki - przykładowy program poniżej: #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB = 0xff; PORTB = 0X00; uint8_t x=1; while(1) { PORTB...
Plik Makefile zawiera tylko opcje, które zostały użyte podczas kompilacji źródeł programu. Jego modyfikacja nie wpływa na wsady pamięci FLASH i EEPROM. Wpływa. Zmiana optymalizacji wygeneruje różny kod, a wyłączenie optymalizacji (opcja O0) może spowodować, że program przestanie działać.
Witam. Z dniem dzisiejszym przesiadłem się na eclipsa. Programuję (a raczej staram się :D) pod linuxem. Nie mogę dojść, dlaczego kod z eclipsa zajmuje 2 razy tyle miejsca, co kod skompilowany za pomocą makefile wygenerowanego przez winavr (jeszcze pod windowsem, działa też na linuxie). Oczywiście optymalizacja i tu i tu jest ustawiona na rozmiar (-Os)....
No więc wielkie dzięki dla Freddie Chopin przede wszystkim za cierpliwość. Zastosowałem twój startup i skrypt z tym że nie dodałem skryptu w opcjach i stąd te błędy. Teraz już jest bezbłędnie. Co do optymalizacji to znalazłem odpowiednie flagi w twoim makefile: -ffunction-sections -fdata-sections - dla kompilatora -Wl,--gc-sections - dla linkera i oczywiście...
Dla takich osób, które chcą pooglądać jednak taki, który jest NIEpoprawny, choć w wyjątkowo subtelny sposób: https://gcc.gnu.org/bugzilla/show bug.cgi?id=83703 https://stackoverflow.com/ques...dd-floa... + https://gcc.gnu.org/bugzilla/show bug.cgi?id=79436 Nie wiem co ten kod ma wspólnego z naszymi optymalizacyjnymi dywagacjami:...
AVRy nie potrafią wykonywać programu spoza swojej pamięci Właśnie o to mi chodziło. Z chęcią umieścił bym kilka funkcji na karcie. No cóż... :/ Czy i jaką stosujesz optymalizację w kompilatorze? Oczywiście. Optymalizowane pod rozmiar kodu. W makefile: OPT=s, najwydajniejsza.
Witam! Przede wszystkim w obu plikach zauważyłem różne poziomy optymalizacji kodu, w pliku z 'sample' jest to 's' (optymalizacja pod kątem rozmiaru kodu), a w pliku z 'examples' jest '02' (optymalizacja bardziej pod kątem szybkości kodu) i stąd mogła się wziąść róznica prędkości wykonywania kodu. W nowych projektach stosowałbym wersję z katalogu 'sample'.
Skoro zmieniłeś bibliotekę od lcd to oczywiście, że mógł się "rozrosnąć". Na początek usuń nieużywane funkcje z biblioteki o ile takie są. jeżeli to nie pomoże pozostaje Ci znalezienie biblioteki o mniejszy zapotrzebowaniu na pamięć lub optymalizacja tej którą użyłeś.Podczas kompilacji powinieneś też otrzymywać informację na temat zajmowania pamięci...
Jeżeli piszesz w avr-gcc (i używasz standardowego Makefile z tego pakietu), to wrzuć tu plik .lss ze swojego projektu, w tym pliku jest kod w asm. Podejrzewam optymalizację, prawdopodobnie to co wpisałeś zostało przez optymalizację usunięte z kodu, bo nie robi nic pożytecznego, ale może się mylę. spróbuj kompilacji z opcją -O0 ("O zero").
ad2. To znaczy gdy tworzy swój plik makefile to tak właśnie pomija gdy korzystam z tych "dobry" podmienianych projektów to nie pomija. Prawdopodobnie w jednym z makefil'ów jest włączona optymalizacja Zwróć uwagę na takie słowa kluczowe w pliku jak: -Os ; -O0; O1; O2; oznaczają one stopień optymalizacji kodu ad3. Sporo osób (ja również) używają środowiska...
W tej chwili jest tak że jak przekompiluję z optymalizacją -2 wszystko działa, jeśli ustawie na -0 mam restart za restartem. Projekt jest ustawiony na atmega32 tu wszystko jest ok. Makefile jest ok wzięty z eclipsa stworzony działający. Problem się pojawia jak podejrzewam przy przejściu programu przez magiczne 16k kodu. Ponieważ po wyłączeniu optymalizacji...
Zrób tak: 1. pokaż schemat 2. pokaż zdjęcia projektu 3. zrób prosty pogram migający diodą LED i podłącz ją. 4. załącz ten program tutaj i opisz dokładnie, jakie są efekty. I rób to wszystko tylko w Studio 5 i nie kombinuj nic a makefile - niech robi automatycznie za Ciebie. Tylko nie zapomnij ustawić zegara w opcjach i optymalizacji -0s.
Konwersja liczb binarnych na BCD została napisana w asemblerze. Kompilator jednak "widzi" lub "toleruje" tylko niektóre linie programu. W Makefile poziom optymalizacji ustawiony jest na 0. Przedstawiam fragment pliku *.lst . Tłumaczone są tylko linie rozpoczynające się od konwersja.S . 34 ;***************************************...
Panowie, nie kłóćcie się między sobą ;) Widzisz gdzieś tutaj wykrzykniki? Skąd takie wraże, że ktoś tutaj się z kimś kłóci? Zwykła wymiana argumentów. Jeszcze raz zwrócę uwagę , że początkującemu ważniejsza jest kompletna informacja a nie najlepsze narzędzie. A ja jeszcze raz zwrócę uwagę, że dla początkującego najważniejsze jest, by jak najwięcej...
Prosta rzecz. Musisz w katalogu w którym masz program umieścić prosty plik Makefile. Ten plik to zbiór poleceń dla kompilatora linkera i temu podobnych. Są w nim zawarte informacje na temat optymalizacji kodu i plików wynikowych. Jeżeli masz WinAVR, to musisz mieć również programik do tworzenia takich plików. Jest w jednym z podkatalogów katalogu WinAVR....
Proszę nie mylić środowiska z kompilatorem. Problemy z konfiguracją i niedziałaniem nie wynikają z błędów środowiska ale jak widać na pierwszy rzut oka - z niewiedzy jak to wszystko do kupy działa. Eclipse i Attolic to można powiedzieć takie kombajny notatniki z paroma możliwościami i nic więcej. One tylko uruchamiają kompilator, kompilujący kod. Kompilator...
AVR-GCC nie wspiera C++. Ale dla uC jest mozliwe uzywanie C++. Nie wiem, skad biora sie mity, ze kod Embedded C++ wymaga duzo wiekszych zasobow niz kod w C. Moim zdaniem jest to jeden z mitow. Uzupelnie: Run Time Type Inspection i exceptions to są obszary gdzie C++ jest ciężkawy, ale RTTI zwykle można odłaczyć opcją. exception można nie używać we własnej...
Pierwsze to informacja, że delay.h został przeniesiony do innego katalogu w drzewie include i zalecane jest poprawienie odpowiedniej definicji na: #include <util/delay.h> Drugie to wyłączona w opcjach optymalizacja: przełącznik -O0. Zatem zmień ją w polu Optimization na -Os. Jeśli zaś edytowałeś makefile to tam zmień z 0 na S: # Optimization level,...
Witam. Jakiś czas temu postanowiłem zrobić własny układ oświetlenia schodów za pomocą taśm LED i ATMEGI8. Cały układ pod względem fizycznym mam gotowy, wszystko polutowane, ale pozostał ostatni etap, z którym właśnie mam problem, czyli program dla mikrokontrolera. Jako, że nie znam dobrze języka C, otrzymałem od pewnego forumowicza gotowy program. Wszystko...
Jeju panowie, ja się tylko zapytałem czy mam jakieś inne opcje. Takie R14, to przynajmniej jest punkt zaczepienia. Eclipse i Codesourcery mi bardzo odpowiadają i wcale nie mam zamiaru zmieniać ich na nic innego, a jedynie porównać kody wynikowe. Projekt prosty jak budowa cepa, więc nie powinienem mieć z tym problemu, a przynajmniej wgryzę się trochę...
Witam Doradźcie mi coś bo już naprawdę nie mam siły! Od wczoraj bezskutecznie walczę z AVR Studio 4- a dokładnie z rozmiarem kodu wynikowego. Napisałem w C prościutki program z mnożeniem zmiennoprzecinkowym i funkcja trygonometryczna- rozmiar kodu 4.5kB. Wydało mi się to dużo (w keilu taki sam program na 8051 ma 1.4kB), ale pomyślałem, że AVR-y pewnie...
Uzyskałem oczekiwany wynik. Tak jak mówiłeś Freddie, kolejny głupi błąd. Edytowałem makefile "z palca" w notatniku a nie z poziomu środowiska. Niestety był to make z innego projektu... Obecna postać: [syntax=c] 92 dana=sqrtf(dana*dana*dana); 0x08000794: vmul.f32 s15, s29, s29 0x08000798: vmul.f32 s28, s15, s29 0x0800079c: vsqrt.f32 s29, s28 0x080007a0:...
Z Twojego Makefile: # Optimization level, put in comment for debugging #OPTIMIZATION = -Os Flagę optymalizacji masz zahaszowaną więc jest wyłączona( domyślnie). Aby wypróbować różne poziomy optymalizacji odhaszuj OPTIMIZATION i wypróbuj tak jak tu -Os, -O1, -O2, -O3.http://gcc.gnu.org/onlinedocs/gcc-4.... Co...
Za generację pliku .lss odpowiada program 'objdump' - niestety nie korzystam z TrueStudio, tylko bezposrednio z makefile'a + kompilator, więc konkretnej opcji nie wskażę. O ile oczywiscie TueStudio korzysta z gcc :-) Co do dzialania wyswietlacza lub nie - czesto tak jest , że dane urzadzenie ma parametry lepsze niz te graniczne deklarowane przez producenta...
A nie prościej będzie uruchomić jednak XC32? Tak dla ciekawości zainstalowałem XC32 i podmieniłem ścieżki dostępu z C32 na XC32 i kompiluje się, i linkuje się bez problemu. Program po kompilacji wgrałem do procka i zachowuje się dokładnie tak samo jak ten skompilowany za pomocą C32. Choć kod wynikowy (bin) był minimalnie większy (ok 2kb na 41kb kod...
Witam. Zapewne temat odmierzania czasu był poruszany wielokrotnie na forum. Problem mój jest nastepujący: Napisałem swego czasu dwie funkcje realizujące opóźnienie : delayms - opóźnienie time milisekund delaus - opóźnienie time mikrosekund void delayms (int time) //funkcja dajaca opoznienie w ms { int i,k; for (k=0;k<time;k++)...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
Witam Znalazłem w sieci fajny projekt urządzenia z serii TV-B-Gone. http://www.tvbgone.com/cfe_mfaire.php (Project: Make your own open source TV-B-Gone (hacked from a MiniPOV 3 Kit)) Makefile: http://www.tvbgone.com/mfaire/tvbgone/ma... Firmware: http://www.tvbgone.com/mfaire/tvbgone/tv... Problem jest następujący: mimo że kod napisany niby...
1. Czy ten syscall.c jest w ogóle teraz potrzebny nic z nim na razie nie robiłem. Teraz nie, ale przy używaniu pewnych funkcji (czasem jedynie "pośrednio" tzn. nawet nie wiesz kiedy zaczynają być potrzebne) linker zacznie się burzyć o brak funkcji typu _write_r, _sbrk_r, _exit, _isatty_r (ogólnie funkcji zdefiniowanych w tym pliku) - to znak że zaczynają...
1. Jak nacisniesz break to w oknie disasemblacji zobaczysz instrukcje assemblera, ktore odpowiadaja za owe czekanie - wtedy w oknie statusu procesora mozesz ustawic odpowiednia flage tak, zeby warunek byl spelniony i w ten sosob zasymulowac to na co czeka program. Upierdliwe. Lepsze rozwiazanie to zmodyfikowac biblioteke tak, zeby przy kompilacji w...
Sorki za ostry ton, ale wasze wypowiedzi przypominają wypowiedzi ślepego o kolorach. Zaczynacie przygodę z programowaniem (przynajmniej wasze wypowiedzi na to wskazują), a autorytarnie stwierdzacie co jest lepsze i jaki kod generuje. Żeby było śmieszniej to kolega szaro pokazuje kod, który wcale nie jest ekwiwalentny i się dziwi, że są różnice w długości....
No to pozostało Ci jeszcze: -ffast-math. Opis brzmi groźnie: This option is not turned on by any -O option besides -Ofast since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions. It may, however, yield faster code for programs that do not require the guarantees...
Może trochę spróbuję podsumować, bo, sądząc z pytań, odpowiedzi kolegow powyżej, aczkolwiek poprawne, moga być na nieco zbyt wysokim poziomie abstrakcji :) 1. Stałe są umieszczane w pamięci programu, a nie pamięci danych. 2. AVR gcc preferuje umieszczanie stałych wewnątrz kodu rozkazu umieszczającego ją w rejestrze. Krócej się nie da, bo załadowanie...
hmm jeszcze nie wiem czy od razu dużo lepszy od AVR Studio ale jak dla mnie dużo lepsze IDE do pisania softu bo. 1. lepsze kolorowanie składni (pogrubione czcionki itp) może to błahostka ale jak się dużo pisze to człowiek i na takie rzeczy zwraca uwagę 2. jeszcze właśnie b.mało wiem o możliwościach konfiguracji np ścieżek do własnych bibliotek jak i...
W złym miejscu szukałeś. Twój problem nie jest związany z Atmel Studio lecz z toolchainem - kompilatorem i linkerem. I w dokumentacji tych programów musisz szukać rozwiązań. Katalog w ktorym znajdzie się plik elf jest dowolny - określa to skrypt Makefile, akurat domyślnie dla celu Debug w AS plik ten znajduje się w podkatalogu Debug, dla celu Release...
Czyżby? Czy dla AVR ktokolwiek przejmuje się skryptami linkera, startupem, tablicą wektorów i Makefilem? Przecież dla tej platformy jest DOKŁADNIE TAK SAMO jak dla ARM, a jakoś nikomu nawet na myśl nie przyjdzie zajmować się tymi plikami - każdy korzysta z gotowców zawartych w pakiecie avr-gcc. Te pliki tam fizycznie są, nikt nie zajmuje się tym jak...
Witam mam proble, ze skompilowaniem projektu z plikiem *.asm Znalzałem w necie soft do obsługi LCD siemensa make: *** No rule to make target `lcd.o', needed by `GLCD.elf'. Stop. a)Usuń z projektu plik lcd.asm b)zmień rozszerzenie pliku z .asm na .s c)dołącz do projektu lcd.s A we właściwościach projektu: 1)optymalizacja na -O3 2)frequency na tyle...
Hmm. Dodatkowej wtyczki nie instalowałem czyli korzystam chyba z tych które były od razu w Eclipsie Helios CDT 7.02 SR2. W toolchain editor wybrany builder jest GNU Make Builder. W instalation details/plug-ins jest tam jakiś C\C++ Standard make build UI. No nie jestem biegły w tych zawiłościach eclipsa i wtyczek. Zainstaluj, warto... Potem New C Project...
Hm też mi się tak wydaje, nie wiem czemu go tam nie ma.. Makefile jest z folderu w którym jest cały projekt tego programu z biblioteki rklibavr. Makefile: # Nazwa pliku z funkcją main() - BEZ ROZSZERZENIA! TARGET = main # typ mikrokontrolera #MCU = at90s2313 #MCU = at90s8515 #MCU = atmega163 MCU = atmega8 #MCU = atmega128 # Katalog z bibliotekami...
Fantastycznie! Jest nadzieja w avr-gcc. WinAVR idzie do kosza. Dzięki (at)jvoytech. Co ciekawe, w nowym avr-gcc wystarczy wpisać -Os, aby kompilator rozpoznał najlepsze optymalizacje kodu. W końcu... Autorze, wyrzuć stary WinAVR (nie aktualizowany od 2010 roku). Kod możesz zbudować z użyciem MSYS2 następująco: 1. Pobierz najnowszy MSYS2 z https://github.com/msys2/msys2-insta...
no właśnie o te pliki lst mi chodziło jeśli nie są potrzebne to nie wiem czemu mi to nie działa makefile mam ok bo korzystam z wielu takich bibliotek i działa wcześniej w załączniku podałem przykład sprawnej biblioteki do programu głównego daje #include "lcd.h" a makefile wygląda tak # Nazwa pliku z funkcją main() - BEZ ROZSZERZENIA! TARGET...
Chyba logiczne jest, że jak chcesz mieć mały kod, to używasz optymalizacji rozmiaru, czyli -Os... No akurat te poziomy optymalizacji dają oszczędność na poziomie kilkuset B. Tak się składa że też od kilki dni "męczę" podobny projekt. Udało mi się uruchomić stronę (tzn. odpowiada ale nie ładuje danych)...związane jest to z tym że musiałem za komentować...
Witaj. Wracając do tematu. Błędy które Ci się pojawiły są normalnymi błędami kompilator stwierdził iż wykorzystujesz nazwy rejestrów które w dodanych przez Ciebie bibliotekach poprostu nie istnieją, bądź pobrałeś kod z jakiegoś innego programu napisanego np na Atmegę128 lub jakiś inny gdzie istnieją np 2 uarty i niby rejestry są podobnie się nazywające...
Tak, bo docelowy uC ma 16kB (lub 32kB) flashu, a mam dopiero "zarys" funkcjonalny tego co będzie robić. 256kB mam na płytce ewaluacyjnej. Nie to, żeby mnie te 1,8kB jakoś bardzo przerażało nawet przy 16kB, ale chciałem wiedzieć skąd ono się bierze, żeby ewentualnie potem mieć z czego uszczknąć. Dodano po 5 Mam jeszcze jeden problem, który zauważyłem....
jak zmienisz _delay_ms((PIND & _BV(0))? 1000: 200); na _delay_ms(200); to zobaczysz, że tyle nie zajmuje. Dlaczego ? Pytanie konkursowe o złote gacie dla Ciebie :) i jeszcze spróbuj włączyć optymalizację w jakichś opcjach projektu (nie użuwam avr studio więc dokładnie nie powiem), bo o makefile'u pewnie nie słyszałeś...
Witam... Idąc książką Pana Lucjana Bryndzy: 1) Uruchomiłem openocd i mogę za pomocą skryptu pythona automatycznie logujacego sie do telneta zaprogramowac binem 2) Po wycieciu wszystkich opcji z str912.mk (ktory jest includowany w makefile) i zostawieniu sekcji "program:" z instrukcja wywolania skryptu - tez moge zaprogramowac ale biny Sprawa rozbija...
Witajcie ! Zgłębiam podstawy programowania w języku C dla AVRów, mam już za sobą miganie diodą, przyszedł czas na LCD. Mój program: [syntax=c]#include <avr/io.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include "lcd44780.h" int main(void) { lcd_init(); lcd_locate(1,1); lcd_str("Hello World !"); // napis z pamiêci RAM...
Walczę z ponizszym kodem i nie wiem gdzie jest pies pogrzebany. Kompilator to gcc Version: LPC2xxx-gcc-newlib-v2_4_0_0 Deklaracja funkcji lcd_write void lcd_write(U08 datcom, U16 data); Zaczeły sie problemy jak zaczałem dopisywać funkcje, tak jakby kompilatorowi brakowało miejsca na rozwiniecie analizowanej linii. Czy można jakoś podać lepszy wspólczynnik...
#define F_CPU na sam początek kodu, przed include'ami, a najlepiej to w makefile umieścić jako jedną z opcji, tak żeby została przekazana do kompilatora jako np. "-DF_CPU=16000000UL" Przyjrzyj się temu: static __inline__ void _delay_ms(double __ms) { uint16_t __ticks; double __tmp = ((F_CPU) / 4e3) * __ms; if (__tmp...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
(at)mickpr: Embsys Regview używam, mogę szczerze polecić, jeżeli używałeś kiedyś CCS Texasa, to działa to podobnie jak tam. Pliki z definicjami rejestrów są napisane b. prosto, łatwo dopisywać swoje procki/wprowadzać poprawki do istniejących. Eclipse jako Eclipse podoba mi się średnio, wolę inne edytory (lubię te w stylu Visual Studio, no co poradzę),...
No więc tak jak w tytule. Czy jest to możliwe w jakiś prosty sposób? Mam program gdzie ogólnie jak zwykle chciałbym zastosować optymalizację Os, ale niektóre funkcje chciałbym jednak pozostawić bez optymalizacji albo zastosować optymalizacją na szybkość. Domyślam się że mogę skompilować niektóre funkcje wcześniej (z inną optymalizacją) i później dołączyć...
Maxe: Twoja metoda nie działa już jej próbowałem co więcej po wprowadzeniu takiej lini: Dodano po 4 fantom: używam makefile'a Lucjana Bryndzy w którym miejscu powinienem dodać -I./lcd bo też nie dało mi to żadnych efektów. [syntax=c] # Automatic makefile for GNUARM (C/C++) # Copyright (C) Lucjan Bryndza <lucjan.bryndza(at)ep.com.pl> # http://www.boff.pl...
Ok, coś jest nie tak. Przede wszystkim systick działa na trybie optymalizacji O1 i O2. Bez zmiany kodu. Na O0 od razu jest hard fault. Ale nie występuje na żadnej linijce kodu. Nie wchodzi do przerwania i wywala od razu błąd. EDIT: Działa w momencie kiedy wywaliłem inicjalizacje: N VIC_Init(&NVIC_InitStructure); A w to miejsce dałem: NVIC->ISER...
nikt nie moze skumac makefile'a -I . -I./inc src/main.c -o src/main.o to jest linijka wywolujaca kompilacje pliku .c do pliku .o. tak jak napisal powyzej szelus, idea jest taka, ze mozesz kompilatorowi podac sciezki, w ktorych on bedzie sobie szukal plikow dolaczonych przez #include - standardowo dodany zostaje katalog w ktorym jest projekt: -I . (kropka...
Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
Klocek to AT91SAM7X128. Jako kompilatora uzywam WinARMa, a debugger to OCDCommander. Ten debugger chyba nie ma raczej za duzych mozliwosci, a nie mam pojecia jak w WinArmie wstawic jakiegos breakpoint'a zeby bylo mozna to dokladniej sprawdzic. Wykonywanie programu krok po kroku raczej odpada bo rozbiegowka jest raczej dosyc rozbudowana (z projektu przykladowego...
http://obrazki.elektroda.pl/3025550100_1... Mając do dyspozycji jedną matrycę 8x8 czerwonych diod LED o boku 60,2mm oraz mikrokontroler ATtiny861 pozostałe po innych projektach postanowiłem zbudować to, co każdy elektronik chociaż raz w życiu zbudować musi: zegar ;). Ze względu na charakter wyświetlacza miał to być zegar binarny, ale...
Nie wiem po co każdą instrukcję ldr Twój program wykonuje warunkowo. To akurat jest oczywiste. Procesor bierze to, co jest. Taki ma program, to taki wykonuje ;p Powinieneś raczej zapytać dlaczego napisałem taki program ;p Otóż nie wiedziałem co robi instrukcja ldrlo. W opisie instrukcji ldr nie było nic o zwiększaniu rejestru wskaźnikowego. Myślałem...
gcc potrafi tworzyć wyspecjalizowane funkcje automatycznie na podstawie argumentów. Jeśli stworzysz funkcję 3-argumentową i w kodzie znajdzie się wywołanie z którego kompilator będzie wiedział, że 2 argumenty są bez znaczenia (lub ich wpływ jest możliwy do określenia na etapie kompilacji) to stworzy wyspecjalizowaną funkcję jednoargumentową zupełnie...
No dobra, udalo ci sie polechtac moja proznosc wiec moze zrobimy tak. Opisze tutaj przykladowego mekafile-a z nastawieniem na WinAVR, Atmega8 i STK200 tak aby inni tez cos z tego mieli. W zasadzie wszystko jest opisane w angielszczyznie no ale jakby kto nie umial to daje po polsku. # Hey Emacs, this is a -*- makefile -*- #---------------------------------------...
Kolejna sprawa: Wg noty DS18B20: All read time slots must be a minimum of 60 µs in duration with a minimum of a 1 µs recovery time between slots A u ciebie w funkcji czytającej bit masz czas trwania slotu niewiele większy niż 17us. Co prawda w funkcji czytającej bajt, masz po wysłaniu każdego bitu dodatkowe opóźnienie 15us + opóźnienie wynikające...
Ale to kosmetyka, związana z typami. Nie chciałem już zaciemniać kodu i opisu w poście. U mnie kompilacja z optymalizacją -Os -O1 i -O2 kończy się tak samo: A masz avr-gcc skąd? Tego typu błąd występował w 4.7.x i chyba 4.8.0, był zgłoszony na bugtracku gcc i jest poprawiony. Można go wyeliminować w starych wersjach usuwając generowanie informacji...
Robię jako projekt na studia interfejs OBD na LCD według protokołu ISO 14230 KWP 2000 FAST, który to według kilku źródeł internetowych jest w mojej Corsie C z 2005r. (ECU Bosch Motronic, silnik Z12XEP). Napisałem kod procedury fast initialization (10400baud 8n1) podany poniżej (w raz z opisem układu): http://obrazki.elektroda.pl/7065318700_1...
https://obrazki.elektroda.pl/9127779200_... Kiedyś programiści tworzyli cały swój kod od podstaw. Było to trudne, czasochłonne i niezbyt przyjemne dla osób pracujących z systemami embedded. Deweloperzy systemów wbudowanych walczyli o zmianę, a w reakcji na to dostawcy mikrokontrolerów generowali środowiska do kompilacji czy platformy...
http://obrazki.elektroda.pl/7326333400_1... Autor zajął się tym projektem przy okazji zabawy komputerem Apple II. Celem tego odtwarzacza jest osiągnięcie takich samych efektów dźwiękowych jakie osiąga się w Apple II. W tym celu wykorzystany został oryginalny układ scalony z serii AY-3-8910/1/2. Układ ten może generować trzy kanały przebiegów...
Jak by przyszło zmienić taktowanie procka to zaglądać do wszystkich plików *.c? Pewnie - bo w AVRS5 jak widzisz nie ma takiego miejsca jak w AVRS4 czy w Eclipse czy w CodeBlocks na podanie częstotliwości taktowania w opcjach projektu. Dlatego dzięsiątki początkujących walczy z tym #define itp .... i właśnie co jest później problemem ? ..... to zaglądanie...
ja akurat nie używam plugina, tylko ręcznie piszę sobie Makefile'a. Generalnie wiele więcej roboty z tym mieć nie będziesz, zresztą popatrz na mój szablon. Tam de facto zmienia się tylko opcje optymalizacji i nazwę projektu. pzdr.
winavr makefile makefile avrstudio makefile makefile yagarto
biblioteka borland czarny ekran kursor uruchomieniu mostek prostowniczy isuzu
lutownica lutola samsung s24d330h
Seat Ibiza 6L - Bezpiecznik Wentylatora Chłodnicy Stycznik klimatyzacji Opel Signum - lokalizacja i diagnostyka