Assembly bf561的coreb上的运行时汇编程序错误
谁能给我一些关于如何解决此错误的线索: 运行时,我的程序在裸机coreb上崩溃:Assembly bf561的coreb上的运行时汇编程序错误,assembly,embedded,runtime,processor,bare-metal,Assembly,Embedded,Runtime,Processor,Bare Metal,谁能给我一些关于如何解决此错误的线索: 运行时,我的程序在裸机coreb上崩溃: ..... COREB: test mdct36 COREB: execption 24 addr 3c0746c COREB: coreb dump stack
.....
COREB: test mdct36
COREB: execption 24 addr 3c0746c
COREB: coreb dump stack
COREB: found fp: ff700c1c
COREB: call frame 0 -12 feb05676
COREB: call frame 0 -11 00000000
COREB: call frame 0 -9 00000000
COREB: call frame 0 -8 ff700bec
.....
调试时,此汇编程序代码行处于原因中
A1 = A0 = 0 || R3 = [P5++] || [I0--] = R1;
有什么问题吗
以下是使用.align 8从gdb进行调试的详细信息: 就在之前:
p5 0x3c0b792 0x3c0b792
r3 0x8006a830 -2147047376
i0 0xff700c98 -9433960
r1 0xd73f1a2 225702306
sp 0xff700ca0 0xff700ca0
fp 0xff700cf4 0xff700cf4
a0x 0xffffffff -1
a0w 0xf1a24400 -241024000
a1x 0x0 0
a1w 0xd735c00 225664000
例外情况后:
r0 *value not available*
for all registers value
使用建议的.align 4,它会以相同的方式崩溃。寄存器值为:
坠机前:
p5 0x3c0b78e 0x3c0b78e
r3 0x10b57ee7 280329959
i0 0xff700c98 -9433960
sp 0xff700ca0 0xff700ca0
fp 0xff700cf4 0xff700cf4
a0x 0xffffffff -1
a0w 0xefb55880 -273328000
a1x 0x0 0
a1w 0xeed8880 250448000
坠机后:
同上:
(
试图使用错误的内存地址读/写内存?可能,这是我从VDSP转换为GCC裸机的代码。所以我不确定跟踪这一点的最佳方法。有什么想法吗?嗯,调试代码如何?真的很有趣,实际上你看到的是,通过调试代码,我发现了问题所在。我需要知道的是为什么…你需要充分理解该算法,找出它访问预期范围之外内存的位置/原因。这里的调试应该有所帮助。
gdb) break +1
Breakpoint 3 at 0x3c0722c: file signal_processing/mdct36.asm, line 213.
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0xff600000 in ?? ()
(gdb) bt
#0 0xff600000 in ?? ()
(gdb) info registers
r0 *value not available*
r1 *value not available*
r2 *value not available*
r3 *value not available*