【问题标题】:Beaglebone Black JTag seggerBeaglebone Black JTag segger
【发布时间】:2014-09-19 06:11:24
【问题描述】:

我正在使用带有 arm-none-eabi 工具链的 Ubuntu linux 下的 Segger J-link 在 Beaglebone Black 上进行裸机编程。

所以现在我每次都会收到错误 No source aviailable for "0x...."

当我暂停骨骼时,我在反汇编中得到关注:

b6e93ce1:   inc %ebx
b6e93ce2:   fdivl -0x4922eb40(%esi)
b6e93ce8:   call 0xdfa019f7
b6e93ced:   add %ch,%bl
b6e93cef:   mov $0x50,%dh
b6e93cf1:   add $0xdd,%al
b6e93cf3:   mov $0xa4,%dh
b6e93cf5:   or %ebp,%ebx
b6e93cf7:   mov $0xcc,%dh
b6e93cf9:   inc %eax
b6e93cfa:   fnsave -0x4922bf2c(%esi)
b6e93d00:   add %al,(%eax)
b6e93d02:   add %al,(%eax)
b6e93d04:   add %al,(%eax)
b6e93d06:   add %al,(%eax)
b6e93d08:   js 0xb6e93d4c
b6e93d0a:   fnsave -0x4922bb54(%esi)
b6e93d10:   xor $0x42,%al
b6e93d12:   fnsave -0x4922cfc0(%esi)
b6e93d18:   mov $0x42,%ah
b6e93d1a:   fnsave -0x4922cf98(%esi)
b6e93d20:   cmp $0x31,%al
b6e93d22:   fnsave -0x4922b92c(%esi)
b6e93d28:   xorb $0xdd,(%edx)
b6e93d2b:   mov $0xe0,%dh
b6e93d2d:   xor %ebx,%ebp
b6e93d2f:   mov $0xf0,%dh

当我开始调试程序时,J-Link 会正确重启骨骼,但随后 linux 会启动,而不是我的程序。

【问题讨论】:

    标签: beagleboneblack bare-metal jtag segger-jlink


    【解决方案1】:

    您可能会遇到几个问题,但最严重的是您使用的是针对 Intel 处理器的 gdb 版本:ebx、esi 和朋友都是 Intel 32 位寄存器。

    你必须使用 arm-none-eabi-gdb,而不是 Ubuntu 自带的 gdb。

    避免混淆的一种简单方法是在脚本中明确使用 arm-none-eabi-gcc、arm-none-eabi-as、arm-none-eabi-ld 和朋友并制作文件。

    J-Links 附带一个 gdb-server 软件,充当 GDB 和 JTAG 硬件之间的中介。一旦 gdb-server 运行,您可以启动调试会话,假设您使用的 GDB 调试器版本与您的目标处理器匹配。

    这显然不是你的情况,因为你的反汇编代码看起来很像 x86 汇编语言代码。这让我觉得您正在使用为 x86 目标编译的 GDB 可执行文件。因此,您确实需要编译一个用于 ARM 目标的 GDB 版本。

    您会在 Linaro 工具链的 bin 目录中找到适合您需要的版本,可以是 WindowsLinux。它的名称将是 arm-none-eabi-gdb.exe (Windows) 或 arm-none-eabi-gdb (Linux)。

    【讨论】:

    • 我用的是segger J-link自带的GDB。
    • 作为记录,我理解您认为您这样做,但是 Segger J-Link 软件没有提供 GDB 这样的东西,即使 Segger 提供 GDB 服务器软件 arm-none -eabi-gdb GDB 可以连接到。同样,您使用 GDB 显示 Intel x86 指令这一事实确实证明您没有使用适合 ARM 的 GDB 调试器,而是适合调试 Intel x86 架构的版本。
    猜你喜欢
    • 2016-04-19
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多