Hi folks,

I was fortunate enough to resuscitate my DNS323 (Feroceon board) after
flashing a dodgy image to it.

Now I am trying to get it working in RAM first, before writing it to flash.

I have configured CONFIG_SYS_TEXT_BASE to be 0x3000000, I then use
OpenOCD to load the u-boot.bin file to that location, and start it using
"resume 0x3000000".

Unfortunately, it seems to get into an endless loop:

> halt
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x030123a4
MMU: disabled, D-Cache: disabled, I-Cache: disabled
> arm disassemble 0x030123a4
0x030123a4      0xe3130020      TST r3, #0x20
> step
target state: halted
target halted in ARM state due to single-step, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x030123a8
MMU: disabled, D-Cache: disabled, I-Cache: disabled
> arm disassemble 0x030123a8
0x030123a8      0x0afffffc      BEQ 0x030123a0
> step
target state: halted
target halted in ARM state due to single-step, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x030123a0
MMU: disabled, D-Cache: disabled, I-Cache: disabled
> arm disassemble 0x030123a0
0x030123a0      0xe5d03014      LDRB r3, [r0, #0x14]
> resume
> halt
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0x030123a4
MMU: disabled, D-Cache: disabled, I-Cache: disabled
>

It is apparently waiting for something to be equal to 0x20 before
continuing.

How can I determine which u-boot code this is, and what it is waiting for?

I have tried connecting with gdb, but I can only step for a short
distance before it gives problems setting the breakpoint:

0x03000000 in ?? ()
(arm-gdb)stepi

Program received signal SIGINT, Interrupt.
0x03000054 in ?? ()
(arm-gdb)stepi

Program received signal SIGINT, Interrupt.
0x03000058 in ?? ()
(arm-gdb)symbol-file u-boot-standalone-0x3000000
Reading symbols from
/home/rogan/openocd/u-boot-standalone-0x3000000...BFD:
/home/rogan/openocd/u-boot-standalone-0x3000000: invalid string offset
37 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 1 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 94 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 20 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 82 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 67 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 32 >= 0 for section `'
BFD: /home/rogan/openocd/u-boot-standalone-0x3000000: invalid string
offset 53 >= 0 for section `'
done.
(arm-gdb)stepi

Program received signal SIGINT, Interrupt.
reset () at start.S:167
167             orr     r0,r0,#0xd3
Current language:  auto; currently asm
(arm-gdb)stepi

Program received signal SIGINT, Interrupt.
reset () at start.S:168
168             msr     cpsr,r0
(arm-gdb)

Program received signal SIGINT, Interrupt.
reset () at start.S:175
175             bl      cpu_init_crit
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:323
323             mov     r0, #0
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:324
324             mcr     p15, 0, r0, c7, c7, 0   /* flush v3/v4 cache */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:325
325             mcr     p15, 0, r0, c8, c7, 0   /* flush v4 TLB */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:330
330             mrc     p15, 0, r0, c1, c0, 0
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:331
331             bic     r0, r0, #0x00002300     /* clear bits 13, 9:8 (--V- 
--RS) */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:332
332             bic     r0, r0, #0x00000087     /* clear bits 7, 2:0 (B--- 
-CAM) */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:333
333             orr     r0, r0, #0x00000002     /* set bit 2 (A) Align */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:334
334             orr     r0, r0, #0x00001000     /* set bit 12 (I) I-Cache */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:335
335             mcr     p15, 0, r0, c1, c0, 0
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:340
340             mov     ip, lr          /* perserve link reg across call */
(arm-gdb)

Program received signal SIGINT, Interrupt.
cpu_init_crit () at start.S:341
341             bl      lowlevel_init   /* go setup pll,mux,memory */
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:90
90              ldr     r4, =ORION5X_REGS_PHY_BASE
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:94
94              ldr     r3, =0xD0000000
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:95
95              add     r3, r3, #0x20000
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:96
96              str     r4, [r3, #0x80]
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:99
99              add     r3, r4, #0x01000
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:102
102             ldr     r6, =0x00000001
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:103
103             str     r6, [r3, #0x480]
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:106
106             add     r3, r4, #0x31000
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:109
109             ldr     r6, =0x00000030
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:110
110             str     r6, [r3, #0xd00]
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:113
113             add     r3, r4, #0x01000
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:116
116             mov     r6, #0
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:117
117             str     r6, [r3, #0x504]
(arm-gdb)

Program received signal SIGINT, Interrupt.
lowlevel_init () at lowlevel_init.S:118
118             str     r6, [r3, #0x50C]
(arm-gdb)
lowlevel_init () at lowlevel_init.S:118
118             str     r6, [r3, #0x50C]
Could not insert single-step breakpoint at 0x30004c0
(arm-gdb)

And it will not get past line 118, unfortunately.

Does anyone have a suggestion for what else I can try?

Thanks!

Rogan

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to