Mục lục:

ESP32 - Giải pháp giá rẻ cho gỡ lỗi trong Circruit: 5 bước
ESP32 - Giải pháp giá rẻ cho gỡ lỗi trong Circruit: 5 bước

Video: ESP32 - Giải pháp giá rẻ cho gỡ lỗi trong Circruit: 5 bước

Video: ESP32 - Giải pháp giá rẻ cho gỡ lỗi trong Circruit: 5 bước
Video: ESP32 | Lập Trình WebServer Trên ESP32 Giải Thích Từng Dòng Code 2024, Tháng mười một
Anonim
ESP32 - Giải pháp giá rẻ cho gỡ lỗi Circruit
ESP32 - Giải pháp giá rẻ cho gỡ lỗi Circruit

Xin chào, Trong hướng dẫn này được mô tả cách thiết lập bộ điều hợp JTAG giá rẻ dựa trên chip FTDI 2232HL, với mã trực quan và addon arduino.

- Mô-đun FTDI 2232HL với đầu nối USB bắt đầu từ 8 đô la trên ebay và không cần phần mềm trả phí. Đây là giải pháp tuyệt vời cho những người có sở thích không muốn chi hơn 50 đô la cho bộ chuyển đổi JTAG profesionall.

- Bộ điều hợp này có thể được sử dụng để gỡ lỗi các nền tảng khác như ESP8266, ARM, AVR và nhiều nền tảng khác. Một số cấu hình phụ thuộc vào nền tảng đích, hướng dẫn này chỉ bao gồm thiết lập cho ESP32.

- Nếu bạn đã sở hữu một số bộ điều hợp JTAG, bạn có thể sử dụng nó khi nó được openOCD hỗ trợ, chỉ cần bắt đầu openocd với tệp cấu hình khác nhau dựa trên loại bộ điều hợp jtag của bạn.

- platform.io có thể giúp bạn thiết lập dễ dàng hơn, nhưng gỡ lỗi chỉ được hỗ trợ trong phiên bản chuyên nghiệp trả phí.

- Hoạt động với hầu hết các mô-đun ESP32. (ví dụ wemos lolin 32 giá rẻ)

- bộ điều hợp jtag này cũng hoạt động với linux, nhưng cá nhân tôi đã không thử nghiệm nó.

Bước 1: Điều kiện về phần mềm

Arduino IDE phiên bản 1.8 hoặc mới hơn. Phiên bản cửa hàng Windows không được hỗ trợ. Bạn phải sử dụng phiên bản trình cài đặt cổ điển có thể được tải xuống từ trang Arduino chính thức

Mã studio trực quan của Microsoft

Các tiện ích bổ sung này cho mã studio trực quan là bắt buộc

  • Arduino
  • Gỡ lỗi gốc

Tôi cũng khuyên bạn nên cài đặt addon này để kích hoạt intelisense cho C / C ++

C / C ++

Trong sách hướng dẫn này, tôi sẽ sử dụng 2 thư mục làm việc:

D: / devel / ESP32 / tools / - ở đây tôi đã đặt tất cả các công cụ

C: / Users / xxxxx / Documents / Arduino / YourProject / - đây là thư mục có bản phác thảo

bạn có thể đặt các tệp của mình ở bất kỳ nơi nào khác nếu bạn muốn, chỉ cần đừng quên cập nhật tất cả các tham chiếu với đường dẫn thực tế của bạn.

Bước 2: Cài đặt và cấu hình trình điều khiển

Cài đặt và cấu hình trình điều khiển
Cài đặt và cấu hình trình điều khiển
Cài đặt và cấu hình trình điều khiển
Cài đặt và cấu hình trình điều khiển
Cài đặt và cấu hình trình điều khiển
Cài đặt và cấu hình trình điều khiển

Ngay cả khi windows tự động phát hiện FT2232 theo mặc định, trình điều khiển mặc định của windows không đủ cho tất cả các tính năng nâng cao và cần tải xuống và cài đặt trình điều khiển từ trang FTDI

Khi cài đặt đúng trình điều khiển, bạn sẽ thấy mô-đun FT2232 của mình trong trình quản lý thiết bị không chỉ là 2 cổng nối tiếp mà còn là "Bộ chuyển đổi nối tiếp USB A" và "Bộ chuyển đổi nối tiếp USB B"

Bước thứ hai là thay đổi trình điều khiển cho một kênh của bộ chuyển đổi của chúng tôi. Tải xuống công cụ zadig từ https://zadig.akeo.ie/. Nếu tôi hiểu chính xác, công cụ này liên kết trình điều khiển winUSB với thiết bị FTDI cho phép giao tiếp mức độ thấp giữa openOCD và thiết bị USB.

Trong công cụ zadig, trong menu "Tùy chọn", chọn "Hiển thị tất cả thiết bị", sau đó bạn sẽ thấy bộ điều hợp của mình trong danh sách các thiết bị khả dụng. Chọn "Dual RS232-HS (Giao diện 0)" sau đó chọn trình điều khiển thay thế "WinUSB v6.1.xxxx" và nhấp chuột vào nút thay thế trình điều khiển.

Khi bạn kết nối bộ điều hợp của mình với cổng USB khác của máy tính, bạn cần phải thay đổi cài đặt trình điều khiển thông qua công cụ zadig một lần nữa, nếu không thì openOCD sẽ không tìm thấy bộ điều hợp của bạn.

Bước 3: OpenOCD, Toolchain và Gdb

OpenOCD, Toolchain và Gdb
OpenOCD, Toolchain và Gdb

1. Open OCD là công cụ để gỡ lỗi trong vòng, một mặt nó nói chuyện với chip, mặt kia nó cung cấp máy chủ gdb nơi trình gỡ lỗi (máy khách) có thể kết nối. Tải xuống openOCD cho ESP32 từ https://github.com/espressif/openocd-esp32/releases và giải nén nó vào thư mục D: / devel / ESP32 / tools

2. chỉnh sửa tệp cấu hình openOCD:

esp-wroom-32.cfg

Đường dẫn đầy đủ đến tệp này là:

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

Trong tệp này, bạn có thể đặt tốc độ truyền thông bằng cách thay đổi tham số "adapter_khz". Ví dụ "adapter_khz 8000" có nghĩa là 8Mhz.

Mặc định là 20MHz và nó có thể quá cao nếu bạn đang sử dụng dây jumper hoặc breadboard dài hơn. Tôi khuyên bạn nên bắt đầu ở 1Mhz và nếu mọi thứ ổn, hãy chuyển sang tốc độ cao hơn, đối với tôi 8Mhz hoạt động đáng tin cậy.

minimodule.cfg

Đường dẫn đầy đủ đến tệp này là: D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg

Nếu tôi hiểu chính xác, thì minimodule chính hãng được định giá quá cao với FT 2232 do FTDI sản xuất và chỉ có sự khác biệt giữa miniodule chính hãng và mô-đun rẻ tiền hoặc chip trần có sẵn trên thị trường là mô tả USB mặc định. open OCD đang tìm kiếm bộ điều hợp jtag dựa trên mô tả thiết bị, cũng cần điều chỉnh bố cục init.

Mô-đun giá rẻ có mô tả "Dual RS232-HS". Nếu bạn không chắc chắn về mô tả thiết bị của mình, bạn có thể kiểm tra nó trong trình quản lý thiết bị -> thuộc tính thiết bị -> chi tiết tab -> giá trị của thuộc tính "Mô tả thiết bị báo cáo xe buýt"

Nội dung của minimodule.cfg sẽ giống như ví dụ bên dưới, các dòng bắt đầu bằng # có thể bị xóa.

interface 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 0x000b ftdi_layout_ST20 -dnal

esp32.cfg

Đường dẫn đầy đủ đến tệp này là:

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

Nối 2 dòng sau vào cuối esp32.cfg. Nếu không có sửa đổi này, việc thêm các điểm hãm sẽ không hoạt động.

# Điểm ngắt hw. Khi chúng tôi có bản đồ bộ nhớ, chúng tôi cũng có thể cho phép phần mềm bps.gdb_breakpoint_override cứng

3. Tải xuống và cài đặt chuỗi công cụ xtensa-esp32-elf - chuỗi công cụ này chứa trình gỡ lỗi dòng lệnh (ứng dụng khách gdb) rất quan trọng để gỡ lỗi hoạt động từ bất kỳ IDE đồ họa nào. Có thể tải xuống chuỗi công cụ trần từ trang web espressif, phần "Thiết lập thay thế"

Bước 4: Đấu dây và kiểm tra đầu tiên

Hệ thống dây điện và thử nghiệm đầu tiên
Hệ thống dây điện và thử nghiệm đầu tiên
Hệ thống dây điện và thử nghiệm đầu tiên
Hệ thống dây điện và thử nghiệm đầu tiên

Kết nối mô-đun FT2322 với ESP. Tôi khuyên bạn nên sử dụng dây càng ngắn càng tốt. Các dòng dữ liệu JTAG KHÔNG BỊ CHÉO như Rx / Tx trên uart!

Đối với thử nghiệm sau, tôi khuyên bạn nên tải lên bản phác thảo ví dụ nhấp nháy hoặc một số bản phác thảo khác có thể cho biết khi nào CPU đang chạy hay không bằng cách nhấp nháy đèn LED hoặc tiếng bíp hoặc ghi vào bảng điều khiển nối tiếp.

Bắt đầu openOCD bằng lệnh sau

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

Thao tác này sẽ bắt đầu openOCD và nếu mọi thứ đều ổn, bạn sẽ thấy trong đầu ra dòng lệnh có các dòng sau:

Thông tin: tốc độ đồng hồ 8000 kHzInfo: JTAG tap: esp32.cpu0 tap / device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1) Info: JTAG tap: esp32.cpu1 tap / device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)

Ngoài ra quá trình openocd sẽ lắng nghe trên cổng TCP 3333

Mở thiết bị đầu cuối mới và bắt đầu dòng lệnh gdb client bằng cách làm theo comand

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

Chờ một chút và khi thiết bị đầu cuối gdb sẽ sẵn sàng, hãy viết từng lệnh sau một

mục tiêu từ xa: 3333mon đặt lại tạm dừng tiếp tục

lệnh đầu tiên mở kết nối đến máy chủ gỡ lỗi openocd, lệnh thứ hai sẽ dừng thực thi chương trình trên ESP và đèn LED sẽ ngừng nhấp nháy, tiếp tục khôi phục thực thi chương trình và đèn LED sẽ bắt đầu nhấp nháy trở lại.

Bước 5: Thêm cấu hình gỡ lỗi vào mã Visual Studio

Thêm cấu hình gỡ lỗi vào mã Visual Studio
Thêm cấu hình gỡ lỗi vào mã Visual Studio

Tôi cho rằng tại thời điểm đó, bạn đã định cấu hình mã studio trực quan và addon arduino một cách chính xác và bạn có thể xác minh và tải bản phác thảo của mình lên bảng. Nếu không, hãy xem một số hướng dẫn cách cấu hình mã visual studio và arduino, ví dụ trên trang này

Để gỡ lỗi hoạt động cần thiết phải chỉ định thư mục đầu ra xây dựng. Dưới thư mục phác thảo của bạn có thư mục (ẩn).vscode, trong đó là tệp arduino.json. thêm vào tệp này dòng sau:

"đầu ra": "BuildOutput /"

chạy xác minh hoặc tải lên và kiểm tra lại thư mục phác thảo của bạn, phải có thư mục BuildOutput mới và bên trong có tệp.elf mở rộng. tệp elf rất quan trọng để gỡ lỗi.

Cài đặt trình gỡ lỗi có trong tệp launcher.json. Tạo tệp này với nội dung sau hoặc bạn có thể sao chép tệp này từ dự án mẫu đính kèm. Đừng quên điều chỉnh dòng 26 và xác định đường dẫn chính xác đến tệp.elf dự án của bạn.

{// Sử dụng IntelliSense để tìm hiểu về các thuộc tính có thể có. // Di chuột để xem mô tả về các thuộc tính hiện có. // Để biết thêm thông tin, hãy truy cập: https://go.microsoft.com/fwlink/?linkid=830387 "phiên bản": "0.2.0", "cấu hình": [{"name": "Arduino-GDB-openOCD "," loại ":" cppdbg "," yêu cầu ":" khởi chạy "," chương trình ":" $ {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 halt "}, {// biến thể động" text ":" file c: / Users / xxxxx / Documents / Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf "// biến thể tĩnh //" text ":" tệp c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Thông tin \: [ w / d \.] *: / phần cứng "," khởi chạyCompleteCommand ":" execute-continue "," filterStderr ": true," args ": }]}

Cách bắt đầu gỡ lỗi:

  1. Complie và tải bản phác thảo của bạn lên bảng
  2. Khởi động openOCD với các tham số
  3. Đặt các điểm hãm trong mã ở nơi bạn muốn
  4. Sau khi thiết lập tất cả các điểm hãm, hãy đảm bảo rằng bạn đã mở tệp.ino chính của dự án. (hoặc đường dẫn mã cứng đến tệp.elf trong khởi chạy.json)
  5. Mở bảng gỡ lỗi trong so với mã (Ctrl + Shift + D)
  6. Chọn trình gỡ lỗi "Arduino-GDB-openOCD", sẽ chỉ khả dụng.
  7. Nhấn F5 để bắt đầu gỡ lỗi

Đề xuất: