Mục lục:
- Bước 1: Điều kiện về phần mềm
- Bước 2: Cài đặt và cấu hình trình điều khiển
- Bước 3: OpenOCD, Toolchain và Gdb
- Bước 4: Đấu dây và kiểm tra đầu tiên
- Bước 5: Thêm cấu hình gỡ lỗi vào mã Visual Studio
Video: ESP32 - Giải pháp giá rẻ cho gỡ lỗi trong Circruit: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
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
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
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
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
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:
- Complie và tải bản phác thảo của bạn lên bảng
- Khởi động openOCD với các tham số
- Đặt các điểm hãm trong mã ở nơi bạn muốn
- 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)
- Mở bảng gỡ lỗi trong so với mã (Ctrl + Shift + D)
- Chọn trình gỡ lỗi "Arduino-GDB-openOCD", sẽ chỉ khả dụng.
- Nhấn F5 để bắt đầu gỡ lỗi
Đề xuất:
Sử dụng phần mở rộng lồng ngực của Hope để tìm Công việc chưa hoàn chỉnh của Sắc lệnh đền thờ trong cây gia đình của bạn về Tìm kiếm gia đình: 11 bước
Sử dụng phần mở rộng Rương của Hope để Tìm công việc pháp lệnh đền thờ chưa hoàn chỉnh trong cây gia đình của bạn trên Tìm kiếm gia đình: Mục đích của tài liệu hướng dẫn này là để trình bày cách tìm kiếm gia phả của bạn trong Tìm kiếm gia đình cho tổ tiên có công việc pháp lệnh đền thờ chưa hoàn thành bằng cách sử dụng phần mở rộng Rương của hy vọng. Sử dụng Hope's Chest có thể tăng tốc đáng kể tìm kiếm của bạn cho
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
Xây dựng Quản gia / Xe / Xe tăng cho Robot ESP8266 được điều khiển từ xa trị giá $ 15 cho Ios và Android: 4 bước
Xây dựng một Quản gia / Xe / Xe tăng cho Robot ESP8266 được điều khiển từ xa trị giá $ 15 cho Ios và Android: Bạn có ghét đi vào bếp để vẽ một món ăn nhẹ không? Hoặc để có được một thức uống mới? Tất cả điều này có thể được khắc phục với người quản gia điều khiển từ xa trị giá 15 đô la đơn giản này
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Chân máy / Chân máy cho mọi máy ảnh): 6 bước
Làm giá đỡ cho máy ảnh DSLR với giá chưa đến 6 đô la bằng cách sử dụng ống PVC (Monopod / chân máy cho mọi máy ảnh): Có …. Bạn có thể tự làm giá đỡ chỉ với một số ống PVC và chữ T. Nó rất nhẹ … Nó được cân bằng hoàn hảo … Nó rắn chắc … Nó thân thiện với khả năng tùy chỉnh … Tôi là Sooraj Bagal và tôi sẽ chia sẻ kinh nghiệm của mình về giá đỡ máy ảnh này mà tôi đã tạo cho
Các bản sửa lỗi đơn giản cho Timbuktu Commute Bag V.1, dành cho đi xe đạp: 3 bước
Các bản sửa lỗi đơn giản cho Timbuktu Commute Bag V.1, dành cho đi xe đạp: Là một người hâm mộ túi Timbuktu có thói quen đi xe đạp với một chiếc máy tính xách tay trong túi messenger của tôi, khi họ đưa ra chiếc túi đi làm, tôi nghĩ 'hoàn hảo' và đặt mua một chiếc trực tuyến. Tôi đã rất thích điều này sẽ rất tuyệt. Nhưng khi tôi nhận được nó, tôi đã bị sốc và mất tinh thần