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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-08-06 15:48:41

  Zath - Użytkownik

Zath
Użytkownik
Zarejestrowany: 2014-07-23

TestAVR - Kompiluj programy z AVR napisane w C jako Linuxowe programy

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)


[img]http://i.imgur.com/L4bT95a.png[/img]
Sześcioletni laptop, dobrze się trzyma na Archu :)

Offline

 

#2  2014-08-07 12:22:37

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: TestAVR - Kompiluj programy z AVR napisane w C jako Linuxowe programy

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.


[url=http://mhroczny.net][b]strona domowa[/b][/url] || [url=http://dug.net.pl][b]polski portal debiana[/b][/url]

Offline

 

#3  2014-08-07 17:20:10

  Zath - Użytkownik

Zath
Użytkownik
Zarejestrowany: 2014-07-23

Re: TestAVR - Kompiluj programy z AVR napisane w C jako Linuxowe programy

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)


[img]http://i.imgur.com/L4bT95a.png[/img]
Sześcioletni laptop, dobrze się trzyma na Archu :)

Offline

 

#4  2014-08-28 09:21:11

  R0bby - Użytkownik

R0bby
Użytkownik
Zarejestrowany: 2014-06-19

Re: TestAVR - Kompiluj programy z AVR napisane w C jako Linuxowe programy

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.007 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00089 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='18.217.161.27' WHERE u.id=1
0.00069 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.217.161.27', 1732378347)
0.00041 SELECT * FROM punbb_online WHERE logged<1732378047
0.00053 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.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00180 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.00080 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26223
Total query time: 0.00533 s