Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Przez ostatnie [s]pół roku[/s] kilka dni szukałem przydatnych symulatorów/debugerów dla AVRów. Znalazłem dwa: simavr i simulavr. Problemem obu były możliwości konfiguracji i ilość dostępnych urządzeń, dlatego postanowiłem napisać własny.
Jednak, ponieważ w świecie AVRów jedyne co narazie umiem to zrobić input z przycisku, świecące kółko z LEDów i tym podobne, stworzenie symulatora nie było opcją :)
Z tego powodu zacząłem się zastanawiać, czy jest jakiś sposób skompilowania prostych programów napisanych na AVRy w języku C jako natywne Linuxowe programy.
Wreszcie pomysł miałem, więc zacząłem pisać :)
Najpierw zacząłem pisać moje nowe "kompilatoro-coś" w C. Jednak, mój pomysł wymagał częstej manipulacji łańcuchów znaków, a to jak wiadomo w C może powodować bóle głowy.
Dlatego napisałem w czymś innym, a w czym powiem pod koniec tego posta.
TestAVR to narzędzie które na dzień dzisiejszy przy użyciu kompilatora gcc potrafi skompilować programy napisane na AVR jako natywne Linuxowe programy, a po włączeniu wyjściowego programu wyświetlać zawartość wybranych rejestrów (DDR, PORT). Planuję oczywiście to coś rozwijać :)
TestAVR kompiluje używając do tego specjalnych "plików urządzeń". Te pliki urządzeń mają rozszerzenie "avr" i są to zwykłe pliki tekstowe zawierające specjalne instrukcje.
Tworzenie tych plików urządzeń jest łatwiejsze niż użytkowanie Bubuntu. Składają się one z instrukcji, które podczas działania TestAVR (a raczej czytnik tych plików, także napisany przeze mnie i zawarty z TestAVR) umiejętnie konwertuje na kod źródłowy C i potem używa go do ostatecznego skompilowania programu.
Warto wspomnieć jeszcze raz, że TestAVR to [b]nie[/b] symulator ani nie został stworzony do gigantycznych projektów, lecz do debugowania małych projektów dla początkujących, takich, jak ja oraz, że TestAVR [b]kompiluje[/b], nie konwertuje, co oznacza, że aby otrzymać ostateczny wynik, potrzebujemy oryginalnego kodu źródłowego napisanego [b]w C[/b].
Linki do pobrania paczek dla Debiana, RedHata i innych dystrybucji z mega.co.nz, instrukcje instalacji oraz tworzenia plików urządzeń znajduje się na podstronie mojej strony gdzie trzymam moje bezsensowne projekty i skrypty, a dokładnie [url=http://zatherz.cba.pl/testavr]TUTAJ[/url].
Jeżeli złamałem prawo stanowe wklejając tu link do tej strony, to proszę o odpowiednią informację, a zawartość przepiszę/przekopiuję tu :)
A teraz to, co obiecałem:
TestAVR jest [b]skryptem w bashu[/b]!
Staropolskie przysłowie powiada: [i]Nie posądzaj możliwości shella po nazwie.[/i] :)
Ostatnio edytowany przez Zath (2014-08-06 15:49:51)
Offline
Twój serwer na pliki mega ssie, na pobranie 10kb czekałem z pół minuty :|
Nie da się po ludzku: github, google code, sf.net? :) Co w wypadku jeżeli kod źródłowy jest w kilku plikach lub mamy własne pliki nagłówkowe?
Co z timerami, przerwaniami, etc. Jak chcesz to rozwiązać? Samo wypisanie wartości rejestru nie wiele da. Poza miganiem diodą nie wiele tym zrobisz...
Pomysł ciekawy, z wykonaniem gorzej ;)
Pozdrawiam.
//EDIT: Żeby nie było, nie uruchamiałem, przejrzałem tylko źródła.
Offline
Tak jak powiedziałem, to nie jest i raczej nie będzie profesjonalny debugger, tylko mały skrypt do kompilowania programów na AVR dla [b]kompletnie[/b] początkujących takich jak ja. Poczytam sobie więcej o interruptach, timerach itd. i może pomyślę nad implementowaniu ich, a nad kilku-plikowym source codem popracuję przed następną/następną po następnej wersją. Na razie można własne pliki nagłówkowe wrzucać do /usr/share/testavr/include, a dodanie dwóch słów, aby dało się używać własnych nagłówków umieszczonych w dyrektoriach/poddyrektoriach kodu źródłowego będzie bardzo łatwe, więc to w następnym release przyjdzie na pewno. A co do hostingu, to jak stronę przeniosę gdzie indziej to też zmienię.
Edit: Do tego, program jeszcze nie jest skończony i zamierzam go rozwijać, więc aktualna wersja jest taką wersją beta, gdzie najważniejsze jest, że kompiluje i wyświetla poprawne informacje.
Ostatnio edytowany przez Zath (2014-08-07 18:01:52)
Offline
Wiadomo, że zrobić coś samemu to kupa satysfakcji, ale jeśli chodzi o praktyczną stronę zagadnienia, to istnieje darmowe ATMEL STUDIO, zawierające wszystkie potrzebne narzędzia. Niestety, pod Windows ;)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00003 | SET NAMES latin2 |
0.00180 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.136.26.156' WHERE u.id=1 |
0.00202 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.136.26.156', 1732387413) |
0.00052 | SELECT * FROM punbb_online WHERE logged<1732387113 |
0.00082 | SELECT topic_id FROM punbb_posts WHERE id=272712 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=26223 ORDER BY posted |
0.00093 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=26223 AND t.moved_to IS NULL |
0.00010 | SELECT search_for, replace_with FROM punbb_censoring |
0.00184 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=26223 ORDER BY p.id LIMIT 0,25 |
0.00119 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26223 |
Total query time: 0.0094 s |