[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