All of lore.kernel.org
 help / color / mirror / Atom feed
From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] Help Request - Command parsing, find_cmd (), possible linker script problem
Date: Sun, 21 Sep 2008 09:27:46 +1000	[thread overview]
Message-ID: <48D586F2.2010505@gmail.com> (raw)
In-Reply-To: <48D5013D.10906@gmail.com>

Thanks for such a quick response Jerry. Your suggestion fixed one
problem, but it still doesn't work

Jerry Van Baren wrote:
> Graeme Russ wrote:
>> Hi All,
>>

> 
> Aaargh, you printed %x, not 0x%x.  That really threw me on the printout
> of sizeof(cmd_tbl_t).
> 
> 
> 0x18 == 24

How embarrassing - I've changed it to %i

>>
>> b) The loop never completes since cmdtp never actually equals
>> &__u_boot_cmd_end
> 
> Alignment padding problems are preventing it (see above).
> 

Fixed with . = ALIGN(4) (ALIGN(2) made no difference)

I've added a few more debugs in the loop (and my startup code) with
the following results:


U-Boot 2008.10-rc2-00002-gd6aaec1-dirty (Sep 20 2008 - 14:37:52)



U-Boot code: 38040000 -> 3805158F  data: 00400000 -> 00400A57

        BSS: 00400A58 -> 00404463 stack: 00404464 -> 0040C463

DRAM Configuration:

Bank #0: 00000000 64 MB

Bank #1: 04000000 64 MB

Bank #2: 08000000  0 kB

Bank #3: 08000000  0 kB

*** Warning - bad CRC, using default environment



In:    serial

Out:   serial

Err:   serial

Serck Controls eNET


autoscript => do_autoscript()        @ 0x38040886

bdinfo     => do_bdinfo()            @ 0x380408e7


<snip>

imls       => do_imls()              @ <undefined>

<snip>

help       => do_help()              @ 0x38043713

?          => do_help()              @ 0x38043713

boot > help


[RUN_COMMAND] cmd[00400ccc]="help"

[PROCESS_SEPARATORS] help

token: "help"

Processing Macros...

[PROCESS_MACROS] INPUT len 4: "help"

[PROCESS_MACROS] OUTPUT len 4: "help"

Extracting Arguments...

parse_line: "help"

parse_line: nargs=1

Looking up Command...

Searching for Command 'help'

Command Table Start : 0x00000540

Command Table End   : 0x00000870

sizeof(int)         : 4

sizeof(cmd_tbl_t)   : 24

cmdtp             = 0x00000540

cmdtp->name       = 0xffffffff

cmdtp->maxargs    = -262145

cmdtp->repeatable = -33562625

cmdtp->cmd        = 0xf7ffffff

cmdtp->usage      = 0xffff5fff

cmdtp->help       = 0x7bffff7f


<snip>


cmdtp             = 0x00000858

cmdtp->name       = 0xfeffffff

cmdtp->maxargs    = -513

cmdtp->repeatable = -1

cmdtp->cmd        = 0xffffffff

cmdtp->usage      = 0xffffffff

cmdtp->help       = 0xffffffff

Searching complete

Unknown command 'help' - try 'help'

boot > 


The address dumps of each command are simply achieved by:

	printf("autoscript => do_autoscript()        @ 0x%08lx\n", (ulong)do_autoscript);
<snip>
/*	printf("imls       => do_imls()              @ 0x%08lx\n", (ulong)do_imls); */
	printf("imls       => do_imls()              @ <undefined>\n");

For some reason do_imls always results in an undefined reference
error reported by the linker, even though it ends up in the command
list at 0x600 as shown in u-boot.map

                0x0000000000000540                . = ALIGN (0x4)
                0x0000000000000540                __u_boot_cmd_start = .

.u_boot_cmd     0x0000000000000540      0x330 load address 0x000000003805268e
 *(.u_boot_cmd)
 .u_boot_cmd    0x0000000000000540       0x18 common/libcommon.a(cmd_autoscript.o)
                0x0000000000000540                __u_boot_cmd_autoscr
 .u_boot_cmd    0x0000000000000558       0x18 common/libcommon.a(cmd_bdinfo.o)
                0x0000000000000558                __u_boot_cmd_bdinfo
 .u_boot_cmd    0x0000000000000570       0x30 common/libcommon.a(cmd_boot.o)
                0x0000000000000588                __u_boot_cmd_reset
                0x0000000000000570                __u_boot_cmd_go
 .u_boot_cmd    0x00000000000005a0       0x78 common/libcommon.a(cmd_bootm.o)
                0x00000000000005a0                __u_boot_cmd_bootm
                0x00000000000005e8                __u_boot_cmd_iminfo
                0x00000000000005d0                __u_boot_cmd_bootd
                0x00000000000005b8                __u_boot_cmd_boot
                0x0000000000000600                __u_boot_cmd_imls
 .u_boot_cmd    0x0000000000000618       0x18 common/libcommon.a(cmd_console.o)


So now it is terminating the loop correctly, but it looks like the
command table contains nothing garbage

I thought the load address 0x000000003805268e might be a hint, so I
did a dump of u-boot.bin:

0x3805268e - 0x3804000 = 0x1268E = 75406

graeme at devel:~/Source/U-Boot/v2008.10-rc2$ xxd -s 75406 -l 160 u-boot.bin 
001268e: 90e0 0438 0200 0000 0000 0000 8608 0438  ...8...........8
001269e: 98e0 0438 bae0 0438 a4e1 0438 0100 0000  ...8...8...8....
00126ae: 0100 0000 e708 0438 abe1 0438 0000 0000  .......8...8....
00126be: 2be2 0438 1000 0000 0100 0000 c509 0438  +..8...........8
00126ce: 2ee2 0438 5de2 0438 b8e2 0438 0100 0000  ...8]..8...8....
00126de: 0000 0000 63c9 0438 bee2 0438 0000 0000  ....c..8...8....
00126ee: 7ee6 0438 1000 0000 0100 0000 5a0c 0438  ~..8........Z..8
00126fe: 84e6 0438 b2e6 0438 c301 0538 0100 0000  ...8...8...8....
001270e: 0100 0000 3a0c 0438 5ae7 0438 0000 0000  ....:..8Z..8....
001271e: 87e7 0438 0100 0000 0100 0000 3a0c 0438  ...8........:..8

Doesn't seem to match (maybe I'm barking up the wrong tree)

Any ideas?

Regards,

Graeme

  reply	other threads:[~2008-09-20 23:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-20  6:56 [U-Boot] Help Request - Command parsing, find_cmd (), possible linker script problem Graeme Russ
2008-09-20 13:57 ` Jerry Van Baren
2008-09-20 23:27   ` Graeme Russ [this message]
2008-09-21  2:22     ` Graeme Russ

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48D586F2.2010505@gmail.com \
    --to=graeme.russ@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.