Gibt es eine Möglichkeit, einen Programmlauf zu simulieren, bevor er auf das Board gebrannt wird?

24

Programme können manchmal Laufzeitfehler aufweisen. Diese sind manchmal schwer zu finden und können leicht übersehen werden. Gibt es eine Möglichkeit, das Programm zu testen, bevor es tatsächlich auf die Platine gebrannt wird?

Ascheshr
quelle
Könnte
powtac
Möglicherweise haben Sie das Problem, dass der Fehler nur bei einem physischen Arduino auftritt (ich konnte jedoch kein Beispiel nennen).
Polar
@Polar In Bezug auf die Programmlogik kann ich mir nicht vorstellen, wie. Könnten Sie vielleicht ein Beispiel posten ?
Asheeshr

Antworten:

19

Es gibt einige Arduino Simulator-Projekte.

Vielleicht ist einer der ausgereifteren der Virtronics Simulator für Arduino , YouTube-Video hier .

Virtronics Arduino Simulator

Die oben verlinkte Virtronics-Seite listet auch einige andere kostenlose und kostenpflichtige Arduino-Simulatoren auf.

Angesichts des Interesses, das der Arduino hervorruft, wird es wahrscheinlich noch viel mehr solcher Simulatoren geben. Es macht also keinen Sinn, sie alle hier in einer Antwort aufzulisten.

Bemerkenswert ist, dass es auch eine Arduino Simulator iPhone-App gibt : Dies ist keine Empfehlung, da sie noch nicht in Betrieb ist.


Als Randnotiz:

Der Arduino ist an sich ein Prototyping / Experimentierboard. Es ist ideal, um experimentellen Code zu programmieren, zu debuggen, zu ändern und dann frischen Code erneut zu flashen, so oft es einem gefällt . Wenn der Code nicht mehr reagiert, setzen Sie ihn zurück, und führen Sie bei Änderungen einen Neustart durch.

Daher ist der Nutzen der Verwendung eines Simulators, der die verschiedenen realen Zeitvorgaben oder andere Probleme, mit denen eine Anwendung konfrontiert sein könnte, niemals perfekt emulieren kann, fraglich.

Wenn die Kosten des Arduino das Problem sind, gibt es ein paar Möglichkeiten:

Anindo Ghosh
quelle
Vielen Dank für den Link zum Virtronics Simulator!
Powtac
Ja, es ist viel einfacher zu debuggen und neu zu flashen. ATMega328 Flash ist für 10000 Umschreibezyklen ausgelegt. Selbst wenn Sie es 10 Mal am Tag neu schreiben, haben Sie mehr als zwei Jahre Spaß vor sich :-) Eine Menge Spaß für einen Bastler. Wenn Sie sich nur ein bisschen mehr mit dem Thema beschäftigen, können Sie neuere Boards für das Debuggen verwenden. Wenn diese abgenutzt sind (etwa nach 5000 Zyklen?), Können Sie sie für stabile Anwendungen verwenden und ein neues Board für das Debuggen kaufen.
Lorenzo Donati unterstützt Monica
8

Sie können Laufzeitfehler finden, wenn Sie Ihr Programm manuell mit dem verbundenen Arduino durchlaufen und debuggen können ( nachdem Sie Code auf das Arduino heruntergeladen haben). Dies ist in Visual Micro verfügbar, obwohl Visual Studio erforderlich ist. Sie können Haltepunkte setzen, Variablen auswerten und Variablenwerte ändern. Sie können sich auch den Speicher im Laufe der Zeit anzeigen lassen:

Bildbeschreibung hier eingeben


quelle
Sehr gepflegt. Wie ausgereift ist dieses Projekt - oder hat diese IDE Ihrer Erfahrung nach reibungslos funktioniert?
Boardbite
Ich habe es nicht für die Profilerstellung verwendet, und ich habe es nur kurz verwendet, aber es integriert sich ziemlich gut und läuft gut für mich. Ich schätze die Fähigkeit zum Debuggen sehr, ohne auf Serial.print zurückzugreifen
4

Ein Weg, dies zu tun, wäre, ein Wrapper-Programm für den tatsächlichen Code zu erstellen, das alle Eingaben simuliert und Ausgaben akzeptiert (wodurch eine Rückkopplungsschleife erzeugt wird), wie es in der realen Umgebung der Fall ist. Dies würde je nach Art des Programms, Grad der Prüfung und Anzahl der Eingaben einen variablen Aufwand bedeuten.

Denken Sie daran, dass Sie beim Schreiben des Wrapper-Programms einen Black-Box- Ansatz verfolgen sollten .

Bildbeschreibung hier eingeben

Andernfalls Ihr äußeren Code kann nicht das Programm testet so gut wie möglich als den eigentlichen Code im Auge behalten , während der Test - Code zu schaffen Vorspannung kann man Grenzfälle oder Problembereiche zu ignorieren (Dies ist beobachtet worden , geschehen während tun White-Box Tests der ist die Alternative).

Ascheshr
quelle
Kennen Sie Beispiele? Der meiste Arduino-Code, den ich gesehen habe, weist selbst für die Teile, die keine Eingabe / Ausgabe erfordern, keine ordnungsgemäßen Komponententests auf.
Jakob
@ Jakob Normalerweise schreibe ich meinen eigenen Code für das Testen. Es ist praktisch für kleine Projekte.
Asheeshr