Gỡ lỗi AVR trong Linux


7

Vì vậy, tôi đã kết nối ATtiny88 và đang lập trình nó với Dragon AVR bằng ISP. Tôi cũng đã thiết lập chuỗi công cụ xây dựng, sử dụng avrdude và các công cụ gnu avr. Tất cả mọi thứ đang làm việc tuyệt vời.

Bây giờ tôi muốn thực hiện gỡ lỗi trong mạch bằng cách sử dụng gỡ lỗi được quảng cáo cũng được kết nối với ISP và con rồng hỗ trợ. Nhưng tôi sử dụng công cụ nào? Tôi thấy có một avr-gdb, nhưng có vẻ như tôi cần một loại giả lập nào đó, tuy nhiên tôi muốn gỡ lỗi trong mạch trên MCU thực. Điều này có thể không?

Cảm ơn trước.


1
Tôi cũng quan tâm đến cách một người thực sự sử dụng debugwire. Tôi tiếp tục nhìn thấy nó trong hướng dẫn sử dụng cho chip của mình, nhưng vẫn chưa có cơ hội sử dụng nó.
Abbeyatcu

Câu trả lời:


2

Có một cái nhìn vào avarice . Trang nam của nó cũng có vài điều để nói về gỡ lỗi . Tuy nhiên, tôi không biết đó sẽ là tin tốt hay xấu.


1
Bạn nói đúng, có vẻ như avarice hỗ trợ cả gỡ lỗi AVR Dragon và debugWire. Tuy nhiên, có một nhược điểm là để cho phép gỡ lỗi với debugWire, cầu chì pin đặt lại phải thay đổi chế độ debugWire, điều đó có nghĩa là ISP không còn có thể, chỉ còn tùy chọn phản xạ lại thiết bị bằng lập trình điện áp cao. : /
bjarkef

4
Có một cách giải quyết cho vấn đề này: Bạn có thể lập trình lại các cầu chì bằng debugWire / avarice. Vì vậy, sau phiên gỡ lỗi của bạn, chỉ cần đặt lại cầu chì DWEN bằng avarice và bạn đã lấy lại ISP.
markus_b

1

bật gỡ lỗi

cho phép với avrdude (cầu chì cho attiny88):

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xd9:m

biên soạn

  • phải được biên dịch bằng -ggdb hoặc tuyệt vời (--gdb3) nhưng dường như không giúp được với macro
  • không tối ưu

    COMPILE = $ (GCC_PATH) -ggdb3 -Wall -Wextra $ (TỐI ƯU HÓA) -std = gnu11 -flto -mmcu = $ (DEVICE) -DF_CPU = $ (CLOCK)

cần main.hex và main.elf

gỡ lỗi

bắt đầu avarice:

avarice -g -w -P attiny88 :4242

sau đó bắt đầu gdb:

avr-gdb main.elf

và kết nối:

target remote localhost:4242

điểm dừng

chỉ các điểm dừng sw với gỡ lỗi, vì vậy nếu cần điểm dừng sử dụng:

asm('break');

chuyển về chế độ spi / icsp

Lưu ý Chân VTG / VCC (2 trên tiêu đề) phải được kết nối với nguồn cung cấp chip để làm việc này!

avrdude -c dragon_isp -P usb -p attiny88 -v -U hfuse:w:0xdd:m

1
Điều này có vẻ đúng, nhưng vui lòng bao gồm các lệnh có liên quan trong câu trả lời của bạn trước khi liên kết đi xuống.
Dmitry Grigoryev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.