hallo ich kann mir vorstellen, dass ihr die fragen schon tausende male gehört habt, aber was bedeutet eigentlich debuggen, programmer, brennen? braucht man das alles um ein µC zu programmieren? Ist denn debuggen und programmieren nicht, dass gleiche? und was ist eigentlich mit dem brennen. programmiere ich nicht ein µC, oder heißt das brennen, dass ich den Code irgendwo im µC brenne, wie eine CD. irgendwie bin ich benebelt. danke im voraus. MFG Tim
Tim schrieb: > aber was bedeutet eigentlich debuggen, programmer, brennen? Der Begriff "debuggen" stammt aus der Zeit der Relaisrechner und heißt so viel wie "Käfer entfernen", weil die lieben Tierchen gerne die Kontaktzungen von Relais blockierten und damit die korrekte Programmausführung behindern. Im übertragenen Sinne wird der Begriff heute für jegliche Fehlerbeseitigung in Programmen verwendet.
Aha...also debuggen überprüft den Code nach Fehlern. und der code, den man nun geschrieben hat, wie kommt auf den mikrocontroller? Indem man ihn brennt oder mit einem programmer oder mit Compiler? Falls es brennt kann man es wieder löschen? MfG Tim
Eine von Menschen geschrieben Textdatei in eine Binärdatei (exe) für den Mikrocontroller umwandeln: Compilieren. Die Binärdatei dann auf den Mikrocontroller programmieren: Flashen oder brennen. (Nur wenn man möchte:) Den Mikrocontroller im Betrieb anhalten und Register und Speicherzellen auslesen oder manipulieren: Debuggen
cccc schrieb: > Eine von Menschen geschrieben Textdatei in eine Binärdatei (exe) für den > Mikrocontroller umwandeln: Compilieren. Die Binärdatei für den µC erstellt erst der Linker. Mit exe hat das leider nichts zu tun - die wäre für den PC. Der Programmer braucht allerdings meist eine Hex-Datei, die er vor dem Schreiben in den Flash-Speicher in die entsprechenden Binärdaten umwandelt, nachdem er die Schreibadresse aus der Datei entnommen hat. Viele Mikrocontroller können sich auch selbst den Flash-Speicher brennen, wenn sie einen Boot-Loader besitzen. Ach ist das alles kompliziert ...
>(Nur wenn man möchte:) >Den Mikrocontroller im Betrieb anhalten und Register und Speicherzellen >auslesen oder manipulieren: Debuggen Was bringt es denn wenn ich mein eigenen Code auf dem µC debugge? dann schreibe ich den Code gleich so hin, wie ich ihn habe möchte.
Tim schrieb: > Was bringt es denn wenn ich mein eigenen Code auf dem µC debugge? dann > schreibe ich den Code gleich so hin, wie ich ihn habe möchte. Der ist gut! Irren ist nun mal menschlich, man macht Fehler beim Programmieren und muss letztere dann beim Debuggen entfernen. Es kann ja auch sein dass man das Datenblatt falsch verstanden hat oder irgendeine Peripherie nicht ganz so funktioniert wie es im Datenblatt steht.
Du siehst dann, ob der Controller das macht was du dir gedacht hast ;) Was oft nicht der Fall ist. Kann sehr hilfreich sein um Fehler im Programm zu finden.
Tim schrieb: >>(Nur wenn man möchte:) >>Den Mikrocontroller im Betrieb anhalten und Register und Speicherzellen >>auslesen oder manipulieren: Debuggen > > Was bringt es denn wenn ich mein eigenen Code auf dem µC debugge? dann > schreibe ich den Code gleich so hin, wie ich ihn habe möchte. Das "Problem" ist: Man programmiert meist in einer höheren Programmiersprache. Diese höheren Programmiersprachen wie z.B. "C" sind Interpretersprachen, d.h. der C-Compiler übersetzt den von dir geschriebenen Code erst in Maschinencode. Fehlerquellen sind logische Fehler bei der Programmeingabe oder unerwartetes Verhalten des vom Compiler generierten Maschinencodes(lernen, sich dem Compiler mitzuteilen, was man denn eigentlich will). Auch kann z.B. der Compiler fehlerhaft sein(das ist aber in seeeehr seltenen Fällen von Belang). Auch beim Assemblerprogrammieren gibt es manchmal logische Fehler, die zu einem vom Programmierer so nicht erwarteten Verhalten führen. Dann gibt es i.A. auch noch Fehler, die erst zur Laufzeit und/oder im Zusammenspiel des Controllers mit externen Bausteinen auftreten und manchmal auch nur bei bestimmter Stimulierung des zu testenden Systems auftreten. Um die Quelle dieser aller genannten Fehler zu entdecken, kann man natürlich -wie von dir vorgeschlagen- weitere Stunden seinen Code durchsehen und den Fehler nicht finden. Oder "herumstochern" und mit der Zeit alles kaputtfrickeln. Beim debuggen kann man sich alle Einzelschritte des Programms, Register, Variablen usw. ansehen und verändern. Damit findet man die genannten Fehlerquellen gezielt, schnell und reproduzierbar. Eine Möglichkeit des Debuggens "für Arme" ist eine simple serielle Schnittstelle. Darüber kann man logging-Daten zu Funktionsaufrufen und bei Bedarf Werte ausgeben und per Einlesen auch manipulieren. Dies ist aber mit Vorsicht zu genießen: Viele Systeme funktionieren mit logging-Ausgaben erstmal prima, ohne logging(nicht mit eincompiliert, "auslieferbare Version der Software") treten wildeste Fehlerszenarien auf, die wegen fehlenden Loggings nun nicht entschlüsselt werden können. So, ne Menge Text, aber ich hoff es ist jetzt etwas klarer. mfg mf
vielen dank erst mal für die zahlreichen Erklärungen. >Beim debuggen kann man sich alle Einzelschritte des Programms, Register, >Variablen usw. ansehen und verändern. Damit findet man die genannten >Fehlerquellen gezielt, schnell und reproduzierbar. das klingt logisch...also kann man doch sagen, das debuggen so eine Art Simulation ist? MFG Tim
Hi >das klingt logisch...also kann man doch sagen, das debuggen so eine Art >Simulation ist? Kann eine sein. Aber es gibt auch die Möglichkeit über eine Debugschnittstelle, z.B. JTAG, direkt im Contoller zu debuggen. MfG Spess
>Kann eine sein. Aber es gibt auch die Möglichkeit über eine >Debugschnittstelle, z.B. JTAG, direkt im Contoller zu debuggen. ist das nicht bisschen riskant? man könnte doch µC zerstören, wenn man irgendwelche falschen befehle eingibt oder? gruß
Tim schrieb: >>Kann eine sein. Aber es gibt auch die Möglichkeit über eine >>Debugschnittstelle, z.B. JTAG, direkt im Contoller zu debuggen. > > ist das nicht bisschen riskant? man könnte doch µC zerstören, wenn man > irgendwelche falschen befehle eingibt oder? Nein, kannst du nicht. Mit einem Programm kann man einen µC nicht zerstören (im Regelfall). Die Dinge, die du in Kinos siehst, dass jemand ein Programm in einen Computer eingibt und daraufhin steigt irgendwo Rauch auf und der Computer röchelt noch vor sich hin, ehe dann seine Stimme ganz langsam und matt wird - das sind Märchen, die Hollywood erfunden hat um etwas Dramatik in den Film zu bringen. Ein Computer arbeitet deine Befehle ab. Und zwar die Befehle, die du hingeschrieben hast. Ob diese hingeschriebenen Befehle dann auch tatsächlich das Verhalten ergeben, welches du dir vorgestellt und welches du erreichen willst, das steht auf einem ganz anderen Blatt. Ein Debugger ermöglicht dir, deinem Progamm bei der Arbeit zuzusehen. Und zwar während es arbeitet. Dies wird benötigt, sofern man das nicht alles am Papier macht, um festzustellen wo man seine Denkfehler gemacht hat und wo sich die gegebenen Befehle nicht mit dem decken, was man eigentlich erreichen möchte. Manchmal ist aus so einer Diskrepanz das Problem ziemlich offensichtlich, manchmal muss man auch etwas um die Ecke denken und manchmal muss man eben auch die genaue Befehlsreihenfole während der Verarbeitung studieren um Hinweise dafür zu erhalten, wo man sich geirrt hat.
danke für die antworten. sehr hilfsbereit :) ich habe mir das AVR Studio 6 zugelegt. Benötige ich denn noch eine andere Software, um dem µC zu flashen bzw. zu brennen? und was ist denn mit "built" gemeint? So viele Wörter nur um ein µC zu "steuern". gruß Tim
Nein AVR Studio 6 sollte genuegen. Debuggen wurde bisher etwas unrichtig erklaert, und bezog sich eher auf den PC, in einem controller kann man nicht den code anhalten und Register anschauen. Dh es gibt schone limitierte Moeglichkeiten. zB AVR DRagon, der aber auf 32k limitiert ist. Und das AVR Studio enthaelt auch einen Simulator fuer die trivialen Faelle. Aber meist ist der Prozess eh kaputt wenn man anhalten wuerde. Das bedeutet, dass meist die externe Umgebung das Timing vorgibt uns man sich daran halten muss. Je nachdem kann etwas zerstoert werden. Wenn zB eine Seilbahn gesteuert wird, darf man nicht einfach anhalten. Deswegen muss man meist im Betrieb debuggen. Die geschieht zB indem man uber das UART kommuniziert, und Zustaende ausliest, resp. setzt. Mein Tip, lass die kleine AVR sein, Unter einem Mega32 macht's keinen Sinn. Die Tinies und der Mega8 sind fuer extreme Kostensparer, die mit 1000er stueckzahlen arbeiten, und jeden Cent sparen muessen. Du machst dir keinen Gefallen mit einem Kleinen.
Oha Tatsaechlich schrieb: > Aber meist ist der Prozess eh kaputt wenn man anhalten wuerde. Das > bedeutet, dass meist die externe Umgebung das Timing vorgibt uns man > sich daran halten muss. Da hast du recht. Das macht die Sache dann noch einen Tick schwieriger. Daher lautet die Empfehlung auch meistens, sich erst mal auf dem PC mit allgemeiner C-Programmierung sich die ersten Hörner abzustossen und erst dann in die µC-Programmierung einzusteigen. Allgemeine Programmierung und grundlegende Basisalgorithmen lernen sich auf dem PC einfach wesentlich besser als auf einem µC, auf dem man meistens erst mal sich selbst um Ausgabekanäle kümmern muss, damit man da überhaupt zur Laufzeit Werte ausgeben kann. Das sind Dinge, die auf dem PC aus dem Stand heraus funktionieren. Ganz abgesehen davon, dass man auf dem PC mit so ziemlich jedem C-Lehrbuch anfangen kann. Die IDE mag unterschiedlich sein, aber die Beispiele funktionieren genau so, wie sie im Buch abgedruckt sind.
Hi >Dh es gibt schone limitierte Moeglichkeiten. zB AVR >DRagon, der aber auf 32k limitiert ist. Hast du ein paar Jahre geschlafen? Das stimmt schon lange nicht mehr. >Mein Tip, lass die kleine AVR sein, Unter einem Mega32 macht's keinen >Sinn. Die Tinies und der Mega8 sind fuer extreme Kostensparer, die mit >1000er stueckzahlen arbeiten, und jeden Cent sparen muessen. Mein Tip: Vergiss diese Dinosaurier. Aktuelle sind ATMega48/88/168/328P/PA oder ATMega164/324/644/1284A/P/PA. MfG Spess
ok wenn ich mir jetzt einen AVR Dragon zulegen möchte und z.B. einen µC von mehr als 32KB Flash. Wäre der AVR Dragon micht in der Lage den µC zu debuggen, flashen wie auch immer? >...zB AVR DRagon, der aber auf 32k limitiert ist.... bist du dir sicher? ich habe hier was ganz anderes gelesen http://www.mikrocontroller.net/articles/AVR-Dragon >Ursprünglich hatte Atmel die Debugmöglichkeiten künstlich auf AVRs mit bis >zu 32 KB Flash-Speicher begrenzt. Mit einer mit AVR Studio 4.18 >mitgelieferten Dragon-Firmware wurde diese künstliche Einschränkung fallen >gelassen. Ist das nun machtbar oder nicht? gruß
Hi >wenn ich mir jetzt einen AVR Dragon zulegen möchte und z.B. einen µC von >mehr als 32KB Flash. Wäre der AVR Dragon micht in der Lage den µC zu >debuggen, flashen wie auch immer? Die Aussage von Oha Tatsaechlich (Gast) ist total veraltet. Der Dragon kann mit allen üblichen AVRs umgehen. Ausnahme sind einige ATTinys die TPI benötigen. >Ist das nun machtbar oder nicht? Ja. MfG Spess
Oha Tatsaechlich schrieb: > Debuggen wurde bisher etwas unrichtig erklaert, und bezog sich eher auf > den PC, in einem controller kann man nicht den code anhalten und > Register anschauen. dann lies nochmal den Wikipedia-Eintrag zu JTAG Tim schrieb: > Ist das nun machtbar oder nicht? es ist machbar
JTAG ist in vielen Faellen nicht brauchbar, denn es liegt oft auf der benoetigten Peripherie. Beim Mega32 lags auf portc, welches man als parallelen Bus verwendet. Anderswo liegt's auf dem ADC. Daher hab ich's noch nie verwendet.
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.