This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dm8148 sd boot MLO

Other Parts Discussed in Thread: CSD, DM385

Hi,TI

before the ROM code copy the MLO to on-chip RAM,does it need to initializate the ddr firstly?In my opinion,the MLO is run on the on-chip RAM,and it maybe not need ddr support.but when I delete the config_ti814x_ddr() in board/ti/ti8148/evm.c,the MLO does not run.What is the reason about that?

/*
* early system init of muxing and clocks.
*/
void s_init(u32 in_ddr)
{
/* TODO: Revisit enabling of I/D-cache in 1st stage */
#if 0
icache_enable();
dcache_enable();
#endif

/*
* Disable Write Allocate on miss to avoid starvation of other masters
* (than A8).
*
* Ref DM814x Erratum: TODO
*/
l2_disable_wa();

/* Can be removed as A8 comes up with L2 enabled */
l2_cache_enable();
unlock_pll_control_mmr();
/* Setup the PLLs and the clocks for the peripherals */
prcm_init(in_ddr);
#if defined(CONFIG_TI814X_CONFIG_DDR)
if (!in_ddr)
config_ti814x_ddr(); /* Do DDR settings */
#endif
}

Thank you!

vefone.

 

  • Moving this thread to the correct forum.
  • Hi Vefone,

    Make sure DDR is disabled cleanly and not being accessed further. It could be that it is stuck somewhere in DDR access related code, before UART could start. Thats why you see no logs and feel MLO is not running. Try initing UART ahead and you should get logs. Otherwise as Pavel said, it runs MLO from OCMC RAM, so should not be an issue. MLO doesn't need DDR to run, but configures and uses DDR.

  • Hi,Dwarakesh R

    I use xds200 to load the MLO to 0x40300000(OCMC RAM), and set a breakpoint at 0x403000cc,then I run to the breakpoint .After that,I step over,but it will run to 0x807004f4,which is the address on ddr.and also the address of start_armboot function.It seems that the MLO need ddr support.and without ddr, the MLO can not run completely.Any idea about that?

    Thank you!

    vefone.

  • Vefone,

    The job of the MLO is to configure the DDR timings copy the u-boot from SD/NAND to DDR and then jump to U-boot location on DDR so you need to get DDR timings right.

    To use OCMC RAM only for MLO, you will need to change the MLO TEXT_BASE from 0x80700000 (DDR3) to 0x40310000 (OCMC RAM).

    u-boot/Makefile

    ti8148_evm_config \

    ti8148_evm_config_nand \

    ti8148_evm_config_nor \

    ti8148_evm_config_spi \

    ti8148_evm_config_sd \

    ti8148_evm_min_spi \

    ti8148_evm_min_uart \

    ti8148_evm_min_nand \

    ti8148_evm_min_eth \

    ti8148_evm_min_pcie_32 \

    ti8148_evm_min_pcie_64  \

    ti8148_evm_min_sd: unconfig

    @mkdir -p $(obj)include

    @echo "#define CONFIG_TI81XX" >>$(obj)include/config.h

    @echo "#define CONFIG_TI814X" >>$(obj)include/config.h

    @if [ "$(findstring _min_,$@)" ] ; then \

    -echo "TEXT_BASE = 0x80700000" >> $(obj)board/ti/ti8148/config.tmp; \

    +echo "TEXT_BASE = 0x40310000" >> $(obj)board/ti/ti8148/config.tmp; \

    Regards,
    Pavel

  • Pavel
    I am so sorry to tell you that it does not work.There are nothing printf on the console.When the uboot run to start_armboot function,does it must run on ddr?On the arch/arm/cpu/arm_cortexa8/start.S file,the code relocate U-Boot to RAM,so if I change the TEXT_BASE to 0x40310000,does it mean run at the 0x40310000 of ddr?Are there any sloution?
  • vefone,

    This works fine on my side (DM814x TI EVM, u-boot-omap3).

    vefone said:
    When the uboot run to start_armboot function,does it must run on ddr?

    Not mandatory. The reset function will now relocate the code from TI_LOAD_ADDR (0x40300000) to TEXT_BASE (0x80700000 or 0x40310000). The reset function branches to "start_armboot" C function, which is now at the relocated address. After I changed TEXT_BASE from 0x80700000 to 0x40310000, my start_armboot function is at address 0x40310514.

    Can you provide me your u-boot/u-boot.map file?

    vefone said:
    On the arch/arm/cpu/arm_cortexa8/start.S file,the code relocate U-Boot to RAM,so if I change the TEXT_BASE to 0x40310000,does it mean run at the 0x40310000 of ddr?

    No, it does not. 0x40310000 is not ddr, it is OCMC RAM. You should examine the DM814x memory map to fill your gaps regarding the DM814x memory map.

    vefone said:
    Are there any sloution?

    Yes, the solution is already provided to you. You just need to apply that solution in a correct manner.

    Regards,
    Pavel

  • Pavel,

    I use the uboot from ezsdk_dm814x-evm_5_05_02_00_setuplinux,and on my board which can boot.Here is my u-boot.map.

    Archive member included because of file (symbol)

    arch/arm/lib/libarm.a(board.o)
    arch/arm/cpu/arm_cortexa8/start.o (start_armboot)
    arch/arm/lib/libarm.a(interrupts.o)
    arch/arm/lib/libarm.a(board.o) (enable_interrupts)
    drivers/mmc/libmmc.a(mmc.o) arch/arm/lib/libarm.a(board.o) (mmc_initialize)
    drivers/serial/libserial.a(serial.o)
    arch/arm/lib/libarm.a(board.o) (serial_init)
    drivers/serial/libserial.a(ns16550.o)
    drivers/serial/libserial.a(serial.o) (NS16550_init)
    common/libcommon.a(cmd_boot.o)
    (__u_boot_cmd_go)
    common/libcommon.a(cmd_bootm.o)
    arch/arm/lib/libarm.a(board.o) (load_addr)
    common/libcommon.a(cmd_cache.o)
    (__u_boot_cmd_icache)
    common/libcommon.a(cmd_echo.o)
    (__u_boot_cmd_echo)
    common/libcommon.a(cmd_exit.o)
    (__u_boot_cmd_exit)
    common/libcommon.a(cmd_fat.o)
    (__u_boot_cmd_fatload)
    common/libcommon.a(cmd_help.o)
    (__u_boot_cmd_help)
    common/libcommon.a(cmd_load.o)
    (__u_boot_cmd_loadb)
    common/libcommon.a(cmd_mem.o)
    (__u_boot_cmd_md)
    common/libcommon.a(cmd_mmc.o)
    (__u_boot_cmd_mmcinfo)
    common/libcommon.a(cmd_nvedit.o)
    arch/arm/lib/libarm.a(board.o) (getenv_r)
    common/libcommon.a(cmd_test.o)
    (__u_boot_cmd_test)
    common/libcommon.a(cmd_version.o)
    (__u_boot_cmd_version)
    common/libcommon.a(command.o)
    common/libcommon.a(cmd_mem.o) (cmd_get_data_size)
    common/libcommon.a(console.o)
    arch/arm/lib/libarm.a(board.o) (printf)
    common/libcommon.a(dlmalloc.o)
    drivers/mmc/libmmc.a(mmc.o) (free)
    common/libcommon.a(env_common.o)
    common/libcommon.a(cmd_nvedit.o) (env_get_addr)
    common/libcommon.a(env_nowhere.o)
    common/libcommon.a(env_common.o) (env_relocate_spec)
    common/libcommon.a(exports.o)
    arch/arm/lib/libarm.a(board.o) (jumptable_init)
    common/libcommon.a(hush.o) (__u_boot_cmd_showvar)
    common/libcommon.a(image.o) common/libcommon.a(cmd_bootm.o) (genimg_get_os_name)
    common/libcommon.a(main.o) common/libcommon.a(cmd_nvedit.o) (do_run)
    common/libcommon.a(stdio.o) common/libcommon.a(console.o) (stdio_get_list)
    common/libcommon.a(xyzModem.o)
    common/libcommon.a(cmd_load.o) (xyzModem_error)
    board/ti/ti8148/libti8148.a(evm.o)
    arch/arm/lib/libarm.a(board.o) (dram_init)
    lib/libgeneric.a(crc16.o) common/libcommon.a(xyzModem.o) (cyg_crc16)
    lib/libgeneric.a(crc32.o) common/libcommon.a(cmd_mem.o) (crc32)
    lib/libgeneric.a(ctype.o) common/libcommon.a(hush.o) (_ctype)
    lib/libgeneric.a(display_options.o)
    arch/arm/lib/libarm.a(board.o) (print_size)
    lib/libgeneric.a(div64.o) drivers/mmc/libmmc.a(mmc.o) (__div64_32)
    lib/libgeneric.a(net_utils.o)
    arch/arm/lib/libarm.a(board.o) (string_to_ip)
    lib/libgeneric.a(string.o) common/libcommon.a(cmd_bootm.o) (strcpy)
    lib/libgeneric.a(time.o) drivers/mmc/libmmc.a(mmc.o) (udelay)
    lib/libgeneric.a(vsprintf.o) arch/arm/lib/libarm.a(board.o) (simple_strtoul)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    board/ti/ti8148/libti8148.a(evm.o) (gpmc_set_cs_buswidth)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    lib/libgeneric.a(time.o) (__udelay)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o) (sdelay)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    board/ti/ti8148/libti8148.a(evm.o) (get_cpu_rev)
    arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(cache.o)
    board/ti/ti8148/libti8148.a(evm.o) (l2_cache_enable)
    arch/arm/lib/libarm.a(bootm.o)
    common/libcommon.a(cmd_bootm.o) (do_bootm_linux)
    arch/arm/lib/libarm.a(cache.o)
    common/libcommon.a(cmd_load.o) (flush_cache)
    arch/arm/lib/libarm.a(cache-cp15.o)
    common/libcommon.a(cmd_cache.o) (icache_enable)
    arch/arm/lib/libarm.a(reset.o)
    common/libcommon.a(cmd_boot.o) (do_reset)
    fs/fat/libfat.a(fat.o) common/libcommon.a(cmd_fat.o) (file_fat_detectfs)
    disk/libdisk.a(part.o) fs/fat/libfat.a(fat.o) (dev_print)
    disk/libdisk.a(part_dos.o) disk/libdisk.a(part.o) (test_part_dos)
    drivers/mmc/libmmc.a(omap_hsmmc.o)
    board/ti/ti8148/libti8148.a(evm.o) (omap_mmc_init)
    arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    arch/arm/lib/libarm.a(bootm.o) (cleanup_before_linux)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    drivers/mmc/libmmc.a(mmc.o) (__aeabi_uidiv)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    common/libcommon.a(cmd_mem.o) (__aeabi_idiv)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    lib/libgeneric.a(display_options.o) (__aeabi_llsr)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    drivers/mmc/libmmc.a(mmc.o) (__aeabi_llsl)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)
    /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o) (__aeabi_idiv0)

    Memory Configuration

    Name Origin Length Attributes
    *default* 0x00000000 0xffffffff

    Linker script and memory map

    0x00000000 . = 0x0
    0x00000000 . = ALIGN (0x4)

    .text 0x40310000 0xf720
    arch/arm/cpu/arm_cortexa8/start.o(.text)
    .text 0x40310000 0x3a0 arch/arm/cpu/arm_cortexa8/start.o
    0x40310040 _end_vect
    0x40310048 _bss_start
    0x4031004c _bss_end
    0x40310044 _armboot_start
    0x40310000 _start
    arch/arm/cpu/arm_cortexa8/ti81xx/lowlevel_init.o(.text)
    .text 0x403103a0 0x5c arch/arm/cpu/arm_cortexa8/ti81xx/lowlevel_init.o
    0x403103a4 lowlevel_init
    *(.text)
    .text 0x403103fc 0x21c arch/arm/lib/libarm.a(board.o)
    0x40310414 __yellow_LED_off
    0x40310408 green_LED_on
    0x40310420 hang
    0x40310408 __green_LED_on
    0x40310410 __yellow_LED_on
    0x40310410 yellow_LED_on
    0x4031040c __green_LED_off
    0x40310404 __red_LED_off
    0x403104f4 start_armboot
    0x4031041c blue_LED_off
    0x403103fc coloured_LED_init
    0x4031041c __blue_LED_off
    0x40310418 blue_LED_on
    0x40310414 yellow_LED_off
    0x40310404 red_LED_off
    0x4031040c green_LED_off
    0x403103fc __coloured_LED_init
    0x40310400 red_LED_on
    0x40310418 __blue_LED_on
    0x40310400 __red_LED_on
    .text 0x40310618 0x264 arch/arm/lib/libarm.a(interrupts.o)
    0x403107a4 do_fiq
    0x40310858 do_undefined_instruction
    0x40310624 show_regs
    0x40310780 do_irq
    0x40310764 bad_mode
    0x40310810 do_prefetch_abort
    0x4031061c disable_interrupts
    0x403107c8 do_not_used
    0x403107ec do_data_abort
    0x40310834 do_software_interrupt
    0x40310618 enable_interrupts
    .text 0x4031087c 0x10ec drivers/mmc/libmmc.a(mmc.o)
    0x40310c60 cpu_mmc_init
    0x40310964 mmc_send_ext_csd
    0x40310ad0 sd_switch
    0x403110f8 mmc_startup
    0x403108a8 __board_mmc_getcd
    0x40310c68 print_mmc_devices
    0x403108c0 mmc_set_blocklen
    0x403108b0 mmc_send_cmd
    0x40310b4c mmc_set_clock
    0x403117b8 mmc_init
    0x403108f8 mmc_read_block
    0x40311714 mmc_send_op_cond
    0x40310bf0 mmc_register
    0x40310d68 mmc_get_dev
    0x403115c0 sd_send_op_cond
    0x403109b4 mmc_switch
    0x40310b3c mmc_set_ios
    0x403109f8 mmc_change_freq
    0x40311840 mmc_read
    0x403108a8 board_mmc_getcd
    0x40310b6c mmc_set_bus_width
    0x40310d1c find_mmc_device
    0x403116c0 mmc_go_idle
    0x40310b74 mmc_send_if_cond
    0x40310f38 sd_change_freq
    0x40310cd0 mmc_initialize
    .text 0x40311968 0x168 drivers/serial/libserial.a(serial.o)
    0x40311990 _serial_setbrg
    0x40311a1c serial_putc_raw
    0x403119bc serial_setbrg
    0x403119c4 _serial_tstc
    0x403119d8 serial_tstc
    0x40311a68 serial_putc
    0x40311a70 _serial_puts
    0x40311a04 _serial_putc_raw
    0x40311aa8 serial_init
    0x40311aa0 serial_puts
    0x403119e0 _serial_getc
    0x403119fc serial_getc
    0x40311a24 _serial_putc
    .text 0x40311ad0 0xd8 drivers/serial/libserial.a(ns16550.o)
    0x40311b74 NS16550_putc
    0x40311ad0 NS16550_init
    0x40311b9c NS16550_tstc
    0x40311b88 NS16550_getc
    0x40311b24 NS16550_reinit
    .text 0x40311ba8 0x90 common/libcommon.a(cmd_boot.o)
    0x40311bc0 do_go
    0x40311ba8 do_go_exec
    .text 0x40311c38 0xa34 common/libcommon.a(cmd_bootm.o)
    0x40311c60 arch_preboot_os
    0x403123ec do_bootm
    0x40312228 do_bootm_subcommand
    0x40311c60 __arch_preboot_os
    .text 0x4031266c 0x12c common/libcommon.a(cmd_cache.o)
    0x403126a8 do_dcache
    0x40312720 do_icache
    .text 0x40312798 0x84 common/libcommon.a(cmd_echo.o)
    0x40312798 do_echo
    .text 0x4031281c 0x30 common/libcommon.a(cmd_exit.o)
    0x4031281c do_exit
    .text 0x4031284c 0x354 common/libcommon.a(cmd_fat.o)
    0x40312a20 do_fat_fsload
    0x4031284c do_fat_fsinfo
    0x40312920 do_fat_ls
    .text 0x40312ba0 0x48 common/libcommon.a(cmd_help.o)
    0x40312ba0 do_help
    .text 0x40312be8 0x9a8 common/libcommon.a(cmd_load.o)
    0x40312c74 k_data_init
    0x40312d5c s1_sendpacket
    0x40312d88 handle_send_packet
    0x40312cb8 k_data_restore
    0x40312f4c send_nack
    0x40313134 do_load_serial_bin
    0x40312cdc k_data_char
    0x40312c08 chk1
    0x40312c94 k_data_save
    0x40312be8 ktrans
    0x40312d2c send_pad
    0x40312fac send_ack
    .text 0x40313590 0x924 common/libcommon.a(cmd_mem.o)
    0x40313640 do_mem_base
    0x40313b84 do_mem_mw
    0x40313590 do_mem_crc
    0x40313d9c do_mem_nm
    0x40313dbc do_mem_mm
    0x40313920 do_mem_cp
    0x40313684 do_mem_mtest
    0x403139f4 do_mem_cmp
    0x40313828 do_mem_loop
    0x40313ddc do_mem_md
    .text 0x40313eb4 0x3b8 common/libcommon.a(cmd_mmc.o)
    0x40313fe0 do_mmcops
    0x40313eb4 do_mmcinfo
    .text 0x4031426c 0x7c4 common/libcommon.a(cmd_nvedit.o)
    0x40314380 getenv
    0x403143e8 _do_setenv
    0x403142dc getenv_r
    0x403149a0 do_printenv
    0x40314868 setenv
    0x4031426c get_env_id
    0x4031483c do_setenv
    0x4031427c envmatch
    .text 0x40314a30 0x494 common/libcommon.a(cmd_test.o)
    0x40314a40 do_test
    0x40314a30 do_false
    0x40314a38 do_true
    .text 0x40314ec4 0x20 common/libcommon.a(cmd_version.o)
    0x40314ec4 do_version
    .text 0x40314ee4 0x2dc common/libcommon.a(command.o)
    0x40314f80 find_cmd_tbl
    0x40314f5c cmd_usage
    0x40315018 find_cmd
    0x40314ee4 cmd_get_data_size
    0x40315040 _do_help
    .text 0x403151c0 0x4a4 common/libcommon.a(console.o)
    0x4031536c console_init_r
    0x40315548 printf
    0x40315478 console_assign
    0x403155fc getc
    0x40315450 search_device
    0x40315500 puts
    0x4031534c dbg
    0x40315588 serial_printf
    0x40315290 ftstc
    0x403154b8 fprintf
    0x403155e4 tstc
    0x4031551c vprintf
    0x40315614 ctrlc
    0x403155c8 putc
    0x40315310 disable_ctrlc
    0x40315268 fgetc
    0x40315328 had_ctrlc
    0x403152b8 fputc
    0x40315358 console_init_f
    0x40315338 clear_ctrlc
    0x40315368 stdio_print_current_devices
    0x403152e4 fputs
    .text 0x40315664 0x1104 common/libcommon.a(dlmalloc.o)
    0x4031599c malloc
    0x403160d8 pvalloc
    0x403161b8 calloc
    0x403160fc malloc_usable_size
    0x40316298 mem_malloc_init
    0x403162c4 realloc
    0x40315698 malloc_trim
    0x40315664 sbrk
    0x40316140 mallopt
    0x40315fc8 memalign
    0x40315998 cfree
    0x403160f0 valloc
    0x40315768 free
    .text 0x40316768 0x12c common/libcommon.a(env_common.o)
    0x403167a8 env_get_char
    0x40316788 env_get_addr
    0x40316800 set_default_env
    0x40316844 env_relocate
    0x403167d8 env_crc_update
    0x40316768 env_get_char_memory
    .text 0x40316894 0x2c common/libcommon.a(env_nowhere.o)
    0x40316894 env_relocate_spec
    0x40316898 env_get_char_spec
    0x403168a4 env_init
    .text 0x403168c0 0x1d4 common/libcommon.a(exports.o)
    0x403168cc jumptable_init
    0x403168c4 get_version
    .text 0x40316a94 0x1da0 common/libcommon.a(hush.o)
    0x40316d6c new_pipe
    0x40316bd4 mapset
    0x40317fac parse_string_outer
    0x40317918 update_ifs_map
    0x40317764 set_local_var
    0x40317f68 parse_file_outer
    0x40316ab0 simple_itoa
    0x40317068 unset_local_var
    0x40316c0c do_showvar
    0x40317234 reserved_word
    0x40316cf8 u_boot_hush_start
    .text 0x40318834 0x7b8 common/libcommon.a(image.o)
    0x40318ccc getenv_bootm_size
    0x40318ad4 image_print_contents
    0x40318978 genimg_get_comp_id
    0x403189c0 genimg_get_os_id
    0x40318898 get_table_entry_name
    0x40318924 genimg_has_config
    0x403189a8 genimg_get_arch_id
    0x403188d8 genimg_get_arch_name
    0x40318d9c boot_get_ramdisk
    0x40318d48 image_check_hcrc
    0x403188c0 genimg_get_os_name
    0x403188f0 genimg_get_type_name
    0x403189fc genimg_get_format
    0x40318908 genimg_get_comp_name
    0x40318d00 image_check_dcrc
    0x40318aa4 genimg_print_size
    0x40318c74 getenv_bootm_low
    0x40318920 genimg_get_image
    0x40318990 genimg_get_type_id
    0x40318870 image_multi_count
    0x40318c68 memmove_wd
    0x4031892c get_table_entry_id
    0x40318a20 image_multi_getimg
    0x40318ca8 getenv_yesno
    .text 0x40318fec 0x8c0 common/libcommon.a(main.o)
    0x40318fec __show_boot_progress
    0x403190ec run_command
    0x4031907c do_run
    0x40318ff0 parse_line
    0x40319798 readline
    0x40318fec show_boot_progress
    0x403197b0 main_loop
    0x403195c0 readline_into_buffer
    .text 0x403198ac 0x174 common/libcommon.a(stdio.o)
    0x403198b8 stdio_clone
    0x403198ac stdio_get_list
    0x403199cc stdio_get_by_name
    0x40319940 stdio_init
    0x40319900 stdio_register
    .text 0x40319a20 0x9f4 common/libcommon.a(xyzModem.o)
    0x40319b5c xyzModem_error
    0x40319bf8 xyzModem_stream_close
    0x40319c4c CYGACC_COMM_IF_GETC_TIMEOUT
    0x40319a20 parse_num
    0x40319cd0 xyzModem_stream_terminate
    0x4031a2b0 xyzModem_stream_open
    0x40319c44 CYGACC_COMM_IF_PUTC
    0x4031a024 xyzModem_stream_read
    .text 0x4031a414 0xb98 board/ti/ti8148/libti8148.a(evm.o)
    0x4031a4e0 dram_init
    0x4031a7ec is_ddr3
    0x4031a7d8 board_mmc_init
    0x4031a7c0 reset_cpu
    0x4031aee4 board_init
    0x4031a9cc s_init
    0x4031a5c0 per_clocks_enable
    0x4031a740 set_muxconf_regs
    0x4031ae90 misc_init_r
    0x4031a804 prcm_init
    .text 0x4031afac 0x44 lib/libgeneric.a(crc16.o)
    0x4031afac cyg_crc16
    .text 0x4031aff0 0x110 lib/libgeneric.a(crc32.o)
    0x4031b0e8 crc32
    0x4031b0fc crc32_wd
    0x4031aff0 crc32_no_comp
    .text 0x4031b100 0x0 lib/libgeneric.a(ctype.o)
    .text 0x4031b100 0x2cc lib/libgeneric.a(display_options.o)
    0x4031b274 print_buffer
    0x4031b254 display_options
    0x4031b100 print_size
    .text 0x4031b3cc 0xf4 lib/libgeneric.a(div64.o)
    0x4031b3cc __div64_32
    .text 0x4031b4c0 0x78 lib/libgeneric.a(net_utils.o)
    0x4031b4c0 string_to_ip
    .text 0x4031b538 0x64c lib/libgeneric.a(string.o)
    0x4031b538 strcpy
    0x4031ba8c memscan
    0x4031b9f0 memmove
    0x4031b974 memcpy
    0x4031b880 strswab
    0x4031b720 strnlen
    0x4031b6e8 strrchr
    0x4031b57c strcat
    0x4031bb20 memchr
    0x4031babc strstr
    0x4031b64c strncmp
    0x4031b554 strncpy
    0x4031b948 bcopy
    0x4031b7cc strtok
    0x4031ba4c memcmp
    0x4031b5b0 strncat
    0x4031bb50 strdup
    0x4031b8cc memset
    0x4031b614 strcmp
    0x4031b84c strsep
    0x4031b748 strspn
    0x4031b6c8 strlen
    0x4031b69c strchr
    0x4031b78c strpbrk
    .text 0x4031bb84 0x2c lib/libgeneric.a(time.o)
    0x4031bb84 udelay
    .text 0x4031bbb0 0xc5c lib/libgeneric.a(vsprintf.o)
    0x4031c348 vsprintf
    0x4031bcb0 ustrtoul
    0x4031bc88 simple_strtol
    0x4031be3c panic
    0x4031c7e8 sprintf
    0x4031bbcc simple_strtoul
    0x4031bd24 simple_strtoull
    .text 0x4031c80c 0x104 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    0x4031c80c gpmc_set_cs_buswidth
    0x4031c840 gpmc_init
    0x4031c89c enable_gpmc_cs_config
    .text 0x4031c910 0x150 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    0x4031c920 __udelay
    0x4031c910 set_timer
    0x4031c9a4 reset_timer
    0x4031ca58 get_tbclk
    0x4031ca2c get_timer
    0x4031c974 reset_timer_masked
    0x4031c9a8 timer_init
    0x4031c9d0 get_timer_masked
    0x4031ca40 udelay_masked
    0x4031ca44 get_ticks
    .text 0x4031ca60 0x70 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    0x4031ca8c wait_on_value
    0x4031ca6c sr32
    0x4031ca60 sdelay
    .text 0x4031cad0 0x254 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    0x4031cb64 pg_val_ti814x
    0x4031cb44 pg_val_ti816x
    0x4031cb30 get_sysboot_value
    0x4031cb1c get_device_type
    0x4031cad0 get_cpu_rev
    0x4031cb14 get_board_rev
    0x4031cb98 opp_val_dm385
    0x4031cb00 get_cpu_type
    0x4031cb84 get_sysboot_bw
    0x4031cb9c print_cpuinfo
    .text 0x4031cd24 0xe4 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(cache.o)
    0x4031cd24 invalidate_dcache
    0x4031cdcc l2_cache_disable
    0x4031cdb8 l2_cache_enable
    0x4031cde0 l2_disable_wa
    .text 0x4031ce08 0x88 arch/arm/lib/libarm.a(bootm.o)
    0x4031ce08 do_bootm_linux
    .text 0x4031ce90 0x4 arch/arm/lib/libarm.a(cache.o)
    0x4031ce90 flush_cache
    .text 0x4031ce94 0xc0 arch/arm/lib/libarm.a(cache-cp15.o)
    0x4031cf34 dcache_enable
    0x4031cf14 icache_enable
    0x4031cf1c icache_disable
    0x4031cf44 dcache_status
    0x4031cf24 icache_status
    0x4031cf3c dcache_disable
    .text 0x4031cf54 0x2c arch/arm/lib/libarm.a(reset.o)
    0x4031cf54 do_reset
    .text 0x4031cf80 0x12cc fs/fat/libfat.a(fat.o)
    0x4031e114 file_fat_read
    0x4031d7d0 do_fat_read
    0x4031e14c file_fat_ls
    0x4031d670 file_fat_detectfs
    0x4031cfb0 disk_read
    0x4031e15c fat_register_device
    .text 0x4031e24c 0x374 disk/libdisk.a(part.o)
    0x4031e328 dev_print
    0x4031e24c print_part
    0x4031e564 get_dev
    0x4031e524 get_partition_info
    0x4031e548 init_part
    .text 0x4031e5c0 0x4dc disk/libdisk.a(part_dos.o)
    0x4031e898 get_partition_info_dos
    0x4031ea70 print_part_dos
    0x4031e608 test_part_dos
    .text 0x4031ea9c 0x798 drivers/mmc/libmmc.a(omap_hsmmc.o)
    0x4031ea9c mmc_board_init
    0x4031eaa4 omap_mmc_init
    0x4031ec58 mmc_init_stream
    .text 0x4031f234 0x38 arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    0x4031f234 cleanup_before_linux
    .text 0x4031f26c 0x20 /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    0x4031f26c __aeabi_unwind_cpp_pr0
    0x4031f270 raise
    .text 0x4031f28c 0x20c /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    0x4031f28c __udivsi3
    0x4031f28c __aeabi_uidiv
    0x4031f478 __aeabi_uidivmod
    .text 0x4031f498 0x240 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    0x4031f498 __aeabi_idiv
    0x4031f498 __divsi3
    0x4031f6b8 __aeabi_idivmod
    .text 0x4031f6d8 0x1c /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    0x4031f6d8 __aeabi_llsr
    0x4031f6d8 __lshrdi3
    .text 0x4031f6f4 0x1c /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    0x4031f6f4 __ashldi3
    0x4031f6f4 __aeabi_llsl
    .text 0x4031f710 0x10 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)
    0x4031f710 __aeabi_ldiv0
    0x4031f710 __aeabi_idiv0

    .glue_7 0x4031f720 0x0
    .glue_7 0x00000000 0x0 linker stubs

    .glue_7t 0x4031f720 0x0
    .glue_7t 0x00000000 0x0 linker stubs

    .vfp11_veneer 0x4031f720 0x0
    .vfp11_veneer 0x00000000 0x0 linker stubs

    .v4_bx 0x4031f720 0x0
    .v4_bx 0x00000000 0x0 linker stubs
    0x4031f720 . = ALIGN (0x4)

    .rodata 0x4031f720 0xd7d
    *(.rodata)
    .rodata 0x4031f720 0x2e arch/arm/lib/libarm.a(board.o)
    0x4031f720 version_string
    *fill* 0x4031f74e 0x2 00
    .rodata 0x4031f750 0x80 arch/arm/lib/libarm.a(interrupts.o)
    .rodata 0x4031f7d0 0x10 drivers/serial/libserial.a(serial.o)
    .rodata 0x4031f7e0 0x4c common/libcommon.a(cmd_bootm.o)
    .rodata 0x4031f82c 0x38 common/libcommon.a(cmd_nvedit.o)
    .rodata 0x4031f864 0x5ac board/ti/ti8148/libti8148.a(evm.o)
    .rodata 0x4031fe10 0x200 lib/libgeneric.a(crc16.o)
    .rodata 0x40320010 0x400 lib/libgeneric.a(crc32.o)
    .rodata 0x40320410 0x6 lib/libgeneric.a(display_options.o)
    .rodata 0x40320416 0x21 lib/libgeneric.a(vsprintf.o)
    0x40320426 hex_asc
    *fill* 0x40320437 0x1 00
    .rodata 0x40320438 0x10 disk/libdisk.a(part.o)
    .rodata 0x40320448 0x55 drivers/mmc/libmmc.a(omap_hsmmc.o)

    .rodata.str1.1 0x4032049d 0x224c
    .rodata.str1.1
    0x4032049d 0x5a arch/arm/lib/libarm.a(board.o)
    0x5c (size before relaxing)
    .rodata.str1.1
    0x403204f7 0x264 arch/arm/lib/libarm.a(interrupts.o)
    0x27b (size before relaxing)
    .rodata.str1.1
    0x4032075b 0xdd drivers/mmc/libmmc.a(mmc.o)
    0xdf (size before relaxing)
    .rodata.str1.1
    0x40320838 0x95 common/libcommon.a(cmd_boot.o)
    .rodata.str1.1
    0x403208cd 0x3df common/libcommon.a(cmd_bootm.o)
    0x3e9 (size before relaxing)
    .rodata.str1.1
    0x40320cac 0x8d common/libcommon.a(cmd_cache.o)
    0x97 (size before relaxing)
    .rodata.str1.1
    0x40320d39 0x1a common/libcommon.a(cmd_echo.o)
    .rodata.str1.1
    0x40320d53 0x11 common/libcommon.a(cmd_exit.o)
    .rodata.str1.1
    0x40320d64 0x23f common/libcommon.a(cmd_fat.o)
    0x24c (size before relaxing)
    .rodata.str1.1
    0x40320fa3 0x38 common/libcommon.a(cmd_help.o)
    .rodata.str1.1
    0x40320fdb 0x1ba common/libcommon.a(cmd_load.o)
    0x1d0 (size before relaxing)
    .rodata.str1.1
    0x40321195 0x2e8 common/libcommon.a(cmd_mem.o)
    0x2f9 (size before relaxing)
    .rodata.str1.1
    0x4032147d 0x1a3 common/libcommon.a(cmd_mmc.o)
    0x1aa (size before relaxing)
    .rodata.str1.1
    0x40321620 0x183 common/libcommon.a(cmd_nvedit.o)
    0x1ce (size before relaxing)
    .rodata.str1.1
    0x403217a3 0x84 common/libcommon.a(cmd_test.o)
    0x8d (size before relaxing)
    .rodata.str1.1
    0x40321827 0x16 common/libcommon.a(cmd_version.o)
    0x23 (size before relaxing)
    .rodata.str1.1
    0x4032183d 0x69 common/libcommon.a(command.o)
    .rodata.str1.1
    0x403218a6 0x1c common/libcommon.a(env_common.o)
    .rodata.str1.1
    0x403218c2 0x1b7 common/libcommon.a(hush.o)
    0x1df (size before relaxing)
    .rodata.str1.1
    0x40321a79 0x466 common/libcommon.a(image.o)
    0x4f3 (size before relaxing)
    .rodata.str1.1
    0x40321edf 0x75 common/libcommon.a(main.o)
    0xb4 (size before relaxing)
    .rodata.str1.1
    0x40321f54 0x7 common/libcommon.a(stdio.o)
    0x1b (size before relaxing)
    .rodata.str1.1
    0x40321f5b 0xe3 common/libcommon.a(xyzModem.o)
    0xe5 (size before relaxing)
    .rodata.str1.1
    0x4032203e 0x8c board/ti/ti8148/libti8148.a(evm.o)
    .rodata.str1.1
    0x403220ca 0x1e lib/libgeneric.a(display_options.o)
    0x43 (size before relaxing)
    .rodata.str1.1
    0x403220e8 0xe lib/libgeneric.a(vsprintf.o)
    .rodata.str1.1
    0x403220f6 0x77 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    0x7b (size before relaxing)
    .rodata.str1.1
    0x4032216d 0x42 arch/arm/lib/libarm.a(bootm.o)
    .rodata.str1.1
    0x403221af 0xf arch/arm/lib/libarm.a(reset.o)
    .rodata.str1.1
    0x403221be 0x168 fs/fat/libfat.a(fat.o)
    0x16d (size before relaxing)
    .rodata.str1.1
    0x40322326 0x1af disk/libdisk.a(part.o)
    0x1e0 (size before relaxing)
    .rodata.str1.1
    0x403224d5 0xe5 disk/libdisk.a(part_dos.o)
    0xf1 (size before relaxing)
    .rodata.str1.1
    0x403225ba 0x114 drivers/mmc/libmmc.a(omap_hsmmc.o)
    .rodata.str1.1
    0x403226ce 0x1b /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    0x403226ec . = ALIGN (0x4)

    .data 0x403226ec 0x974
    *(.data)
    .data 0x403226ec 0x0 arch/arm/cpu/arm_cortexa8/start.o
    .data 0x403226ec 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/lowlevel_init.o
    .data 0x403226ec 0x2c arch/arm/lib/libarm.a(board.o)
    0x403226ec init_sequence
    .data 0x40322718 0x0 arch/arm/lib/libarm.a(interrupts.o)
    .data 0x40322718 0x54 drivers/mmc/libmmc.a(mmc.o)
    0x4032275c fbase
    0x4032271c multipliers
    .data 0x4032276c 0x0 drivers/serial/libserial.a(serial.o)
    .data 0x4032276c 0x0 drivers/serial/libserial.a(ns16550.o)
    .data 0x4032276c 0x0 common/libcommon.a(cmd_boot.o)
    .data 0x4032276c 0x7c common/libcommon.a(cmd_bootm.o)
    0x4032276c load_addr
    .data 0x403227e8 0x0 common/libcommon.a(cmd_cache.o)
    .data 0x403227e8 0x0 common/libcommon.a(cmd_echo.o)
    .data 0x403227e8 0x0 common/libcommon.a(cmd_exit.o)
    .data 0x403227e8 0x0 common/libcommon.a(cmd_fat.o)
    .data 0x403227e8 0x0 common/libcommon.a(cmd_help.o)
    .data 0x403227e8 0x0 common/libcommon.a(cmd_load.o)
    .data 0x403227e8 0x4 common/libcommon.a(cmd_mem.o)
    0x403227e8 dp_last_length
    .data 0x403227ec 0x0 common/libcommon.a(cmd_mmc.o)
    .data 0x403227ec 0x4 common/libcommon.a(cmd_nvedit.o)
    .data 0x403227f0 0x0 common/libcommon.a(cmd_test.o)
    .data 0x403227f0 0x0 common/libcommon.a(cmd_version.o)
    .data 0x403227f0 0x0 common/libcommon.a(command.o)
    .data 0x403227f0 0x0 common/libcommon.a(console.o)
    .data 0x403227f0 0x414 common/libcommon.a(dlmalloc.o)
    .data 0x40322c04 0x7f common/libcommon.a(env_common.o)
    0x40322c04 default_environment
    .data 0x40322c83 0x0 common/libcommon.a(env_nowhere.o)
    .data 0x40322c83 0x0 common/libcommon.a(exports.o)
    *fill* 0x40322c83 0x1 00
    .data 0x40322c84 0xac common/libcommon.a(hush.o)
    .data 0x40322d30 0x210 common/libcommon.a(image.o)
    .data 0x40322f40 0xd common/libcommon.a(main.o)
    *fill* 0x40322f4d 0x3 00
    .data 0x40322f50 0xc common/libcommon.a(stdio.o)
    0x40322f50 stdio_names
    .data 0x40322f5c 0x0 common/libcommon.a(xyzModem.o)
    .data 0x40322f5c 0x0 board/ti/ti8148/libti8148.a(evm.o)
    .data 0x40322f5c 0x0 lib/libgeneric.a(crc16.o)
    .data 0x40322f5c 0x0 lib/libgeneric.a(crc32.o)
    .data 0x40322f5c 0x100 lib/libgeneric.a(ctype.o)
    0x40322f5c _ctype
    .data 0x4032305c 0x0 lib/libgeneric.a(display_options.o)
    .data 0x4032305c 0x0 lib/libgeneric.a(div64.o)
    .data 0x4032305c 0x0 lib/libgeneric.a(net_utils.o)
    .data 0x4032305c 0x0 lib/libgeneric.a(string.o)
    .data 0x4032305c 0x0 lib/libgeneric.a(time.o)
    .data 0x4032305c 0x0 lib/libgeneric.a(vsprintf.o)
    .data 0x4032305c 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    .data 0x4032305c 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    .data 0x4032305c 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    .data 0x4032305c 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    .data 0x4032305c 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(cache.o)
    .data 0x4032305c 0x0 arch/arm/lib/libarm.a(bootm.o)
    .data 0x4032305c 0x0 arch/arm/lib/libarm.a(cache.o)
    .data 0x4032305c 0x0 arch/arm/lib/libarm.a(cache-cp15.o)
    .data 0x4032305c 0x0 arch/arm/lib/libarm.a(reset.o)
    .data 0x4032305c 0x4 fs/fat/libfat.a(fat.o)
    .data 0x40323060 0x0 disk/libdisk.a(part.o)
    .data 0x40323060 0x0 disk/libdisk.a(part_dos.o)
    .data 0x40323060 0x0 drivers/mmc/libmmc.a(omap_hsmmc.o)
    .data 0x40323060 0x0 arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    .data 0x40323060 0x0 /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    .data 0x40323060 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    .data 0x40323060 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    .data 0x40323060 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    .data 0x40323060 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    .data 0x40323060 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)
    0x40323060 . = ALIGN (0x4)

    .got
    *(.got)
    0x40323060 . = .
    0x40323060 __u_boot_cmd_start = .

    .u_boot_cmd 0x40323060 0x2a8
    *(.u_boot_cmd)
    .u_boot_cmd 0x40323060 0x28 common/libcommon.a(cmd_boot.o)
    0x40323074 __u_boot_cmd_reset
    0x40323060 __u_boot_cmd_go
    .u_boot_cmd 0x40323088 0x14 common/libcommon.a(cmd_bootm.o)
    0x40323088 __u_boot_cmd_bootm
    .u_boot_cmd 0x4032309c 0x28 common/libcommon.a(cmd_cache.o)
    0x403230b0 __u_boot_cmd_dcache
    0x4032309c __u_boot_cmd_icache
    .u_boot_cmd 0x403230c4 0x14 common/libcommon.a(cmd_echo.o)
    0x403230c4 __u_boot_cmd_echo
    .u_boot_cmd 0x403230d8 0x14 common/libcommon.a(cmd_exit.o)
    0x403230d8 __u_boot_cmd_exit
    .u_boot_cmd 0x403230ec 0x3c common/libcommon.a(cmd_fat.o)
    0x40323114 __u_boot_cmd_fatinfo
    0x403230ec __u_boot_cmd_fatload
    0x40323100 __u_boot_cmd_fatls
    .u_boot_cmd 0x40323128 0x28 common/libcommon.a(cmd_help.o)
    0x4032313c __u_boot_cmd_question_mark
    0x40323128 __u_boot_cmd_help
    .u_boot_cmd 0x40323150 0x28 common/libcommon.a(cmd_load.o)
    0x40323164 __u_boot_cmd_loady
    0x40323150 __u_boot_cmd_loadb
    .u_boot_cmd 0x40323178 0xc8 common/libcommon.a(cmd_mem.o)
    0x40323178 __u_boot_cmd_md
    0x403231dc __u_boot_cmd_cmp
    0x403231b4 __u_boot_cmd_mw
    0x40323218 __u_boot_cmd_loop
    0x40323204 __u_boot_cmd_base
    0x4032318c __u_boot_cmd_mm
    0x403231f0 __u_boot_cmd_crc32
    0x403231a0 __u_boot_cmd_nm
    0x4032322c __u_boot_cmd_mtest
    0x403231c8 __u_boot_cmd_cp
    .u_boot_cmd 0x40323240 0x28 common/libcommon.a(cmd_mmc.o)
    0x40323254 __u_boot_cmd_mmc
    0x40323240 __u_boot_cmd_mmcinfo
    .u_boot_cmd 0x40323268 0x3c common/libcommon.a(cmd_nvedit.o)
    0x40323290 __u_boot_cmd_run
    0x40323268 __u_boot_cmd_printenv
    0x4032327c __u_boot_cmd_setenv
    .u_boot_cmd 0x403232a4 0x3c common/libcommon.a(cmd_test.o)
    0x403232b8 __u_boot_cmd_false
    0x403232cc __u_boot_cmd_true
    0x403232a4 __u_boot_cmd_test
    .u_boot_cmd 0x403232e0 0x14 common/libcommon.a(cmd_version.o)
    0x403232e0 __u_boot_cmd_version
    .u_boot_cmd 0x403232f4 0x14 common/libcommon.a(hush.o)
    0x403232f4 __u_boot_cmd_showvar
    0x40323308 __u_boot_cmd_end = .
    0x40323308 . = ALIGN (0x4)
    0x40323308 __bss_start = .

    .bss 0x40323308 0x30d88
    *(.bss)
    .bss 0x40323308 0x0 arch/arm/cpu/arm_cortexa8/start.o
    .bss 0x40323308 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/lowlevel_init.o
    .bss 0x40323308 0x4 arch/arm/lib/libarm.a(board.o)
    0x40323308 monitor_flash_len
    .bss 0x4032330c 0x0 arch/arm/lib/libarm.a(interrupts.o)
    .bss 0x4032330c 0x8 drivers/mmc/libmmc.a(mmc.o)
    .bss 0x40323314 0x0 drivers/serial/libserial.a(serial.o)
    .bss 0x40323314 0x0 drivers/serial/libserial.a(ns16550.o)
    .bss 0x40323314 0x0 common/libcommon.a(cmd_boot.o)
    .bss 0x40323314 0x8c common/libcommon.a(cmd_bootm.o)
    .bss 0x403233a0 0x0 common/libcommon.a(cmd_cache.o)
    .bss 0x403233a0 0x0 common/libcommon.a(cmd_echo.o)
    .bss 0x403233a0 0x0 common/libcommon.a(cmd_exit.o)
    .bss 0x403233a0 0x0 common/libcommon.a(cmd_fat.o)
    .bss 0x403233a0 0x0 common/libcommon.a(cmd_help.o)
    .bss 0x403233a0 0x60 common/libcommon.a(cmd_load.o)
    0x403233cc his_pad_char
    0x403233b0 os_data_init
    0x403233d0 send_ptr
    0x403233c0 os_data_char
    0x403233cd his_eol
    0x403233c4 his_quote
    0x403233d4 send_parms
    0x403233c8 his_pad_count
    .bss 0x40323400 0x14 common/libcommon.a(cmd_mem.o)
    0x40323410 dp_last_size
    0x4032340c dp_last_addr
    0x40323408 mm_last_size
    0x40323404 mm_last_addr
    .bss 0x40323414 0x0 common/libcommon.a(cmd_mmc.o)
    .bss 0x40323414 0x0 common/libcommon.a(cmd_nvedit.o)
    .bss 0x40323414 0x0 common/libcommon.a(cmd_test.o)
    .bss 0x40323414 0x0 common/libcommon.a(cmd_version.o)
    .bss 0x40323414 0x0 common/libcommon.a(command.o)
    .bss 0x40323414 0x8 common/libcommon.a(console.o)
    .bss 0x4032341c 0x44 common/libcommon.a(dlmalloc.o)
    0x40323424 mem_malloc_end
    0x40323420 mem_malloc_start
    0x4032341c mem_malloc_brk
    .bss 0x40323460 0x0 common/libcommon.a(env_common.o)
    .bss 0x40323460 0x4 common/libcommon.a(env_nowhere.o)
    0x40323460 env_ptr
    .bss 0x40323464 0x0 common/libcommon.a(exports.o)
    .bss 0x40323464 0x358 common/libcommon.a(hush.o)
    0x403237b8 nesting_level
    0x403237b0 last_return_code
    .bss 0x403237bc 0x0 common/libcommon.a(image.o)
    .bss 0x403237bc 0x201 common/libcommon.a(main.o)
    0x403237bc console_buffer
    *fill* 0x403239bd 0x3 00
    .bss 0x403239c0 0x48 common/libcommon.a(stdio.o)
    0x403239fc stdio_devices
    .bss 0x40323a08 0x43c common/libcommon.a(xyzModem.o)
    .bss 0x40323e44 0x0 board/ti/ti8148/libti8148.a(evm.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(crc16.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(crc32.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(ctype.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(display_options.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(div64.o)
    .bss 0x40323e44 0x0 lib/libgeneric.a(net_utils.o)
    .bss 0x40323e44 0x4 lib/libgeneric.a(string.o)
    0x40323e44 ___strtok
    .bss 0x40323e48 0x0 lib/libgeneric.a(time.o)
    .bss 0x40323e48 0x0 lib/libgeneric.a(vsprintf.o)
    .bss 0x40323e48 0x18 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    0x40323e54 boot_flash_sec
    0x40323e50 boot_flash_off
    0x40323e58 boot_flash_type
    0x40323e5c boot_flash_env_addr
    0x40323e48 gpmc_cfg
    0x40323e4c boot_flash_base
    .bss 0x40323e60 0x8 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    .bss 0x40323e68 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    .bss 0x40323e68 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    .bss 0x40323e68 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(cache.o)
    .bss 0x40323e68 0x0 arch/arm/lib/libarm.a(bootm.o)
    .bss 0x40323e68 0x0 arch/arm/lib/libarm.a(cache.o)
    .bss 0x40323e68 0x0 arch/arm/lib/libarm.a(cache-cp15.o)
    .bss 0x40323e68 0x0 arch/arm/lib/libarm.a(reset.o)
    .bss 0x40323e68 0x30008 fs/fat/libfat.a(fat.o)
    0x40323e70 get_vfatname_block
    0x40343e70 get_dentfromdir_block
    0x40333e70 do_fat_read_block
    .bss 0x40353e70 0x0 disk/libdisk.a(part.o)
    .bss 0x40353e70 0x0 disk/libdisk.a(part_dos.o)
    .bss 0x40353e70 0x220 drivers/mmc/libmmc.a(omap_hsmmc.o)
    .bss 0x40354090 0x0 arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    .bss 0x40354090 0x0 /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    .bss 0x40354090 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    .bss 0x40354090 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    .bss 0x40354090 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    .bss 0x40354090 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    .bss 0x40354090 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)
    0x40354090 . = ALIGN (0x4)
    0x40354090 _end = .
    Address of section .text set to 0x40310000
    LOAD arch/arm/cpu/arm_cortexa8/start.o
    START GROUP
    LOAD lib/libgeneric.a
    LOAD lib/lzma/liblzma.a
    LOAD lib/lzo/liblzo.a
    LOAD arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a
    LOAD arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a
    LOAD arch/arm/lib/libarm.a
    LOAD fs/cramfs/libcramfs.a
    LOAD fs/fat/libfat.a
    LOAD fs/fdos/libfdos.a
    LOAD fs/jffs2/libjffs2.a
    LOAD fs/reiserfs/libreiserfs.a
    LOAD fs/ext2/libext2fs.a
    LOAD fs/yaffs2/libyaffs2.a
    LOAD fs/ubifs/libubifs.a
    LOAD net/libnet.a
    LOAD disk/libdisk.a
    LOAD drivers/bios_emulator/libatibiosemu.a
    LOAD drivers/block/libblock.a
    LOAD drivers/dma/libdma.a
    LOAD drivers/fpga/libfpga.a
    LOAD drivers/gpio/libgpio.a
    LOAD drivers/hwmon/libhwmon.a
    LOAD drivers/i2c/libi2c.a
    LOAD drivers/input/libinput.a
    LOAD drivers/misc/libmisc.a
    LOAD drivers/mmc/libmmc.a
    LOAD drivers/mtd/libmtd.a
    LOAD drivers/mtd/nand/libnand.a
    LOAD drivers/mtd/onenand/libonenand.a
    LOAD drivers/mtd/ubi/libubi.a
    LOAD drivers/mtd/spi/libspi_flash.a
    LOAD drivers/net/libnet.a
    LOAD drivers/net/phy/libphy.a
    LOAD drivers/pci/libpci.a
    LOAD drivers/pcmcia/libpcmcia.a
    LOAD drivers/power/libpower.a
    LOAD drivers/spi/libspi.a
    LOAD drivers/rtc/librtc.a
    LOAD drivers/serial/libserial.a
    LOAD drivers/twserial/libtws.a
    LOAD drivers/usb/gadget/libusb_gadget.a
    LOAD drivers/usb/host/libusb_host.a
    LOAD drivers/usb/musb/libusb_musb.a
    LOAD drivers/usb/phy/libusb_phy.a
    LOAD drivers/video/libvideo.a
    LOAD drivers/watchdog/libwatchdog.a
    LOAD common/libcommon.a
    LOAD lib/libfdt/libfdt.a
    LOAD api/libapi.a
    LOAD post/libpost.a
    LOAD board/ti/ti8148/libti8148.a
    END GROUP
    LOAD /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    LOAD /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a
    OUTPUT(u-boot elf32-littlearm)

    .ARM.attributes
    0x00000000 0x29
    .ARM.attributes
    0x00000000 0x1d arch/arm/cpu/arm_cortexa8/start.o
    .ARM.attributes
    0x0000001d 0x1d arch/arm/cpu/arm_cortexa8/ti81xx/lowlevel_init.o
    .ARM.attributes
    0x0000003a 0x2d arch/arm/lib/libarm.a(board.o)
    .ARM.attributes
    0x00000067 0x2d arch/arm/lib/libarm.a(interrupts.o)
    .ARM.attributes
    0x00000094 0x2d drivers/mmc/libmmc.a(mmc.o)
    .ARM.attributes
    0x000000c1 0x2d drivers/serial/libserial.a(serial.o)
    .ARM.attributes
    0x000000ee 0x2d drivers/serial/libserial.a(ns16550.o)
    .ARM.attributes
    0x0000011b 0x2d common/libcommon.a(cmd_boot.o)
    .ARM.attributes
    0x00000148 0x2d common/libcommon.a(cmd_bootm.o)
    .ARM.attributes
    0x00000175 0x2d common/libcommon.a(cmd_cache.o)
    .ARM.attributes
    0x000001a2 0x2d common/libcommon.a(cmd_echo.o)
    .ARM.attributes
    0x000001cf 0x2d common/libcommon.a(cmd_exit.o)
    .ARM.attributes
    0x000001fc 0x2d common/libcommon.a(cmd_fat.o)
    .ARM.attributes
    0x00000229 0x2d common/libcommon.a(cmd_help.o)
    .ARM.attributes
    0x00000256 0x2d common/libcommon.a(cmd_load.o)
    .ARM.attributes
    0x00000283 0x2d common/libcommon.a(cmd_mem.o)
    .ARM.attributes
    0x000002b0 0x2d common/libcommon.a(cmd_mmc.o)
    .ARM.attributes
    0x000002dd 0x2d common/libcommon.a(cmd_nvedit.o)
    .ARM.attributes
    0x0000030a 0x2d common/libcommon.a(cmd_test.o)
    .ARM.attributes
    0x00000337 0x2d common/libcommon.a(cmd_version.o)
    .ARM.attributes
    0x00000364 0x2d common/libcommon.a(command.o)
    .ARM.attributes
    0x00000391 0x2d common/libcommon.a(console.o)
    .ARM.attributes
    0x000003be 0x2d common/libcommon.a(dlmalloc.o)
    .ARM.attributes
    0x000003eb 0x2d common/libcommon.a(env_common.o)
    .ARM.attributes
    0x00000418 0x2d common/libcommon.a(env_nowhere.o)
    .ARM.attributes
    0x00000445 0x2d common/libcommon.a(exports.o)
    .ARM.attributes
    0x00000472 0x2d common/libcommon.a(hush.o)
    .ARM.attributes
    0x0000049f 0x2d common/libcommon.a(image.o)
    .ARM.attributes
    0x000004cc 0x2d common/libcommon.a(main.o)
    .ARM.attributes
    0x000004f9 0x2d common/libcommon.a(stdio.o)
    .ARM.attributes
    0x00000526 0x2d common/libcommon.a(xyzModem.o)
    .ARM.attributes
    0x00000553 0x2d board/ti/ti8148/libti8148.a(evm.o)
    .ARM.attributes
    0x00000580 0x2d lib/libgeneric.a(crc16.o)
    .ARM.attributes
    0x000005ad 0x2d lib/libgeneric.a(crc32.o)
    .ARM.attributes
    0x000005da 0x2d lib/libgeneric.a(ctype.o)
    .ARM.attributes
    0x00000607 0x2d lib/libgeneric.a(display_options.o)
    .ARM.attributes
    0x00000634 0x2d lib/libgeneric.a(div64.o)
    .ARM.attributes
    0x00000661 0x2d lib/libgeneric.a(net_utils.o)
    .ARM.attributes
    0x0000068e 0x2d lib/libgeneric.a(string.o)
    .ARM.attributes
    0x000006bb 0x2d lib/libgeneric.a(time.o)
    .ARM.attributes
    0x000006e8 0x2d lib/libgeneric.a(vsprintf.o)
    .ARM.attributes
    0x00000715 0x2d arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    .ARM.attributes
    0x00000742 0x2d arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    .ARM.attributes
    0x0000076f 0x2d arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    .ARM.attributes
    0x0000079c 0x2d arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    .ARM.attributes
    0x000007c9 0x1d arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(cache.o)
    .ARM.attributes
    0x000007e6 0x2d arch/arm/lib/libarm.a(bootm.o)
    .ARM.attributes
    0x00000813 0x2d arch/arm/lib/libarm.a(cache.o)
    .ARM.attributes
    0x00000840 0x2d arch/arm/lib/libarm.a(cache-cp15.o)
    .ARM.attributes
    0x0000086d 0x2d arch/arm/lib/libarm.a(reset.o)
    .ARM.attributes
    0x0000089a 0x2d fs/fat/libfat.a(fat.o)
    .ARM.attributes
    0x000008c7 0x2d disk/libdisk.a(part.o)
    .ARM.attributes
    0x000008f4 0x2d disk/libdisk.a(part_dos.o)
    .ARM.attributes
    0x00000921 0x2d drivers/mmc/libmmc.a(omap_hsmmc.o)
    .ARM.attributes
    0x0000094e 0x2d arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    .ARM.attributes
    0x0000097b 0x2d /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    .ARM.attributes
    0x000009a8 0x16 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    .ARM.attributes
    0x000009be 0x16 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    .ARM.attributes
    0x000009d4 0x16 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    .ARM.attributes
    0x000009ea 0x16 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    .ARM.attributes
    0x00000a00 0x14 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)

    .comment 0x00000000 0x8e7
    .comment 0x00000000 0x2b arch/arm/lib/libarm.a(board.o)
    .comment 0x0000002b 0x2b arch/arm/lib/libarm.a(interrupts.o)
    .comment 0x00000056 0x2b drivers/mmc/libmmc.a(mmc.o)
    .comment 0x00000081 0x2b drivers/serial/libserial.a(serial.o)
    .comment 0x000000ac 0x2b drivers/serial/libserial.a(ns16550.o)
    .comment 0x000000d7 0x2b common/libcommon.a(cmd_boot.o)
    .comment 0x00000102 0x2b common/libcommon.a(cmd_bootm.o)
    .comment 0x0000012d 0x2b common/libcommon.a(cmd_cache.o)
    .comment 0x00000158 0x2b common/libcommon.a(cmd_echo.o)
    .comment 0x00000183 0x2b common/libcommon.a(cmd_exit.o)
    .comment 0x000001ae 0x2b common/libcommon.a(cmd_fat.o)
    .comment 0x000001d9 0x2b common/libcommon.a(cmd_help.o)
    .comment 0x00000204 0x2b common/libcommon.a(cmd_load.o)
    .comment 0x0000022f 0x2b common/libcommon.a(cmd_mem.o)
    .comment 0x0000025a 0x2b common/libcommon.a(cmd_mmc.o)
    .comment 0x00000285 0x2b common/libcommon.a(cmd_nvedit.o)
    .comment 0x000002b0 0x2b common/libcommon.a(cmd_test.o)
    .comment 0x000002db 0x2b common/libcommon.a(cmd_version.o)
    .comment 0x00000306 0x2b common/libcommon.a(command.o)
    .comment 0x00000331 0x2b common/libcommon.a(console.o)
    .comment 0x0000035c 0x2b common/libcommon.a(dlmalloc.o)
    .comment 0x00000387 0x2b common/libcommon.a(env_common.o)
    .comment 0x000003b2 0x2b common/libcommon.a(env_nowhere.o)
    .comment 0x000003dd 0x2b common/libcommon.a(exports.o)
    .comment 0x00000408 0x2b common/libcommon.a(hush.o)
    .comment 0x00000433 0x2b common/libcommon.a(image.o)
    .comment 0x0000045e 0x2b common/libcommon.a(main.o)
    .comment 0x00000489 0x2b common/libcommon.a(stdio.o)
    .comment 0x000004b4 0x2b common/libcommon.a(xyzModem.o)
    .comment 0x000004df 0x2b board/ti/ti8148/libti8148.a(evm.o)
    .comment 0x0000050a 0x2b lib/libgeneric.a(crc16.o)
    .comment 0x00000535 0x2b lib/libgeneric.a(crc32.o)
    .comment 0x00000560 0x2b lib/libgeneric.a(ctype.o)
    .comment 0x0000058b 0x2b lib/libgeneric.a(display_options.o)
    .comment 0x000005b6 0x2b lib/libgeneric.a(div64.o)
    .comment 0x000005e1 0x2b lib/libgeneric.a(net_utils.o)
    .comment 0x0000060c 0x2b lib/libgeneric.a(string.o)
    .comment 0x00000637 0x2b lib/libgeneric.a(time.o)
    .comment 0x00000662 0x2b lib/libgeneric.a(vsprintf.o)
    .comment 0x0000068d 0x2b arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    .comment 0x000006b8 0x2b arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    .comment 0x000006e3 0x2b arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    .comment 0x0000070e 0x2b arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    .comment 0x00000739 0x2b arch/arm/lib/libarm.a(bootm.o)
    .comment 0x00000764 0x2b arch/arm/lib/libarm.a(cache.o)
    .comment 0x0000078f 0x2b arch/arm/lib/libarm.a(cache-cp15.o)
    .comment 0x000007ba 0x2b arch/arm/lib/libarm.a(reset.o)
    .comment 0x000007e5 0x2b fs/fat/libfat.a(fat.o)
    .comment 0x00000810 0x2b disk/libdisk.a(part.o)
    .comment 0x0000083b 0x2b disk/libdisk.a(part_dos.o)
    .comment 0x00000866 0x2b drivers/mmc/libmmc.a(omap_hsmmc.o)
    .comment 0x00000891 0x2b arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    .comment 0x000008bc 0x2b /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o

    .note.GNU-stack
    0x00000000 0x0
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(board.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(interrupts.o)
    .note.GNU-stack
    0x00000000 0x0 drivers/mmc/libmmc.a(mmc.o)
    .note.GNU-stack
    0x00000000 0x0 drivers/serial/libserial.a(serial.o)
    .note.GNU-stack
    0x00000000 0x0 drivers/serial/libserial.a(ns16550.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_boot.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_bootm.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_cache.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_echo.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_exit.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_fat.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_help.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_load.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_mem.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_mmc.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_nvedit.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_test.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(cmd_version.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(command.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(console.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(dlmalloc.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(env_common.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(env_nowhere.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(exports.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(hush.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(image.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(main.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(stdio.o)
    .note.GNU-stack
    0x00000000 0x0 common/libcommon.a(xyzModem.o)
    .note.GNU-stack
    0x00000000 0x0 board/ti/ti8148/libti8148.a(evm.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(crc16.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(crc32.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(ctype.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(display_options.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(div64.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(net_utils.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(string.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(time.o)
    .note.GNU-stack
    0x00000000 0x0 lib/libgeneric.a(vsprintf.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(mem.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(timer.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(syslib.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/cpu/arm_cortexa8/ti81xx/libti81xx.a(sys_info.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(bootm.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(cache.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(cache-cp15.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/lib/libarm.a(reset.o)
    .note.GNU-stack
    0x00000000 0x0 fs/fat/libfat.a(fat.o)
    .note.GNU-stack
    0x00000000 0x0 disk/libdisk.a(part.o)
    .note.GNU-stack
    0x00000000 0x0 disk/libdisk.a(part_dos.o)
    .note.GNU-stack
    0x00000000 0x0 drivers/mmc/libmmc.a(omap_hsmmc.o)
    .note.GNU-stack
    0x00000000 0x0 arch/arm/cpu/arm_cortexa8/libarm_cortexa8.a(cpu.o)
    .note.GNU-stack
    0x00000000 0x0 /home/share/vefone-work-space/dm8148/uboot/src/u-boot-v1.1/arch/arm/lib/eabi_compat.o
    .note.GNU-stack
    0x00000000 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    .note.GNU-stack
    0x00000000 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)
    .note.GNU-stack
    0x00000000 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_lshrdi3.o)
    .note.GNU-stack
    0x00000000 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_ashldi3.o)
    .note.GNU-stack
    0x00000000 0x0 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o)

    .debug_frame 0x00000000 0x40
    .debug_frame 0x00000000 0x20 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_udivsi3.o)
    .debug_frame 0x00000020 0x20 /home/vefone/tools/arm-none-linux-gnueabi/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_divsi3.o)

    Thank you!

    vefone.
  • Pavel
    The uboot is from ezsdk_dm814x-evm_5_05_02_00_setuplinux.

    Thank you!
    vefone
  • vefone said:
    0x403104f4 start_armboot

    I see your start_armboot is now at the OCMC RAM address 0x403104f4.

    "I use xds200 to load the MLO to 0x40300000(OCMC RAM), and set a breakpoint at 0x403000cc,then I run to the breakpoint .After that,I step over,but it will run to 0x807004f4,which is the address on ddr.and also the address of start_armboot function."

    Now when you debug with CCS the new MLO (step over) at which step it stop, is it still at DDR3 address 0x807004f4?

    What are the commands you are using to build your u-boot.min.sd/MLO? On my side, I am working with u-boot.min.uart, and build it with the below commands:

    $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
    $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm ti8148_evm_min_uart
    $ make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm u-boot.ti

    Thus I generate u-boot.min.uart. And when I load this u-boot.min.uart I have:

    U-Boot 2010.06 (Apr 26 2016 - 11:32:58)

    TI8148-GP rev 2.1

    ARM clk: 720MHz
    DDR clk: 400MHz

    DRAM:  1 GiB
    DCACHE:  Off
    Using default environment

    The 2nd stage U-Boot will now be auto-loaded
    Please do not interrupt the countdown till TI8148_EVM prompt if 2nd stage is already flashed
    Hit any key to stop autoboot:  0
    TI-MIN#



    Please provide me the below things:

    1. The steps to create new u-boot.min.sd/MLO (after you modify evm.c and Makefile)
    2. The console log when creating new u-boot.min.sd/MLO

    Try also:
    - delete u-boot.bin from the SD card, place there only MLO and try to load/boot it
    - try with UART boot, instead of SD boot

    Regards,

    Pavel

     

  • Pavel
    1. The steps to create new u-boot.min.sd/MLO (after you modify evm.c and Makefile)
    here is my steps:

    make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
    make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm ti8148_evm_min_sd
    make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm u-boot.ti

    2. The console log when creating new u-boot.min.sd/MLO

    6406.log.txt


    3. when I delete u-boot.bin from the SD card, place there only MLO and try to load/boot it,it don't work fine too.
    4. When I try to UART boot,it works fine.

    U-Boot 2010.06-dirty (Apr 26 2016 - 21:43:19)

    TI8148-GP rev 3.0

    ARM clk: 600MHz
    DDR clk: 400MHz

    DRAM: 2 GiB
    Using default environment

    The 2nd stage U-Boot will now be auto-loaded
    Please do not interrupt the countdown till TI8148_EVM prompt if 2nd stage is already flashed
    Hit any key to stop autoboot: 0
    TI-MIN#

    5 It seems that change the TEXT_BASE don't work fine for SD boot.Any suggestion?

    6. What are the difference  between sd boot and uart boot?knowingthat Maybe it will helpful.

    Regards,

    Vefone

  • Pavel
    What's more.
    When I change the TEXT_BASE to 0x40310000,using CCS load the MLO to 0x40300000,and it can not run to 0x403000cc(the breakpoint that work fine at the TEXT_BASE 0x80700000),and not run to the OCMC RAM address 0x403104f4( start_armboot) too.

    Thank you.
    vefone
  • Vefone,

    If you use the default evm.c and Makefile (without modifications) and remove u-boot.bin from the SD card, will you be able to load/boot the MLO?

    Regards,
    Pavel
  • Pavel,
    Yes,it can.

    Regards,
    Vefone
  • Can you provide full console log when you boot/load the default MLO (removing u-boot.bin)?
  • Pavel,
    here are the log:
    U-Boot 2010.06 (Apr 27 2016 - 15:31:33)

    TI8148-GP rev 3.0

    ARM clk: 600MHz
    DDR clk: 400MHz

    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0
    Using default environment

    The 2nd stage U-Boot will now be auto-loaded
    Please do not interrupt the countdown till TI8148_EVM prompt if 2nd stage is already flashed
    Hit any key to stop autoboot: 0
    reading u-boot.bin

    ** Unable to read "u-boot.bin" from mmc 0:1 **
    ## Starting application at 0x80800000 ...
  • Vefone,

    The difference between u-boot.min.uart and u-boot.min.sd/MLO is in the bootcmd.

    u-boot.min.uart is using CONFIG_UART_BOOT, see u-boot/include/configs/ti8148_evm.h file:

    #elif defined(CONFIG_UART_BOOT)                /* stop in the min prompt */

    #define CONFIG_EXTRA_ENV_SETTINGS \

    "verify=yes\0" \

    "bootcmd=\0" \

    While u-boot.min.sd/MLO is using CONFIG_SD_BOOT:

    # elif defined(CONFIG_SD_BOOT)        /* Autoload the 2nd stage from SD */
    #  define CONFIG_MMC            1
    #  define CONFIG_EXTRA_ENV_SETTINGS \
        "verify=yes\0" \
        "bootcmd=mmc rescan 0; fatload mmc 0 0x80800000 u-boot.bin; go 0x80800000\0" \

    As you can see, MLO is using different bootcmd in attempt to autoload the u-boot.bin in DDR3 (which you have disabled).


    Can you try with the below modification:

    u-boot/include/configs/ti8148_evm.h

    # elif defined(CONFIG_SD_BOOT)        /* Autoload the 2nd stage from SD */
    #  define CONFIG_MMC            1
    #  define CONFIG_EXTRA_ENV_SETTINGS \
        "verify=yes\0" \
       - "bootcmd=mmc rescan 0; fatload mmc 0 0x80800000 u-boot.bin; go 0x80800000\0" \
       +"bootcmd=\0" \

     

    Modify Makefile, evm.c and ti8148_evm.h, rebuild the u-boot.min.sd and have a try.

     

    BR
    Pavel

  • Pavel,
    Here are:
    diff --git a/Makefile b/Makefile
    index 2664c8c..3f9a137 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -3214,7 +3214,7 @@ ti8148_evm_min_sd: unconfig
    @echo "#define CONFIG_TI81XX" >>$(obj)include/config.h
    @echo "#define CONFIG_TI814X" >>$(obj)include/config.h
    @if [ "$(findstring _min_,$@)" ] ; then \
    - echo "TEXT_BASE = 0x80700000" >> $(obj)board/ti/ti8148/config.tm
    + echo "TEXT_BASE = 0x40310000" >> $(obj)board/ti/ti8148/config.tm
    echo "#define CONFIG_TI814X_MIN_CONFIG" >>$(obj)include/confi
    echo "Setting up TI8148 minimal build for 1st stage..." ; \
    if [ "$(findstring nand,$@)" ] ; then \
    diff --git a/include/configs/ti8148_evm.h b/include/configs/ti8148_evm.h
    index 306f96c..6dd8fb5 100644
    --- a/include/configs/ti8148_evm.h
    +++ b/include/configs/ti8148_evm.h
    @@ -71,7 +71,7 @@
    # define CONFIG_MMC 1
    # define CONFIG_EXTRA_ENV_SETTINGS \
    "verify=yes\0" \
    - "bootcmd=mmc rescan 0; fatload mmc 0 0x80800000 u-boot.bin; go 0x80800000\0" \
    + "bootcmd=\0" \

    #elif defined(CONFIG_UART_BOOT) /* stop in the min prompt */
    #define CONFIG_EXTRA_ENV_SETTINGS \


    It can not worl fine too.

    Thank you!
    Vefone
  • Vefone,

    I can not see other differences between u-boot.min.uart and u-boot.min.sd/MLO. You can try to debug the u-boot.min.sd/MLO with CCS, see the below e2e thread:
    e2e.ti.com/.../331762

    See at which step exactly the u-boot.min.sd/MLO will hang and compare the flow with u-boot.min.uart

    BR
    Pavel
  • Hi,

    I am not sure if this will be helpful. I have checked the u-boot.min.uart location in DM385(not DM814x), to know where the ROM code puts the image. There is around 63KB of ARM Cortex-A8 RAM (Accessible by ARM Cortex-A8 only) starting from 0x402F_0400 to 0x402F_FFFF.

    I notice that u-boot.min.uart started from 0x402F0400 and not from 0x40300000(OCMC RAM). Not sure if this may be the case in DM814x also.
  • Hi Dwarakesh,

    This is interesting. How exactly you define that u-boot.min.uart start from 0x402F0400? I suspect this might be also the case with DM814x device, as I found we have the same for Sitara devices:

    - when we have peripheral boot (i.e. UART), start address is 0x402F0400

    - when we have memory boot (i.e. SD card), start address is 0x40300000

    When we have peripheral boot, we do not have "image header", while we have "image header" in memory boot.

    Vefone,

    Can you try to add the below line in u-boot/Makefile, what is the result?

    elif [ "$(findstring sd,$@)" ] ; then \

    echo "#define CONFIG_SD_BOOT"    >>$(obj)include/config.h ; \

    echo "#define CONFIG_NO_ETH"    >>$(obj)include/config.h ; \

    echo "#define CONFIG_SYS_NO_FLASH"    >>$(obj)include/config.h ; \

    +echo "#define CONFIG_TI81XX_PERIPHERAL_BOOT" >>$(obj)include/config.h; \

    echo "TI_IMAGE = u-boot.min.sd" >> $(obj)board/ti/ti8148/config.tmp;\

  • Hi Pavel,

    I did a memory window watch in CCS and compared with my uboot.min.uart hexdump to know where it started. This was done some time back.
  • Pavel,

    I did what you suggest,and add +echo "#define CONFIG_TI81XX_PERIPHERAL_BOOT" >>$(obj)include/config.h; \ on the uboot/Makefile,but it don't work too.

    Now I edit the config.mk,let DBGFLAGS= -g,and edit Makefile ,let the TEXT_BASE = 0x40300000.Then I use ccs debug the u-boot file.When it run to  arch/arm/cpu/arm_cortexa8/start.S/clbss_l,I saw the value of r0 is 0x4031330c,and the value of r1 is 0x40344090.It seems that the r1 is outpace the address of on chip RAM.The size of bss is 195K,which is too large.Because of that,it can not run to "ldr pc, _start_armboot @ jump to C code".

    clbss_l:
    str r2, [r0] @ clear BSS location
    cmp r0, r1 @ are we at the end yet
    add r0, r0, #4 @ increment clear index pointer
    bne clbss_l @ keep clearing till at end

    ldr pc, _start_armboot @ jump to C code

    Thank you!

    Vefone

     

  • Hi Vefone,

    Though the OCMC RAM is 128KB, only around 110KB or something can be used. ROM code maintains some tables, magic numbers etc there. Reduce the size of the image by removing unnecessary code in u-boot. Say SD Card driver, NAND driver etc, which are not required and restrict to 110KB.
  • Hi Vefone,

    Thereby you will be able to reduce on lots of global sructures and hence the BSS section too.
  • Vefone,

    Can you also try to build and load MLO with making the below modification first:

    u-boot/board/ti/ti8148/config.mk

    # ROM code will load u-boot to this address
    -TI_LOAD_ADDR = 0x40300000
    +TI_LOAD_ADDR = 0x402F0400

    Regarding u-boot size optimization, see the below pointers:

    processors.wiki.ti.com/.../Sitara_Linux_SDK_Training - see "Optimizing Linux Boot Time" ppt

    processors.wiki.ti.com/.../Sitara_Linux_Training:_Boot_Time_Reduction

    Regards,
    Pavel
  • Pavel,

    I am happy to tell you that it work fine.And here is  my modification:


    # elif defined(CONFIG_SD_BOOT) /* Autoload the 2nd stage from SD */--- a/include/configs/ti8148_evm.h
    +++ b/include/configs/ti8148_evm.h
    @@ -62,7 +62,7 @@
    "bootcmd=nand read 0x81000000 0x20000 0x40000; go 0x81000000\0" \

    -# define CONFIG_MMC 1
    +//# define CONFIG_MMC 1
    # define CONFIG_EXTRA_ENV_SETTINGS \
    "verify=yes\0" \
    "bootcmd=mmc rescan 0; fatload mmc 0 0x80800000 u-boot.bin; go 0x8080000

    diff --git a/Makefile b/Makefile
    index 2664c8c..6197592 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -3214,7 +3214,7 @@ ti8148_evm_min_sd: unconfig
    @echo "#define CONFIG_TI81XX" >>$(obj)include/config.h
    @echo "#define CONFIG_TI814X" >>$(obj)include/config.h
    @if [ "$(findstring _min_,$@)" ] ; then \
    - echo "TEXT_BASE = 0x80700000" >> $(obj)board/ti/ti8148/config.tm
    + echo "TEXT_BASE = 0x40300000" >> $(obj)board/ti/ti8148/config.tm
    echo "#define CONFIG_TI814X_MIN_CONFIG" >>$(obj)include/confi
    echo "Setting up TI8148 minimal build for 1st stage..." ; \
    if [ "$(findstring nand,$@)" ] ; then \

    The MLO can boot up,but because I delete the "# define CONFIG_MMC 1"  in include/configs/ti8148_evm.h,I can not continue to boot up u-boot.bin.Now I ready  to cut out the uboot.

    Thank you!

    vefone.

  • Pavel,
    The MLO can boot up,but all the command can not work because I delete the "# define CONFIG_MMC 1" in include/configs/ti8148_evm.h,I can not continue to boot up uImage,Now I ready to cut out the uboot.

    U-Boot 2010.06-dirty (May 04 2016 - 14:32:53)

    DRAM: 2 GiB
    Using default environment

    Hit any key to stop autoboot: 0
    TI8148_EVM#?
    Unknown command '?' - try 'help'
    TI8148_EVM#?
    Unknown command '?' - try 'help'
    TI8148_EVM#?
    Unknown command '?' - try 'help'
    TI8148_EVM#

    Regrads,
    vefone
  • Vefone,

    Good to see you fix this. Can you resolve the e2e thread?

    BR
    Pavel
  • Hello,

    I have the same issue: u-boot min works, but MLO fails.

    Not sure how to resolve it, the green solution did not solve this issue for me.

    Thank you for any suggestions,

    Ran