Πίνακας περιεχομένων:

ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit: 5 βήματα
ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit: 5 βήματα

Βίντεο: ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit: 5 βήματα

Βίντεο: ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit: 5 βήματα
Βίντεο: Controlling 2 DC Motors using ESP32 and L298N Motor driver 2024, Ιούλιος
Anonim
ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit
ESP32 - Φτηνή λύση για εντοπισμό σφαλμάτων Circruit

Γεια σας, Σε αυτό το εκπαιδευτικό περιγράφεται πώς να ρυθμίσετε τον φθηνό προσαρμογέα JTAG βασισμένο στο τσιπ FTDI 2232HL, με οπτικό κώδικα και πρόσθετο arduino.

- Ενότητα FTDI 2232HL με υποδοχή USB που ξεκινά από 8 $ στο ebay και δεν απαιτείται λογισμικό επί πληρωμή. Αυτή είναι μια εξαιρετική λύση για χομπίστες που δεν θέλουν να ξοδέψουν 50 $+ σε προσαρμογέα profesionall JTAG.

- Αυτός ο προσαρμογέας θα μπορούσε να χρησιμοποιηθεί για εντοπισμό σφαλμάτων σε άλλες πλατφόρμες όπως ESP8266, ARM, AVR και πολλές άλλες. Κάποια διαμόρφωση εξαρτάται από την πλατφόρμα προορισμού, αυτή η οδηγία καλύπτει μόνο τις ρυθμίσεις για το ESP32.

- Εάν έχετε ήδη κάποιο προσαρμογέα JTAG, μπορείτε να το χρησιμοποιήσετε όταν υποστηρίζεται από το openOCD, απλώς ξεκινήστε το openocd με διαφορετικό αρχείο διαμόρφωσης με βάση τον τύπο του προσαρμογέα jtag.

- Το platform.io μπορεί να διευκολύνει τη ρύθμιση για εσάς, αλλά ο εντοπισμός σφαλμάτων υποστηρίζεται μόνο σε επαγγελματική έκδοση επί πληρωμή.

- Λειτουργεί με τις περισσότερες μονάδες ESP32. (για παράδειγμα φθηνό wemos lolin 32)

- αυτός ο προσαρμογέας jtag πρέπει να λειτουργεί και με το linux, αλλά προσωπικά δεν τον δοκίμασα.

Βήμα 1: Προϋποθέσεις λογισμικού

Arduino IDE έκδοση 1.8 ή νεότερη. Η έκδοση του Windows store δεν υποστηρίζεται. Πρέπει να χρησιμοποιήσετε την κλασική έκδοση του προγράμματος εγκατάστασης που μπορείτε να κατεβάσετε από την επίσημη σελίδα Arduino

Κωδικός Microsoft visual studio

Αυτά τα πρόσθετα για κώδικα visual studio είναι υποχρεωτικά

  • Arduino
  • Εγγενής εντοπισμός σφαλμάτων

Σας συνιστώ επίσης να εγκαταστήσετε αυτό το πρόσθετο που επιτρέπει την intelisense για C/C ++

C/C ++

Σε αυτό το εγχειρίδιο θα χρησιμοποιήσω 2 φακέλους εργασίας:

D: / devel / ESP32 / tools / - εδώ έχω τοποθετήσει όλα τα εργαλεία

C: / Users / xxxxx / Documents / Arduino / YourProject / - αυτός είναι φάκελος με σκίτσο

μπορείτε να τοποθετήσετε τα αρχεία σας οπουδήποτε αλλού, αν θέλετε, απλώς μην ξεχάσετε να ενημερώσετε όλα τα νομίσματα με την πραγματική διαδρομή σας.

Βήμα 2: Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης

Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης
Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης
Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης
Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης
Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης
Εγκατάσταση και διαμόρφωση προγράμματος οδήγησης

Ακόμα κι αν τα παράθυρα εντοπίζουν αυτόματα το FT2232 από προεπιλογή, τα προεπιλεγμένα προγράμματα οδήγησης των Windows δεν αρκούν για όλες τις εκ των προτέρων λειτουργίες και είναι απαραίτητο να κάνετε λήψη και εγκατάσταση προγραμμάτων οδήγησης από την τοποθεσία FTDI

Όταν εγκαθίσταται το σωστό πρόγραμμα οδήγησης, θα πρέπει να δείτε τη μονάδα FT2232 στη διαχείριση συσκευών όχι μόνο ως 2 σειριακές θύρες αλλά και ως "σειριακός μετατροπέας USB A" και "σειριακός μετατροπέας USB B"

Το δεύτερο βήμα είναι η αλλαγή προγράμματος οδήγησης για ένα κανάλι του μετατροπέα μας. Κατεβάστε το εργαλείο zadig από τη διεύθυνση https://zadig.akeo.ie/. Αν καταλαβαίνω σωστά, αυτό το εργαλείο συνδέει το πρόγραμμα οδήγησης winUSB με τη συσκευή FTDI που επιτρέπει την επικοινωνία χαμηλού επιπέδου μεταξύ συσκευής openOCD και USB.

Στο εργαλείο zadig, στο μενού "Επιλογές", επιλέξτε "Εμφάνιση όλων των συσκευών" και, στη συνέχεια, θα πρέπει να δείτε τον προσαρμογέα σας στη λίστα των διαθέσιμων συσκευών. Επιλέξτε "Dual RS232-HS (Interface 0)" και στη συνέχεια επιλέξτε πρόγραμμα οδήγησης αντικατάστασης "WinUSB v6.1.xxxx" και κάντε κλικ στο κουμπί αντικατάστασης προγράμματος οδήγησης.

Όταν συνδέετε τον προσαρμογέα σας σε διαφορετική θύρα USB του υπολογιστή σας, είναι απαραίτητο να αλλάξετε ξανά τις ρυθμίσεις του προγράμματος οδήγησης μέσω του εργαλείου zadig, διαφορετικά το openOCD δεν θα βρει τον προσαρμογέα σας.

Βήμα 3: OpenOCD, Toolchain και Gdb

OpenOCD, Toolchain και Gdb
OpenOCD, Toolchain και Gdb

1. Το Open OCD είναι εργαλείο για τον εντοπισμό σφαλμάτων κυκλώματος, από τη μία πλευρά μιλάει για τσιπ από την άλλη πλευρά παρέχει διακομιστή gdb όπου μπορεί να συνδεθεί το πρόγραμμα εντοπισμού σφαλμάτων (πελάτης). Κατεβάστε το openOCD για ESP32 από τη διεύθυνση https://github.com/espressif/openocd-esp32/releases και ξεπακετάρετε το στο φάκελο D: / devel / ESP32 / tools

2. Επεξεργασία αρχείων διαμόρφωσης openOCD:

esp-wroom-32.cfg

Η πλήρης διαδρομή προς αυτό το αρχείο είναι:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / board / esp-wroom-32.cfg

Σε αυτό το αρχείο μπορείτε να ρυθμίσετε την ταχύτητα επικοινωνίας αλλάζοντας την παράμετρο "adapter_khz". Για παράδειγμα, "adapter_khz 8000" σημαίνει 8Mhz.

Η προεπιλογή είναι 20MHz και μπορεί να είναι πολύ υψηλή εάν χρησιμοποιείτε καλώδια μεγαλύτερου βραχυκυκλωτήρα ή πλάκα ψωμιού. Σας συνιστώ να ξεκινήσετε με 1Mhz και αν όλα είναι εντάξει, πηγαίνετε σε υψηλότερη ταχύτητα, για μένα τα 8Mhz λειτουργούν αξιόπιστα.

minimodule.cfg

Η πλήρης διαδρομή προς αυτό το αρχείο είναι: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Αν κατάλαβα καλά, το γνήσιο minimodule είναι υπερτιμημένος πίνακας φρένου με FT 2232 που κατασκευάζεται από την FTDI και η μόνη διαφορά μεταξύ του γνήσιου μίνιμοδου και του φθηνού module ή του γυμνού τσιπ που διατίθεται στην αγορά είναι η προεπιλεγμένη περιγραφή USB. Το ανοικτό OCD αναζητά προσαρμογέα jtag με βάση την περιγραφή της συσκευής, πρέπει επίσης να ρυθμιστεί η διάταξη init.

Η φθηνή μονάδα έχει περιγραφή "Dual RS232-HS". Εάν δεν είστε βέβαιοι για την περιγραφή της συσκευής σας, μπορείτε να την ελέγξετε στη διαχείριση συσκευών -> ιδιότητες συσκευής -> λεπτομέρειες καρτέλας -> αξία ιδιοκτησίας "Περιγραφή συσκευής που αναφέρεται σε διαύλου"

Το περιεχόμενο του minimodule.cfg πρέπει να μοιάζει με το παρακάτω παράδειγμα, οι γραμμές ξεκινούν με # μπορούν να διαγραφούν.

διασύνδεση ftdi #ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "Dual RS232 -HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init 0x0008 0000000 0x000

esp32.cfg

Η πλήρης διαδρομή προς αυτό το αρχείο είναι:

D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / target / esp32.cfg

Προσθέστε τις ακόλουθες 2 γραμμές στο τέλος του esp32.cfg. Χωρίς αυτήν την τροποποίηση, η προσθήκη σημείων φρένων δεν θα λειτουργήσει.

#Δύναμη σημεία διακοπής. Μόλις έχουμε έναν χάρτη μνήμης, μπορούμε επίσης να επιτρέψουμε το λογισμικό bps.gdb_breakpoint_override hard

3. Κατεβάστε και εγκαταστήστε την εργαλειοθήκη xtensa-esp32-elf-αυτή η εργαλειοθήκη περιέχει εντοπισμό σφαλμάτων γραμμής εντολών (πρόγραμμα-πελάτης gdb), ο οποίος είναι ζωτικής σημασίας για να λειτουργεί ο εντοπισμός σφαλμάτων από οποιοδήποτε γραφικό IDE. Η γυμνή εργαλειοθήκη μπορεί να μεταφορτωθεί από τον ιστότοπο espressif, ενότητα "Εναλλακτική ρύθμιση"

Βήμα 4: Καλωδίωση και πρώτη δοκιμή

Καλωδίωση και πρώτη δοκιμή
Καλωδίωση και πρώτη δοκιμή
Καλωδίωση και πρώτη δοκιμή
Καλωδίωση και πρώτη δοκιμή

Συνδέστε τη μονάδα FT2322 με το ESP. Συνιστώ να χρησιμοποιείτε όσο το δυνατόν πιο σύντομα καλώδια. Εάν είστε νέοι στο JTAG, μην ξεχνάτε ότι το TDI του προσαρμογέα θα μεταβεί στο TDI του τσιπ, επίσης το TDO του προσαρμογέα θα μεταβεί στο TDO του τσιπ. Οι γραμμές δεδομένων JTAG ΔΕΝ ΠΕΡΝΟΝΤΑΙ όπως το Rx/Tx στο uart!

Για την επόμενη δοκιμή, συνιστώ να ανεβάσετε ένα παράδειγμα σκίτσο αναλαμπής ή κάποιο άλλο σκίτσο που μπορεί να υποδεικνύει πότε λειτουργεί ή όχι η CPU, αναβοσβήνοντας LED ή μπιπ ή γράφοντας σε σειριακή κονσόλα.

Ξεκινήστε το openOCD ακολουθώντας την εντολή

D: / devel / ESP32 / tools / openocd-esp32 / bin / openocd.exe-s D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts -f interface/ftdi/minimodule.cfg -f board /esp-wroom-32.cfg

Αυτό θα ξεκινήσει το openOCD και αν όλα είναι εντάξει θα πρέπει να δείτε στη γραμμή εντολών η έξοδος να περιέχει τις ακόλουθες γραμμές:

Πληροφορίες: ταχύτητα ρολογιού 8000 kHz Πληροφορίες: JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Πληροφορίες: JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), μέρος: 0x2003, ver: 0x1)

Επίσης, η διαδικασία openocd θα ακούσει στη θύρα TCP 3333

Ανοίξτε νέο τερματικό και ξεκινήστε τον πελάτη γραμμής εντολών gdb ακολουθώντας το comand

D: / devel / ESP32 / tools / xtensa-esp32-elf / bin / xtensa-esp32-elf-gdb.exe

Περιμένετε ένα δευτερόλεπτο και πότε θα είναι έτοιμο το τερματικό gdb γράψτε τις ακόλουθες εντολές μία προς μία

στοχευμένο τηλεχειριστήριο: συνεχίστε τη διακοπή επαναφοράς 3333 μηνών

Η πρώτη εντολή ανοίγει τη σύνδεση με τον διακομιστή εντοπισμού σφαλμάτων openocd, η δεύτερη θα σταματήσει την εκτέλεση προγράμματος στο ESP και η λυχνία LED θα σταματήσει να αναβοσβήνει, θα συνεχίσει να επαναφέρει την εκτέλεση προγράμματος και η λυχνία LED θα πρέπει να αρχίσει να αναβοσβήνει ξανά.

Βήμα 5: Προσθέστε τη Διαμόρφωση εντοπισμού σφαλμάτων στον κώδικα του Visual Studio

Προσθήκη διαμόρφωσης εντοπισμού σφαλμάτων στον κώδικα του Visual Studio
Προσθήκη διαμόρφωσης εντοπισμού σφαλμάτων στον κώδικα του Visual Studio

Υποθέτω ότι σε εκείνο το σημείο έχετε ήδη διαμορφώσει κώδικα visual studio και arduino addon σωστά και μπορείτε να επαληθεύσετε και να ανεβάσετε το σκίτσο σας στον πίνακα. Εάν όχι, ελέγξτε μερικές οδηγίες για τη διαμόρφωση του κώδικα του στούντιο και του arduino, για παράδειγμα σε αυτήν τη σελίδα

Για να λειτουργήσει το πρόγραμμα εντοπισμού σφαλμάτων είναι απαραίτητο να καθορίσετε το φάκελο εξόδου. Κάτω από το φάκελο σκίτσων υπάρχει (κρυφός) φάκελος.vscode, όπου βρίσκεται το αρχείο arduino.json. προσθέστε σε αυτό το αρχείο την ακόλουθη γραμμή:

"output": "BuildOutput/"

εκτελέστε επαλήθευση ή μεταφόρτωση και ελέγξτε ξανά το φάκελο σκίτσων, θα πρέπει να υπάρχει νέος φάκελος BuildOutput και μέσα σε αυτό αρχείο με επέκταση.elf. elf αρχείο είναι ζωτικής σημασίας για τον εντοπισμό σφαλμάτων.

Οι ρυθμίσεις εντοπισμού σφαλμάτων βρίσκονται στο αρχείο laun.json. Δημιουργήστε αυτό το αρχείο με το ακόλουθο περιεχόμενο ή μπορείτε να αντιγράψετε αυτό το αρχείο από το συνημμένο παράδειγμα έργου. Μην ξεχάσετε να προσαρμόσετε τη γραμμή 26 και να ορίσετε τη σωστή διαδρομή προς το αρχείο.elf του έργου σας.

{// Χρησιμοποιήστε το IntelliSense για να μάθετε σχετικά με πιθανά χαρακτηριστικά. // Τοποθετήστε το δείκτη του ποντικιού για να δείτε περιγραφές των υπαρχόντων χαρακτηριστικών. // Για περισσότερες πληροφορίες, επισκεφθείτε: https://go.microsoft.com/fwlink/?linkid=830387 "έκδοση": "0.2.0", "διαμορφώσεις": [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" start "," program ":" $ {file} "," cwd ":" $ {workspaceRoot}/BuildOutput/"," MIMode ":" gdb ", "targetArchitecture": "arm", "miDebuggerPath": "D: /devel/ESP32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb.exe", "debugServerArgs": "", " customLaunchSetupCommands ": [{" text ":" target remote: 3333 "}, {" text ":" mon reset stop stop "}, {// δυναμική παραλλαγή" text ":" αρχείο c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// στατική παραλλαγή //" κείμενο ":" αρχείο c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Πληροφορίες \: [w / d \.]*: / hardware "," launchCompleteCommand ":" exec-continue "," filterStderr ": true," args ": }]}

Πώς να ξεκινήσετε τον εντοπισμό σφαλμάτων:

  1. Συμμορφώστε και ανεβάστε το σκίτσο σας στον πίνακα
  2. Ξεκινήστε το openOCD με παραμέτρους
  3. Ορίστε σημεία φρένων στον κώδικα όπου θέλετε
  4. Αφού ρυθμίσετε όλα τα σημεία φρένων, βεβαιωθείτε ότι έχετε ανοίξει το κύριο αρχείο.ino του έργου σας. (ή διαδρομή σκληρού κώδικα για το αρχείο.elf στο laun.json)
  5. Άνοιγμα πίνακα εντοπισμού σφαλμάτων σε κώδικα vs (Ctrl + Shift + D)
  6. Επιλέξτε το πρόγραμμα εντοπισμού σφαλμάτων "Arduino-GDB-openOCD", θα πρέπει να είναι διαθέσιμο μόνο.
  7. Πατήστε F5 για να ξεκινήσετε τον εντοπισμό σφαλμάτων

Συνιστάται: