首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Beaglebone黑色JTag分段器

Beaglebone黑色JTag分段器
EN

Stack Overflow用户
提问于 2014-07-28 13:10:48
回答 1查看 1.4K关注 0票数 0

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

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

当我暂停骨骼时,我在反汇编过程中得到以下结果:

代码语言:javascript
复制
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启动了,而不是我的程序启动了。

EN

回答 1

Stack Overflow用户

发布于 2014-09-08 11:52:09

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

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

避免混淆的一种简单方法是在脚本和make文件中显式使用arm-none eabi- avoid、arm-none eabi-as、arm-none eabi-ld和friends。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24988760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档