From: Alan C. de A. <ac...@gm...> - 2009-08-31 23:16:24
|
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 |