[U-Boot] ARM926ejs Porting: uboot.lds problem

于会 henrybenyu at 163.com
Wed Dec 22 16:08:37 CET 2010


Hello,
    Happy hacking in U-Boot, let's start quickly!
    Here' s porting information below:
1. Porting arm926ejs SoC to our new SoC call "AVT2210"
2. Sdram base address: 0x40000000, size: 0x2000000(32M)
3. No flash now. 
4. UART: Common 16550
5. U-Boot version: u-boot-2010.12-rc2
6. Linux OS
7. ELDK arm-linux-gcc toolchain
 
    Here's code modified below:
1. #define CONFIG_SYS_TEXT_BASE      0x401E0000
2. #define CONFIG_SYS_INIT_SP_ADDR  0x401F0000
3. UART: use ns16550 serail driver.
 
After previous, U-Boot running on the target, I can see "U-Boot> ",
I typed "hlep"but problem when "find_cmd" function,
I got "Unknow command 'help' try 'help'".
 
I found errors in "&__u_boot_cmd_end - &__u_boot_cmd_start".
in the ${TOPDIR}/common/main.c: main_loop function:
  if (len == -1)
   puts ("<INTERRUPT>\n");
  else
   rc = run_command (lastcommand, flag);
gdb, 's' command to run_command
then 's' to find_command function as below:
cmd_tbl_t *find_cmd (const char *cmd)
{
 int len = &__u_boot_cmd_end - &__u_boot_cmd_start;
 return find_cmd_tbl(cmd, &__u_boot_cmd_start, len);
}
I 'p len', len is 0x00 !!!!!
' p  &__u_boot_cmd_end - &__u_boot_cmd_start' is 30
&__u_boot_cmd_end is: 0x41e25bfc
&__u_boot_cmd_start is: 0x41e258b3
Oh, I God!
then  call find_cmd_tbl function, as below:
cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len)
{
... ...
&table is also: 0x00
I have no idea!!!
 
I found
__u_boot_cmd_end, __u_boot_cmd_start
in ${TOPDIR}/arch/arm/cpu/arm926ejs/u-boot.lds
code as below:
 . = .;
 __u_boot_cmd_start = .;
 .u_boot_cmd : { *(.u_boot_cmd) }
 __u_boot_cmd_end = .;
 . = ALIGN(4);
 
Help! Help! Thanks a lot.
 
Abraham Yu.


More information about the U-Boot mailing list