Ankündigung

Einklappen
Keine Ankündigung bisher.

Arduino debuggen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Arduino debuggen?

    Hey,

    hat sich schonmal jemand mit den Debug-Möglichkeiten eines Arduinos (z.B. ATmega32u4) beschäftigt?

    Debug-Ausgaben über die serielle Schnittstelle sind selbstverständlich bekannt. Was aber tun wenn es beim initialisieren von statischen Objektinstanzen schon Probleme gibt? Da knallt's aktuell noch bevor ich die serielle Schnittstelle konfigurieren kann. Durch "scharf auf den Code schauen" finde ich den Fehler nicht. Und Stück für Stück alles auskommentieren ähnelt ein wenig der Suche nach der Nadel im Heuhaufen.

    Da muss es doch andere Möglichkeiten geben?! Was ganz prima wäre, wäre ein ATmega Emulator für den PC der mit direkt die Fehler um die Ohren wirft. Aber so etwas wird's wohl nicht unbedingt geben, denn am PC kann ich ja schlecht die IO-Pins des ATmega nutzen um meinen Code auch ausführbar zu machen.

    Hat jemand ne Idee/Tipp?

    Gruß
    Alex

    #2
    Hab gelesen, dass der 32u4, mit entsprechenden FuseBits und einem passenden JTAG Interface prinzipiell debug'bar ist. Aber was mir noch fehlt ist eine Anleitung für Nicht-Embedded-Hardware-Entwickler :-(

    Kommentar


      #3
      Du wirst wohl einen HW-Debugger brauchen, siehe hier: https://www.mikrocontroller.net/arti...tem_Programmer

      Ohne den Sourcecode des Arduino-Bootloaders wird das aber reichlich kompliziert werden, weil du dann faktisch Reverse Engineering betreiben musst. Ich habe keine Ahnung, ob der frei verfügbar ist. Sorry.

      Max

      Kommentar


        #4
        Arduino ist komplett open source. So auch der Bootloader.

        Einen ISP hab ich ("USBTiny"), aber es muss wohl ein JTAG sein. Der Leonardo ist wohl nicht 100% dafür ausgelegt bzw. "vorbereitet", weswegen sich manche hier wohl schon einen passenden Adapter für ihren JTAG gebastelt haben. Finde alles in allem aber nur oberflächliche Informationen dazu.
        Hatte gehofft dass jemand die Sache exemplarisch einem Arduino mal dokumentiert hat.

        Lade mir gerade das Atmel Studio 7 runter (leider nur für Windows...). Vielleicht finde ich mich da ein wenig zurecht bzw. finde noch ein wenig Hilfestellung.

        Wenn jemand noch mehr brauchbare Quellen kennt: Nur her damit.


        [update]

        Für den UNO hab ich was gefunden was nicht JTAG, sondern DebugWire nutzt: http://www.hilltop-cottage.info/blog...an-avr-dragon/

        Hätte den Vorteil dass ich den ISP Header nutzen kann...

        Müsst ich mir aber erst einen UNO zulegen und noch den "Dragon". Aber der kommt ja eher "nackig" daher. Laut mikrocontroller.net-wiki soll der Atmel ICE empfehlenswert sein?!

        Muss mal noch weiter suchen. So einen Anleitung mit dem Leonardo statt UNO nud JTAG statt DebugWire wäre mir am liebsten.
        Zuletzt geändert von tuxedo; 02.05.2016, 10:34.

        Kommentar


          #5
          So, nach langer recherche gestern hab ich mit dem ATMEL ICE Basic Kit bestellt.
          Der Leonardo (ATmega32u4) kann JTAG, während z.B. der Nano/ProMini mit seinem ATmega328p "nur" DebugWire beherrscht. Für beides braucht man geeignete Hardware. Und nach alles was ich so gelesen hab, lohnt es sich auf jeden Fall "etwas vernünftiges" anzuschaffen. Das hier war das günstigste Angebot das ich finden konnte: https://hbe-shop.de/Art-2407172-ATME...-AVR-BASIC-KIT

          Das FullKit lohnt sich preislich überhaupt nicht. Da ist nur ein kleines Adapterboard für die verschiedenen Pfostensteckergrößen und ein weiteres Kabel mit dabei, kostet dann aber oftmals gleich das doppelte .

          Den Leonardo/Micro muss man so an JTAG anschließen: http://www.ba0sh1.com/jtag-adapter-arduino-micro/

          Bei der Software landet man beim AtmelStudio, oder wie ich gelesen hab, geht auch Eclipse mit avr-gdb?! Muss ich beides noch testen. Eclipse wäre mir als Linux-User natürlich am liebsten. Für Arduino+Eclipse gibt's auch eine angepasste IDE: http://eclipse.baeyens.it/
          Wie es da um die Hardware-Debugger-Möglichkeiten bestellt ist muss ich noch evaluieren.

          Kommentar


            #6
            Kann es dir nur aus der ARM-Cortex-Ecke berichten. Dort wird (auch in kommerziellen Tools) oft der gdb eingesetzt. Funktioniert ziemlich schmerzfrei.
            Wenn du ein Stock Eclipse mit dem avr-gdb verheiraten willst, bist du vermutlich eine Weile beschäftigt (das heißt nicht, dass es nicht geht, es wird nur einen gewissen Einrichtungsaufwand bedeuten). Aber das hat sicher schon mal jemand vorgeturnt.

            Viel Erfolg!

            Max

            Kommentar


              #7
              Fertige Eclipse-Bündel mit GDB gibt's: www.ultragdb.com

              avr-gdb... mal schauen. Hab noch ne Anleitung für die Konsole gefunden:

              http://winavr.sourceforge.net/AVR-GD...RICE_Guide.pdf

              Das werd' ich auch mal (unter Linux) ausprobieren. Muss nur schauen in wie weit der ATMEL ICE da unterstützung findet.

              Kommentar


                #8
                Zitat von tuxedo Beitrag anzeigen
                ...Was ganz prima wäre, wäre ein ATmega Emulator für den PC...
                Das macht doch Atmel Studio. Ich weiss allerdings nicht wie das in Verbindung mit Arduino spielt.

                Michael

                Kommentar


                  #9
                  Hi

                  hast du schonmal das hier probiert
                  http://www.visualmicro.com/page/Ardu...el-Studio.aspx

                  Grüße Ronny

                  Kommentar


                    #10
                    Atmel Studio (AS) hab ich mittlerweile am laufen. Meinen Leonardo hab ich auch schon mit dem debugger mit JTAG verbunden bekommen.
                    Der Fehler steckte aber so blöd im Detail, dass es selbst mit dem Hardware debugger schwer war die Ursache zu finden. Letzten Endes bin ich durch das debuggen nicht direkt auf den Fehler gestoßen, sondern auf einen Hinweis der mich dann nach weiterer Codeanalyse zur richtigen stelle geführt hat.

                    Meine Bedenken dass ein in AS importiertes Arduino Projekt würde sich anders Verhalten konnte ich zerschlagen: In AS kann man die ".elf" Datei die die Arduino IDE beim bauen ins Temp-Verzeichnis legt als Debug-Projekt importieren und kann somit exakt den Code debuggen den die Arduino-IDE auf den Arduino geschoben hat. Prima Sache.

                    Wer versucht was anderes als AS (oder ein Derivat davon wie VisualMicro) zu benutzen (z.B. GDB unter Linux), der hat mit dem ATMEL ICE erstmal ein Problem: avrdude unterstütz den debugger zwar, aber avarice eigentlich noch nicht. Jedoch ist der aktuelle SVN Stand des Projekts schon ein wenig weiter, so dass wenn man avarice aus dem source selbst baut, doch schon den ICE nutzen kann. Muss ich aber selbst noch ausprobieren.

                    Kommentar


                      #11
                      Irgendwie kommt mir das Motto von "Jarhead" in den Sinn. Bei der µC-Entwicklung ist man of doch ziemlich zu Fuß unterwegs.

                      Max

                      Kommentar


                        #12
                        Richtig, neben "Willkommen im Dreck" würde ich aber auch noch "Mühsam ernährt sich das Eichhörnchen" platzieren.

                        Dieser Fehler hätte mich in der PC-Welt keine 2min gekostet. In der Embedded-Welt sind's bereits Tage. Aber gut, bin ja auch noch kein Embedded-Profi und lerne täglich dazu.

                        Kommentar

                        Lädt...
                        X