【问题标题】:jtag debugging on avr with avr-gdb and ddd使用 avr-gdb 和 ddd 在 avr 上进行 jtag 调试
【发布时间】:2020-05-22 10:45:12
【问题描述】:

我尝试在 AVR 8 位微控制器上使用 jtag 进行调试。

贪婪--jtag /dev/ttyUSB0 :4444

ddd lcd --debugger avr-gdb

在我做的会话中:

目标远程 localhost:4444

打破主线

Breakpoint 1 at 0x244: file lcd_test.cpp, line 254.

继续

现在目标停止并且 pc 是正确的:

但如果我查看汇编代码窗口,我的偏移量为 0x800000 并且内容错误:

Dump of assembler code from 0x800244 to 0x800344:

0x00800244:  ldd     r1, Y+16        ; 0x10
0x00800246:  std     Z+8, r0 ; 0x08
0x00800248:  sbc     r8, r16
0x0080024a:  xch     Z, r16
0x0080024c:  .word   0x0018  ; ????
0x0080024e:  eor     r1, r0

在带有 layoit asm 的原生 avr-gdb 中,一切看起来都很好。

知道如何从 DDD 中与 avr-gdb 相关的程序集窗口获取正确的输出吗?

【问题讨论】:

    标签: gdb avr ddd-debugger


    【解决方案1】:

    这是 gdb 中一个非常古老的错误!早在 2011 年就有报道。bug report 包含一个补丁,可以应用于当前的 gdb 9.1 版并按预期工作!

    ddd 也必须打补丁:

    diff -ur ddd-3.3.12/ddd/GDBAgent.C ddd-3.3.12_patched/ddd/GDBAgent.C
    --- ddd-3.3.12/ddd/GDBAgent.C   2009-02-11 18:25:06.000000000 +0100   
    +++ ddd-3.3.12_patched/ddd/GDBAgent.C   2014-05-20 09:49:46.147850710 +0200
    @@ -3200,7 +3200,8 @@
       {
         string end_( end );
         normalize_address(end_);
    -   cmd += ' ';
    +    cmd += ',';
    +    cmd += ' '; 
    cmd += end_;
     }
     return cmd;
    

    使用 avr-gdb 更改 ddd 后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多