Czy jest jakiś sposób na symulację uruchomienia programu przed wypaleniem go na płycie?
24
Czasami programy mogą mieć błędy w czasie wykonywania. Czasami są trudne do znalezienia i można je łatwo przeoczyć. Czy jest jakiś sposób przetestowania programu przed wypaleniem go na płycie?
Strona Virtronics, do której prowadzi powyższy link, zawiera także kilka innych symulatorów Arduino, zarówno bezpłatnych, jak i płatnych.
Biorąc pod uwagę zainteresowanie, jakie wywołuje Arduino, istnieje prawdopodobnie więcej takich symulatorów, więc nie ma sensu próbować wymieniać je wszystkie w odpowiedzi tutaj.
Warto zauważyć, że istnieje także aplikacja Arduino Simulator na iPhone'a : nie jest to zalecenie, ponieważ nie widziałem jej jeszcze w działaniu.
Na marginesie:
Arduino samo w sobie jest płytką do prototypowania / eksperymentowania. Jest idealny do programowania eksperymentalnego kodu, debugowania go, modyfikowania, a następnie ponownego flashowania świeżego kodu, prawie tyle razy, ile się chce . Jeśli kod się zawiesi, zresetuj go i wprowadź ponownie zmiany ze zmianami.
Dlatego wątpliwe jest, czy użycie symulatora, który nigdy nie będzie w stanie idealnie naśladować różnych rzeczywistych czasów lub innych problemów, z którymi może się spotkać aplikacja.
Jeśli chodzi o koszt Arduino, istnieje kilka opcji:
Niedrogie klony Arduino Nano w serwisie eBay - Mam kilka płyt Meduino Nano Enhancement , działają one doskonale, a ich cena nie przekracza 10 USD, w tym wysyłka na cały świat:
Stwórz własne Arduino - strona Arduino przeprowadzi Cię przez proces tworzenia płyty na desce , która nawet nie wymaga lutowania!
Dziękujemy za udostępnienie linku do symulatora Virtronics!
powtac
Tak, debugowanie i ponowne flashowanie jest znacznie łatwiejsze. Flash ATMega328 jest oceniany na 10000 cykli przepisywania, więc nawet jeśli przepisujesz go 10 razy każdego dnia, masz przed sobą ponad dwa lata zabawy :-) Dość dużo zabawy dla hobbysty. Jeśli jesteś nieco bardziej w to zaangażowany, możesz użyć nowszych płyt do debugowania, a kiedy zaczną się zużywać (powiedzmy po 5000 cyklach?), Możesz użyć ich do stabilnych aplikacji i kupić nową do debugowania.
Lorenzo Donati wspiera Monikę
8
Błędy czasu wykonania można znaleźć, jeśli można ręcznie przejść przez program z podłączonym Arduino i debugować ( po pobraniu kodu do Arduino). Jest to dostępne w Visual Micro, chociaż wymaga Visual Studio. Możesz ustawiać punkty przerwania, oceniać zmienne i zmieniać wartości zmiennych. Możesz także uzyskać wizualizację pamięci w czasie:
Bardzo schludny. Jak dojrzały jest ten projekt - a raczej czy IDE działa płynnie w twoim doświadczeniu?
boardbite
Nie użyłem go do profilowania i użyłem go tylko krótko, ale integruje się całkiem dobrze i działa dobrze dla mnie. Naprawdę doceniam możliwość debugowania bez uciekania się do Serial.print
4
Jednym ze sposobów na to byłoby utworzenie programu otoki dla rzeczywistego kodu, który symuluje wszystkie dane wejściowe i akceptuje dane wyjściowe (tworząc w ten sposób pętlę sprzężenia zwrotnego) zgodnie z rzeczywistym środowiskiem. Wymagałoby to różnego wysiłku w zależności od rodzaju programu, stopnia testowania i liczby danych wejściowych.
Pamiętaj, że pisząc program otoki, powinieneś postępować zgodnie z podejściem „ czarnej skrzynki” .
W przeciwnym razie Twój zewnętrzny kod może nie przetestować programu tak dobrze, jak to możliwe, ponieważ pamiętając o rzeczywistym kodzie podczas tworzenia kodu testowego, możesz stronić od ignorowania przypadków granicznych lub obszarów problemowych (zaobserwowano to podczas wykonywania Testów White-Box, które jest alternatywą).
Czy znasz jakieś przykłady? Większość kodu Arduino, który widziałem, nie ma odpowiednich testów jednostkowych nawet dla części, które nie wymagają wejścia / wyjścia.
Jakob
@Jakob Zwykle piszę własny kod do testów. Jest to praktyczne w przypadku małych projektów.
Odpowiedzi:
Istnieje kilka projektów Arduino Simulator.
Być może jednym z bardziej dojrzałych jest Virtronics Simulator for Arduino , film na YouTube tutaj .
Strona Virtronics, do której prowadzi powyższy link, zawiera także kilka innych symulatorów Arduino, zarówno bezpłatnych, jak i płatnych.
Biorąc pod uwagę zainteresowanie, jakie wywołuje Arduino, istnieje prawdopodobnie więcej takich symulatorów, więc nie ma sensu próbować wymieniać je wszystkie w odpowiedzi tutaj.
Warto zauważyć, że istnieje także aplikacja Arduino Simulator na iPhone'a : nie jest to zalecenie, ponieważ nie widziałem jej jeszcze w działaniu.
Na marginesie:
Arduino samo w sobie jest płytką do prototypowania / eksperymentowania. Jest idealny do programowania eksperymentalnego kodu, debugowania go, modyfikowania, a następnie ponownego flashowania świeżego kodu, prawie tyle razy, ile się chce . Jeśli kod się zawiesi, zresetuj go i wprowadź ponownie zmiany ze zmianami.
Dlatego wątpliwe jest, czy użycie symulatora, który nigdy nie będzie w stanie idealnie naśladować różnych rzeczywistych czasów lub innych problemów, z którymi może się spotkać aplikacja.
Jeśli chodzi o koszt Arduino, istnieje kilka opcji:
źródło
Błędy czasu wykonania można znaleźć, jeśli można ręcznie przejść przez program z podłączonym Arduino i debugować ( po pobraniu kodu do Arduino). Jest to dostępne w Visual Micro, chociaż wymaga Visual Studio. Możesz ustawiać punkty przerwania, oceniać zmienne i zmieniać wartości zmiennych. Możesz także uzyskać wizualizację pamięci w czasie:
źródło
Jednym ze sposobów na to byłoby utworzenie programu otoki dla rzeczywistego kodu, który symuluje wszystkie dane wejściowe i akceptuje dane wyjściowe (tworząc w ten sposób pętlę sprzężenia zwrotnego) zgodnie z rzeczywistym środowiskiem. Wymagałoby to różnego wysiłku w zależności od rodzaju programu, stopnia testowania i liczby danych wejściowych.
Pamiętaj, że pisząc program otoki, powinieneś postępować zgodnie z podejściem „ czarnej skrzynki” .
W przeciwnym razie Twój zewnętrzny kod może nie przetestować programu tak dobrze, jak to możliwe, ponieważ pamiętając o rzeczywistym kodzie podczas tworzenia kodu testowego, możesz stronić od ignorowania przypadków granicznych lub obszarów problemowych (zaobserwowano to podczas wykonywania Testów White-Box, które jest alternatywą).
źródło