Mục lục:

Cách sử dụng trình gỡ lỗi trên ESP32: 11 bước (có hình ảnh)
Cách sử dụng trình gỡ lỗi trên ESP32: 11 bước (có hình ảnh)

Video: Cách sử dụng trình gỡ lỗi trên ESP32: 11 bước (có hình ảnh)

Video: Cách sử dụng trình gỡ lỗi trên ESP32: 11 bước (có hình ảnh)
Video: Duong ST | Lập Trình ESP32 Trên Arduino IDE - Xử Lý Lỗi Kết Nối Khi Nạp Code | ESP32 2024, Tháng bảy
Anonim
Cách sử dụng trình gỡ lỗi trên ESP32
Cách sử dụng trình gỡ lỗi trên ESP32

Bạn đã bao giờ muốn xem qua mã của mình để xem tại sao nó lại hoạt động như vậy? Theo truyền thống trong các dự án ESP32, bạn sẽ phải thêm câu lệnh in vô tận để thử tìm hiểu chuyện gì đang xảy ra, nhưng có một cách tốt hơn!

Trình gỡ lỗi là một cách để xem những gì đang xảy ra ở các phần cụ thể trong mã của bạn và thử các giá trị biến khác nhau mà không cần biên dịch lại mã của bạn, thông thường đây không phải là thứ có sẵn cho chúng tôi trong các dự án nhúng, nhưng trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng nó trên ESP32.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách thiết lập phần cứng, thiết lập phần mềm và hiển thị một ví dụ đơn giản về cách sử dụng trình gỡ lỗi.

Quân nhu

  • ESP-Prog - Đây là bảng cần thiết để gỡ lỗi

    • Chính xác một cái tôi đã mua *
    • Rẻ hơn $ 5, nhưng tôi chưa thử nghiệm nó *
  • Một ESP32 phá vỡ chân 12, 13, 14, 15

    • Adafruit Feather Huzzah32
    • D1 Mini ESP32 *
  • [TÙY CHỌN] Tấm chắn gỡ lỗi tôi bán trên Tindie

    • Lông Huzzah32
    • D1 Mini ESP32

* = Liên kết liên kết

Bước 1: Xem Video

Image
Image

Tôi có một video về chủ đề này nếu bạn muốn xem nó.

Trên kênh của tôi, tôi thường làm các video dựa trên ESP8266 và ESP32, vì vậy nếu bạn quan tâm đến những video đó, hãy xem nó!

Bước 2: Phần cứng - Bộ phận & Hệ thống dây điện

Phần cứng - Bộ phận & Hệ thống dây điện
Phần cứng - Bộ phận & Hệ thống dây điện
Phần cứng - Bộ phận & Hệ thống dây điện
Phần cứng - Bộ phận & Hệ thống dây điện
Phần cứng - Bộ phận & Hệ thống dây điện
Phần cứng - Bộ phận & Hệ thống dây điện

Để sử dụng trình gỡ lỗi, bạn chỉ cần một ESP-Prog và hầu như bất kỳ bảng ESP32 nào (liên kết đến những thứ này trong bước trước đó)

ESP-Prog:

ESP-Prog là một bo mạch được thiết kế bởi espressif, nhà sản xuất chip ESP32 và ESP8266. Nó kết nối với các chân JTAG của ESP32 để cho phép chúng tôi sử dụng trình gỡ lỗi. Nó cũng có thể được sử dụng để lập trình bo mạch ESP32, nhưng tôi sẽ không trình bày ở đây.

Bảng ESP32:

Về cơ bản, bạn có thể sử dụng bất kỳ bảng ESP32 nào cho việc này khi nó bị hỏng các chân JTAG, là 12, 13, 14 & 15. Tôi đã thử nghiệm cả bảng Adafruit lông Huzzah32 và bảng D1 Mini 32 và cả hai đều hoạt động tốt.

Xin lưu ý rằng bạn có thể sử dụng các chân JTAG trong bản phác thảo của mình với trình gỡ lỗi, ví dụ: đèn LED tích hợp của bo mạch Huzzah32 nằm trên chân 13, vì vậy bạn không thể sử dụng nó trong khi gỡ lỗi.

Hệ thống dây:

Để kết nối ESP-Prog với ESP32, chỉ cần sử dụng hướng dẫn đấu dây như được cung cấp trong hình trên. Kiểm tra sơ đồ đi dây trên bảng ESP32 của bạn nếu bạn không thấy ngay các chân thích hợp vì đôi khi chúng sử dụng một sơ đồ đặt tên khác.

Khiên gỡ lỗi:

Đây là tùy chọn, nhưng tôi bán một số tấm chắn trên Tindie cho Huzzah32 và D1 Mini 32 giúp kết nối ESP-Prog thực sự đơn giản, nó ngắt các chân thích hợp với đầu nối IDC mà bạn có thể sử dụng cáp ruy-băng để kết nối trực tiếp giữa tấm chắn và ESP-Prog

Bước 3: Phần cứng - Thiết lập trình điều khiển

Phần cứng - Thiết lập trình điều khiển
Phần cứng - Thiết lập trình điều khiển
Phần cứng - Thiết lập trình điều khiển
Phần cứng - Thiết lập trình điều khiển
Phần cứng - Thiết lập trình điều khiển
Phần cứng - Thiết lập trình điều khiển

Để sử dụng ESP-prog để gỡ lỗi, chúng ta cần cài đặt các trình điều khiển thích hợp cho nó. PlatformIO cung cấp một số bước cho điều đó ở đây, nhưng tôi sẽ đi qua các bước Windows trong hướng dẫn này.

  1. Tải xuống và cài đặt trình điều khiển FTDI cho ESP-Prog từ đây, cuộn sang phải để tải xuống phiên bản "thiết lập thực thi" để dễ dàng hơn.
  2. Tải xuống và cài đặt công cụ Zadig từ đây, điều này cho phép chúng tôi cài đặt một trình điều khiển chung cần thiết để gỡ lỗi.
  3. Khi cắm ESP-Prog, hãy mở Zadig
  4. Trong ứng dụng Zadig, bên dưới "Tùy chọn", hãy nhấp vào "Liệt kê tất cả thiết bị"
  5. Trình đơn thả xuống trong Zadig bây giờ sẽ được điền, hãy chọn tùy chọn "Dual RS232-HS (Giao diện 0)". Hãy chắc chắn rằng đó là giao diện 0 bạn chọn!
  6. Ở bên phải của mũi tên màu xanh lá cây, "WinUSB" sẽ được chọn, sau đó nhấp vào "Replace Driver"

Khi điều đó hoàn tất, trình điều khiển của bạn sẽ được thiết lập để sử dụng!

Lưu ý: Nếu bạn thay đổi cổng USB đang sử dụng cho ESP-Prog, bạn có thể phải lặp lại các bước 3-6 một lần nữa. Nếu bạn gặp lỗi như trong hình trên khi gỡ lỗi, bạn cần thực hiện lại các bước.

Bước 4: Phần mềm: Cài đặt PlatformIO

Phần mềm: Cài đặt PlatformIO
Phần mềm: Cài đặt PlatformIO
Phần mềm: Cài đặt PlatformIO
Phần mềm: Cài đặt PlatformIO
Phần mềm: Cài đặt PlatformIO
Phần mềm: Cài đặt PlatformIO

PlatformIO là một IDE để phát triển với nhiều khuôn khổ nhúng khác nhau, bao gồm cả hệ sinh thái Arduino. Nó phức tạp hơn để sử dụng so với một cái gì đó như Arduino IDE, nhưng nó rất mạnh và có một số tính năng mà Arduino IDE rất thiếu, chẳng hạn như tự động hoàn thành.

Yêu cầu PlatformIO sử dụng trình gỡ lỗi. Nếu bạn đã quen thuộc với PlatformIO, vui lòng bỏ qua trước một vài bước.

  • Tải xuống và cài đặt Visual Studio Code (VS Code) từ liên kết được cung cấp trên trang web PlatformIO.org
  • Mở VS Code và mở menu tiện ích mở rộng, nút được tô sáng trong hình trên
  • Nhập "platformio" vào tìm kiếm, chọn nó và nhấp vào cài đặt.

Bước 5: Phần mềm: Sử dụng PlatformIO

Phần mềm: Sử dụng PlatformIO
Phần mềm: Sử dụng PlatformIO
Phần mềm: Sử dụng PlatformIO
Phần mềm: Sử dụng PlatformIO
Phần mềm: Sử dụng PlatformIO
Phần mềm: Sử dụng PlatformIO

Sử dụng PlatformIO hơi khác một chút so với sử dụng Arudino IDE, vì vậy trong bước này, chúng ta sẽ chỉ đề cập đến những điều cơ bản của việc lấy một ví dụ chạy trên bảng.

Mở một ví dụ:

  1. Nhấp vào nút Trang chủ trên thanh công cụ PlatformIO (Như trong hình)
  2. Nhấp vào nút "Ví dụ về Dự án"
  3. Chọn ví dụ "Arduino-nháy" trong phần Espressif 32

Điều này sẽ mở ra một dự án nháy mẫu. Bố cục của một PlatformIO khá khác so với một dự án Arduino, vì vậy hãy cùng tìm hiểu những điều cơ bản.

Mã ở đâu?

Mã cho dự án của bạn sẽ được lưu trữ trong thư mục "src", đối với ví dụ về flash, bạn sẽ thấy tệp "flash.cpp", tệp này giống với tệp phác thảo của bạn (.ino) trong dự án Arduino.

Làm cách nào để cấu hình bo mạch của tôi?

Cấu hình cho dự án của bạn được lưu trong tệp "platformio.ini" trong dự án của bạn. Đây thực sự là một trong những điều yêu thích của tôi về PlatformIO so với Arduino IDE, đối với tôi không bao giờ có ý nghĩa khi cài đặt bảng không bị ràng buộc với các bản phác thảo.

Ví dụ.ini chứa các định nghĩa cho nhiều bảng khác nhau, nhưng để giữ cho mọi thứ đơn giản, hãy xóa hai định nghĩa dưới cùng.

Tôi đặt cổng COM ở đâu?

PlatformIO thực sự sẽ tự động cố gắng tìm cổng COM chính xác để sử dụng, vì vậy bạn thực sự có thể thoát khỏi việc không thiết lập bất kỳ điều gì cho việc này. Nhưng nếu bạn có nhiều cổng COM mà bạn sẽ làm khi sử dụng trình gỡ lỗi, tôi nghĩ bạn nên đặt cổng cụ thể mà bạn cần. Bạn có thể xem các thiết bị khác nhau mà mình có bằng cách nhấp vào phần "Thiết bị" trong tab trang chủ và bạn có thể đặt ESP32 của mình trong "platformio.ini" bằng cách thêm cấu hình "upload_port".

Làm cách nào để tải lên mã của tôi?

Nhấp vào nút Tải lên (biểu tượng là một mũi tên trỏ sang phải) và nó sẽ biên dịch và tải lên mã. Bây giờ bạn sẽ có một đèn LED nhấp nháy trên bảng của bạn.

Bước 6: Gỡ lỗi: Da chuối tiềm năng

Gỡ lỗi: Da chuối tiềm năng!
Gỡ lỗi: Da chuối tiềm năng!
Gỡ lỗi: Da chuối tiềm năng!
Gỡ lỗi: Da chuối tiềm năng!
Gỡ lỗi: Da chuối tiềm năng!
Gỡ lỗi: Da chuối tiềm năng!

Đây là điều khiến tôi kinh ngạc khi chuẩn bị và hy vọng sẽ được khắc phục khi bạn dùng thử, nhưng tôi nghĩ điều quan trọng là phải rời khỏi đây.

Tại thời điểm thực hiện hướng dẫn này, phiên bản mới nhất của PlatformIO là 4.3.0 và nó có một lỗi liên quan đến khả năng gỡ lỗi. Rất may, chúng tôi có thể cập nhật lên phiên bản phát triển mới nhất khá dễ dàng để giải quyết vấn đề.

Kiểm tra trên Trang chủ phiên bản của lõi PlatformIO, nếu là "4.3.0", hãy thực hiện các bước sau.

  1. Trên thanh công cụ PlatformIO, nhấp vào biểu tượng thiết bị đầu cuối
  2. Trong loại thiết bị đầu cuối: nâng cấp pio --dev
  3. Mã RestartVS và PlatfromIO sẽ được cập nhật

Bước 7: Gỡ lỗi: Cấu hình

Gỡ lỗi: Cấu hình
Gỡ lỗi: Cấu hình

Chúng tôi cần chỉnh sửa tệp "PlatofrmIO.ini" để cho phép gỡ lỗi, chúng tôi chỉ cần thêm hai thứ vào nó.

debug_tool = esp-prog

Điều này đặt công cụ gỡ lỗi mà chúng tôi đang sử dụng.

debug_init_break = thiết lập tbreak

Đây là một mẹo mà chúng tôi học được từ video của Andress Spiess về gỡ lỗi trên ESP32. Nó yêu cầu trình gỡ lỗi dừng trong quá trình thiết lập ứng dụng của chúng tôi.

Bước 8: Gỡ lỗi: Bắt đầu gỡ lỗi

Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi
Gỡ lỗi: Bắt đầu gỡ lỗi

Trước khi bắt đầu, chúng tôi sẽ thực hiện một thay đổi nhỏ đối với bản phác thảo để giúp bạn dễ dàng chứng minh những gì bạn có thể làm với việc gỡ lỗi.

  1. Tạo một biến mới, "int delayTime = 1000;" bên ngoài bất kỳ phương thức nào, điều này sẽ làm cho nó trở thành một biến toàn cục.
  2. Thay thế số bên trong các lệnh gọi trễ trong vòng lặp bằng biến mới này: delay (delayTime);

Tải mã lên bảng một lần nữa, sau đó để bắt đầu gỡ lỗi, trong thanh công cụ, hãy nhấp vào "Chạy" rồi "Bắt đầu gỡ lỗi"

Bạn sẽ thấy mọi thứ di chuyển trong cửa sổ terminal, nhưng ngay cả khi điều đó nói rằng nó đã thành công, nếu bạn nhấp vào "Bảng điều khiển gỡ lỗi", bạn sẽ thấy nó vẫn đang hoạt động, sẽ mất vài giây để hoàn thành.

Nếu mọi thứ diễn ra như mong đợi, bạn sẽ thấy trình gỡ lỗi dừng lại khi bắt đầu thiết lập.

Bước 9: Gỡ lỗi: Cách sử dụng cơ bản

Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản
Gỡ lỗi: Cách sử dụng cơ bản

Hãy trình bày một số điều cơ bản về những gì bạn có thể làm với trình gỡ lỗi

Tạo các điểm ngắt:

Điểm ngắt là một điểm trong mã của bạn nơi bạn muốn trình gỡ lỗi dừng lại. Để tạo điểm ngắt, hãy nhấp vào bên trái của số dòng. Dưới dạng demo, hãy thêm điểm ngắt vào dòng đầu tiên trong phương thức vòng lặp.

Điều hướng điểm ngắt:

Để di chuyển giữa điểm ngắt hoặc chuyển sang dòng mã tiếp theo, bạn có thể sử dụng các công cụ sẽ xuất hiện trên đầu màn hình. Nhấn nút "tiếp tục" (trông giống như nút phát) để di chuyển điểm ngắt mà chúng ta vừa tạo bên trong vòng lặp.

Đồng hồ có thể thay đổi:

Đồng hồ biến cho phép bạn theo dõi giá trị của các biến khi trình gỡ lỗi bị dừng tại một điểm ngắt. Để thêm đồng hồ biến mới, bạn có thể nhấp vào biểu tượng +, sau đó chỉ cần nhập tên của biến. Dưới dạng bản trình diễn, hãy nhập biến mà chúng tôi đã thêm trong bước trước "delayTime"

Trình xem biến:

Bạn cũng có thể xem tất cả các biến và giá trị của chúng có sẵn tại điểm ngắt hiện tại của bạn. Để minh họa điều này, Nếu bạn nhìn vào phần "Toàn cầu", bạn sẽ tìm thấy biến "Thời gian trễ".

Chỉnh sửa giá trị của các biến:

Bạn cũng có thể chỉnh sửa giá trị của các biến và nó sẽ có hiệu lực ngay lập tức đối với hành vi mã của bạn. Để chứng minh điều này, hãy nhấp vào biến delayTime trong phần Variable Viewer và thay đổi giá trị thành "100". Để hiển thị điều này đang hoạt động, hãy tắt điểm ngắt bên trong vòng lặp bằng cách nhấp lại vào bên trái của số dòng. Nhấn nút tiếp tục trên thanh điều hướng điểm ngắt. Đèn LED trên ESP32 của bạn bây giờ sẽ nhấp nháy nhanh hơn nhiều so với trước đây.

Bước 10: Khắc phục sự cố

Xử lý sự cố
Xử lý sự cố

Tôi phát hiện ra trong quá trình thử nghiệm của mình, một số lần tôi không thể tải lên ESP32 khi nó được kết nối với ESP-prog và tôi không thể tìm ra lý do tại sao điều này xảy ra, vì hầu hết thời gian tôi có thể tải lên mà không có có vấn đề gì không. Tôi thấy rằng tôi chỉ có thể ngắt kết nối ESP32 và ESP-Prog, tải mã lên ESP32 và sau đó kết nối lại chúng và nó sẽ hoạt động tốt.

Bước 11: Tuyên bố

Tôi nghĩ rằng đây là một công cụ thực sự thú vị để thêm vào hộp công cụ để giúp tìm ra những gì đang diễn ra bên trong dự án của bạn.

Tôi rất muốn nghe nếu bạn thấy điều này hữu ích !. Vui lòng cho tôi biết trong phần nhận xét bên dưới hoặc tham gia cùng tôi và một loạt nhà sản xuất khác trên máy chủ Discord của tôi, nơi chúng ta có thể thảo luận về chủ đề này hoặc bất kỳ nhà sản xuất nào khác liên quan đến chủ đề mà bạn có, mọi người thực sự hữu ích ở đó vì vậy đó là một nơi tuyệt vời để treo ngoài.

Tôi cũng muốn gửi lời cảm ơn to lớn đến các Nhà tài trợ Github của tôi, những người đã giúp hỗ trợ những gì tôi làm, tôi thực sự đánh giá cao điều đó. Nếu bạn chưa biết, Github đang đối sánh các khoản tài trợ cho năm đầu tiên, vì vậy nếu bạn thực hiện tài trợ, họ sẽ khớp 100% trong vài tháng tới. Cảm ơn vì đã đọc!

Đề xuất: