Hallo Leute! Ich habe zur Zeit ein Problem mit einem Mikrcontroller (denke ich zumindestens). Es tritt folgendes auf. Dem Controller wird über Putty oder Net Cat Befehle zur Steuerung übertragen. Nach einer unbestimmten Anzahl an Eingaben hängt sich der Controller nun auf. Könnte sich jemand von euch vorstellen wo erstmal grob das Problem liegen könnte? Dazu muss ich sagen, dass ich nicht all zu viel Ahnung von Microcontrollern habe. Ich begleite dieses Projekt hauptsächlich nur, da angenommen wurde, dass es sich um ein Netzwerkproblem handelt. Besten Dank :)
Das wird schwierig ohne Details. Grundsätzlich: Stimmt die Baudrate? Läuft die Computerseite noch? Wird irgendwas heiß?
Schnubb schrieb: > habe. Ich begleite dieses Projekt hauptsächlich nur, da > angenommen wurde, dass es sich um ein Netzwerkproblem handelt. auch wenn es Netwerkprobleme sind, darf der µC nicht abstürzen. Also wird es vermutlich doch ein Software fehler sein. Aber ohne Quellcode und angabe des µC wird dir hier niemand weiter helfen können.
Grundsätzlich kann man bei einigermaßen ordnungsgemäßer Schaltung davon ausgehen, dass es am Programm liegt. Da können zum Beispiel Stack und Daten-RAM kollidieren, wenn rekursiv Unterprogramme aufgerufen werden oder zu viele Daten in den RAM geschrieben werden.
schon ein mal vielen Dank für die Antworten. Es wird das AVR32 EVK1100 benutzt. Kann man denn irgendwie überprüfen wieviel Daten in den RAM geschrieben werden?
> Absturz des Controller!?
Bei Abstürzen immer erst die µC-Bergwacht rufen! ;)
SCNR
Wenn Du mit dem EVK1100 arbeitest, dann benutzt Du bestimmt das ASF, oder? Weil Du keine Info hast, wo der Prozessor steht, gehe davon aus, dass Du keinen Debugger benutzt, oder? Denn dann bräuchtest Du nur den Prozessor anhalten und siehst, wo die Gurke liegt. Übrigens siehst damit auch den Füllgrad des Empfangsspeichers im RAM. Also, den UC3A ohne Debugger zu programmieren, ist keine leichte Sache. Finde ich - aber das mag man anders sehen. Wenn Du da Fehler suchst, dann brauchst Du viel Zeit und Ausdauer. Benutzt Du das FREERTOS? -> Weil die Kontext-Switcherrei machte die Fehlersuche um eine Dimension komplizierter. So würde ich ohne Debugger vorgehen (JTAGICE mkII oder CLONE - der soll ja auch recht brauchbar laufen.) Es muß kein ONE! sein. Wenn Du dem Board Nachrichten schickst, mußt Du doch wissen, wo in Deinem Code der Text rausfällt, damit Du darauf reagieren kannst. Benutze die Print_Debug-Funktionen aus einer der anderen Beispiele und schaue über UART / RS323 auf Deinem PC z. B. über Hyperterminal, was und wieviel ankommt. So hättest Du die Möglichkeit über die Coderückverfolgung die Stelle des Aufhängens einzukreisen. Aber das wird sehr mühsam. Aber ehrlich: Schaff Dir einen Debugger an. Der UC3A ist einfach zu groß, um durch aktives Nachdenken die Fehler aufzuspüren. Wie gesagt, ich kenne auch einen Crack, der mich einen Warmduscher nennt. Aber d. h. ja nicht, dass das Programmieren nur den Cracks vorbehalten ist. Viel Erfolg.
> Nach einer unbestimmten Anzahl an Eingaben > hängt sich der Controller nun auf. HAt das System (bestehende sendende Komponente mit Putty, empfangende Controller-Komponente) schon mal vollständig fehlerfrei funktioniert, oder ist dieses ein "initialer" Fehler im Systen (also noch nie richtig gelaufen? Konntest du auch schon mal die Sendende Hardware tauschen, wie verhält es sich dann? Liegen widrge Umgebungsbedingungen zwischen oder am Sender und Empfänger vor (Lange Leitungen, schäbige Kabel, schlechte Spannungsversorgung etc)?
Ich habe mal eine dumme Frage: Wie benutze ich denn den Debugger und woher bekomme ich den? Mein Vorgänger meinte, dass als er fertig war die Software zu schreiben alles funktioniert hat. Dann wurde sie hier in Betrieb genommen und nun hängt es. Aber laut dem, der die Hardware gemacht hat funktioniert alles einwandfrei. Kabel und so habe ich alles schon mal ausgetauscht und auch eine Direktverbindung zu meinem Laptop aufgebaut. Auch mit anderen Pcs funktioniert es nicht.
Watchdog einfügen. Dann resettet sich der Controller wieder, wenn er sich aufhängt. Natürlich keine Lösung auf Zeit.
Andere Frage: Wie ist die Verbindung von Controller und PC? Ich hab hier n ähnliches Problem, habs erst au aufn Controller geschoben, der was aber net. Konstellation hier: Attiny, MAX232, Prolific RS232-USB-Wandler. Letzterer stürzt unregelmäßig ab, also die Komponente bei der ichs am wenigsten erwartet hatte. Andere Idee: Timing-Problem? Wieder am Beispiel von RS232: Angenommen, der Controller hat keinen Quarz, läuft auf 8Mhz und kann nur 9650Baud statt 9600Baud erzeugen. Das funktioniert ne ganze Weile gut, aber irgendwann verliert einer der beiden Partner n paar Bits und das ganze System gibt den Löffel ab. Zum Test wenn du keinen Debugger hast (und die Schaltung verändern kannst) häng doch einfach ne LED hin, die du Blinken lässt. Wenn der Controller abstürzt blinkt da au nix mehr :) Gruß
Schnubb schrieb: > Aber laut dem, der die Hardware gemacht hat funktioniert alles > einwandfrei. Glaub dem kein Wort! Denn offensichtlich funktioniert es ja gerade nicht... > Aber laut dem, der die Hardware gemacht hat funktioniert alles > einwandfrei. Das würde ich meinem Softie auch erst mal sagen. Dann hätte ich zumindest mal bis zum Wochenende Ruhe... ;-) > Mein Vorgänger meinte, dass als er fertig war die Software zu schreiben Noch ein Lügner! Software ist nie fertig. Sie muß nur irgendwann ausgeliefert werden.... > Nach einer unbestimmten Anzahl an Eingaben hängt sich der Controller > nun auf. Das tut er vermutlich nicht. Denn wohin sollte er sich hängen? Also wird z.B. eher irgend ein EMV-Spike ein Byte senden, mit dem die Software nichts anfangen kann und sich verklemmt, und evtl. in alle Ewigkeit auf ein anderes Byte warten, das nie kommt... > Nach einer unbestimmten > Anzahl an Eingaben hängt sich der Controller nun auf. Wie unbestimmt? Nach 10 Tastendrücken oder nach einem Tag? Probiers mal so: Lass den uC nur mit der Spannungsversorgung laufen (sonst kein anderes Kabel angeschlossen) und steck nach 2 Stunden das Übertragungskabel an. Bekommst du dann noch eine Antwort, steckst du diese Kabel wieder aus und konntrollierst 2 Stunden später nochmal...
Auf dem EVK ist eine LED die blinkt, wenn der Controller in Betrieb ist. Wenn ich keine Angaben mache, läuft der Controller auch die ganze Zeit durch. Erst durch Steuerungseingaben hört er auf zu Arbeiten. Dies erkennt man dann auch an der LED. Entweder sie ist aus oder sie leuchtet die ganze Zeit (ich dachte, das liegt daran, in welchem "Zustand" sich die LED befindet, wenn nix mehr geht). Die Verbindung zu dem Controller stellt man mit einem Netzwerkkabel her.
Sag Schnubb, Du hast ein EVK1100. Womit kompilierst Du die Software und wie lädst Du Deine Software runter? Oder dokterst Du nur von außen hilfslos rum und wunderst Dich, dass das drinnen im Prozessor nichts so funktionert, wie Du es Dir vorstellst? Thema Debugger: Regulär kostet der ATJTAGICE mkII so ca 280 - 300 Euro. Wenn man bei den Distributoren aufpasst Ineltek, Spörle, EBV, etc. gibt es gelegentlich Bundel für weniger als die Hälfte + einem Board. Wenn Dir das alles zu teuer sein sollte, gäbe es noch den AVRDRAGON für ca. 50 - 60 Euro. Den muß man auf dem EVK1100 an dem JTAG-Port (polige Stiftleiste anschließen) und natürlich auf der anderen Seite an den PC (USB). Für den DRAGON soll es eine Firmware geben, mit der man den AT32UC3A0512 flashen und debuggen kann. Mittlerweile gibt es das AVRStudio5.0 in der beta Version. Kann man meiden, man ist dazu aber nicht verpflichtet. Übrigens, wenn Dir das mit der "print_debug"-Funktion über RS232 zu schwierig sein sollte, könntest Du eine Textausgabe auf dem LC-Display dip204 machen. Auch dafür gibt es fertige Funktionen, die nur aufgerufen werden müssen und man sieht eine Reaktion. Ein Blickcode über eine Leuchtdiode hilft einem irgendwann nicht mehr weiter. ...
So nach ein bisschen rumstöbern und wenn man die Leute 10 mal fragt habe ich nun dieses Gerät gefunden. Den JTAGICE mkII um die Programme draufzuspielen. Nun stehe ich noch vor der Aufgabe in den Debug-Modus zu kommen und diesen richtig zu bedienen. Kennt da jemand ein gutes Tutorial, wo das für blutige Anfänger Schritt für Schritt erklärt wird? Vielen Dank :)
Beim AVR32Studio (neuste: Studio 2.6 mit der Toolkette 2.4.2) gibt es den RUN-Button. Dabei wird der Code "nur" ohne Debugkontrolle heruntergeladen. Rechts oder links daneben gibt es den Käfer-Button. Wenn Du den drückst, dann wechselt das View in eine andere Darstellung. Der Buildlauf startet, falls Änderungen vorhanden sind, und wenn die Kompilation erfolgreich, startet der Download. Vorher über Scan-Targets den Debugger am PC finden lassen. -> Properties Prozessor und Board auswählen. Das Studio 2.6 will unter Projekt/Properties noch mals ein Target mitgeteilt bekommen. Früher ging das irgendwie automatisch. Viel Spaß beim Eclipse exploren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.