Hi,
I found half of issue, I was configuring the board to boot from 16 bit
NAND flash, but it is a 8 bit one.
Now I can see the internal buffer memory and it is exactly equal to my binary.
This is the disassembled u-boot-nand.bin:
u-boot-nand.bin: file format binary
Disassembly of section .data:
00000000 <.data>:
0: eafffffe b 0x0
4: e59ff014 ldr pc, [pc, #20] ; 0x20
8: e59ff010 ldr pc, [pc, #16] ; 0x20
c: e59ff00c ldr pc, [pc, #12] ; 0x20
10: e59ff008 ldr pc, [pc, #8] ; 0x20
14: e59ff004 ldr pc, [pc, #4] ; 0x20
18: e59ff000 ldr pc, [pc, #0] ; 0x20
1c: e51ff004 ldr pc, [pc, #-4] ; 0x20
20: a7ec0100 strgeb r0, [ip, r0, lsl #2]!
24: 12345678 eornes r5, r4, #125829120 ; 0x7800000
28: 12345678 eornes r5, r4, #125829120 ; 0x7800000
2c: 12345678 eornes r5, r4, #125829120 ; 0x7800000
30: 12345678 eornes r5, r4, #125829120 ; 0x7800000
34: 12345678 eornes r5, r4, #125829120 ; 0x7800000
38: 12345678 eornes r5, r4, #125829120 ; 0x7800000
3c: 12345678 eornes r5, r4, #125829120 ; 0x7800000
40: a7ec0000 strgeb r0, [ip, r0]!
44: a7ec0000 strgeb r0, [ip, r0]!
48: a7ec0800 strgeb r0, [ip, r0, lsl #16]!
4c: a7ec0804 strgeb r0, [ip, r4, lsl #16]!
50: e10f0000 mrs r0, CPSR
54: e3c0001f bic r0, r0, #31 ; 0x1f
58: e38000d3 orr r0, r0, #211 ; 0xd3
5c: e129f000 msr CPSR_fc, r0
60: eb000015 bl 0xbc
This is the gdb output:
$ arm-elf-gdb
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux".
(gdb) target remote :3333
Remote debugging using :3333
0xd8000000 in ?? ()
(gdb) x 0xd8000000
0xd8000000: 0xeafffffe
(gdb)
0xd8000004: 0xe59ff014
(gdb)
0xd8000008: 0xe59ff010
(gdb)
0xd800000c: 0xe59ff00c
(gdb)
0xd8000010: 0xe59ff008
(gdb)
0xd8000014: 0xe59ff004
(gdb)
0xd8000018: 0xe59ff000
(gdb)
0xd800001c: 0xe51ff004
(gdb)
0xd8000020: 0xa7ec0100
(gdb)
0xd8000024: 0x12345678
(gdb)
0xd8000028: 0x12345678
(gdb)
0xd800002c: 0x12345678
(gdb)
0xd8000030: 0x12345678
(gdb)
0xd8000034: 0x12345678
(gdb)
0xd8000038: 0x12345678
(gdb)
0xd800003c: 0x12345678
(gdb)
0xd8000040: 0xa7ec0000
(gdb)
0xd8000044: 0xa7ec0000
(gdb)
0xd8000048: 0xa7ec0800
(gdb)
0xd800004c: 0xa7ec0804
(gdb)
0xd8000050: 0xe10f0000
(gdb)
0xd8000054: 0xe3c0001f
(gdb)
0xd8000058: 0xe38000d3
(gdb)
0xd800005c: 0xe129f000
(gdb)
0xd8000060: 0xeb000015
Unfortunately I can't change the PC:
(gdb) set $pc=0xd8000050
Value being assigned to is no longer active.
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
0xd8000000 in ?? ()
(gdb) si
0xd8000000 in ?? ()
Infinite loop detected
Is there any other way to setup the PC to right position?
Best Regards,
Alan
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development