This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
Re: Booting ELF image using redboot
Subodh Nijsure wrote:
> Hello Weqaar,
>
> I am still not able to load the ELF image on my board that run
> redboot. I am trying to load image that is combined bzImage + ramdisk
> produced by wraplinux script.
> (http://www.kernel.org/pub/linux/utils/boot/wraplinux/)
>
> I have included output of readelf -h and 50 lines of system.map
>
> readelf -h vmlinux.initrd.wrap
> ELF Header:
> Magic: 7f 45 4c 46 01 01 01 ff 00 00 00 00 00 00 00 00
> Class: ELF32
> Data: 2's complement, little endian
> Version: 1 (current)
> OS/ABI: Standalone App
> ABI Version: 0
> Type: EXEC (Executable file)
> Machine: Intel 80386
> Version: 0x1
> Entry point address: 0x12a18
> Start of program headers: 52 (bytes into file)
> Start of section headers: 5309992 (bytes into file)
> Flags: 0x0
> Size of this header: 52 (bytes)
> Size of program headers: 32 (bytes)
> Number of program headers: 3
> Size of section headers: 40 (bytes)
> Number of section headers: 8
> Section header string table index: 7
>
>
>
> 00000400 A __kernel_vsyscall
> 00000410 A SYSENTER_RETURN
> 00000420 A __kernel_sigreturn
> 00000440 A __kernel_rt_sigreturn
> 00100000 A phys_startup_32
> c0100000 T _text
> c0100000 T startup_32
> c01000b0 T _stext
> c01000b0 t run_init_process
> c01000b0 T stext
> c01000c4 t init_post
> c01001b0 t try_name
> c010037b T name_to_dev_t
> c01005f0 T calibrate_delay
> c01008a0 T thread_saved_pc
> c01008aa T disable_hlt
> c01008b2 T enable_hlt
> c01008ba t poll_idle
> c01008bd T dump_task_regs
> c01009a8 T select_idle_routine
> c01009e3 T arch_align_stack
> c0100a18 T mwait_idle_with_hints
> c0100a52 t mwait_idle
> c0100a5c T sys_vfork
> c0100a8c T sys_clone
> c0100ac7 T sys_fork
> c0100af7 T release_thread
> c0100b0a T kernel_thread
> c0100b9c T cpu_idle
> c0100c05 T dump_thread
> c0100d22 T sys_execve
> c0100da2 T get_wchan
> c0100e22 T sys_set_thread_area
> c0100fb6 T sys_get_thread_area
> c01010de T show_regs
> c01012a1 T default_idle
> c01012da T copy_thread
> c01014b3 t __switch_to_xtra
> c0101518 T __switch_to
> c0101640 T cpu_idle_wait
> c01016b2 T exit_thread
> c010175f T flush_thread
> c01017d8 T prepare_to_copy
> c0101840 t setup_sigcontext
> c01019c9 T sys_sigaltstack
> c01019db t restore_sigcontext
> c0101bb5 T sys_sigaction
> c0101c8a T sys_rt_sigreturn
> c0101d62 T do_notify_resume
> c0102428 T sys_sigsuspend
>
Your image has Linux virtual addresses (which happen to correspond
to the physical RAM address, but not how RedBoot maps the RAM).
Try this:
RedBoot> lo -b 0x00100000 ...
RedBoot> exec -c "console=ttyS0,115200 ip=dhcp root=/dev/nfs ...
Note: no '-b' or '-l' option should be necessary for 'exec'
> On Sun, Jul 26, 2009 at 9:33 AM, Weqaar Janjua<weqaar@yahoo.com> wrote:
>> Please post the first 50 lines of System.map and output from 'readelf -h vmlinux'
>>
>> - Weqaar A. Janjua
>>
>>
>>
>> ----- Original Message ----
>> From: Subodh Nijsure <nijsure.subodh@gmail.com>
>> To: Gary Thomas <gary@mlbassoc.com>
>> Cc: ecos-devel@sourceware.org
>> Sent: Friday, July 24, 2009 5:30:34 PM
>> Subject: Re: Booting ELF image using redboot
>>
>> See my attempts below (still no joy, I am stumped appreciate help!)
>>
>> On Fri, Jul 24, 2009 at 8:15 AM, Gary Thomas<gary@mlbassoc.com> wrote:
>>> Subodh Nijsure wrote:
>>>> I am new to using redboot and I need some help.
>>>>
>>>> This is x86 platform.
>>>>
>>>> On this platform I can boot the bzImage but not the ELF format linux image.
>>>>
>>>> Example if I have following boot script my board boots fine.
>>>>
>>>> load -v -r -m disk -b 0x200000 hda2:bzImage
>>>> exec -b 0x200000 -l 0x300000 -c "console=ttyS0,115200 ip=dhcp
>>>> root=/dev/nfs (some env specific stuff) "
>>>>
>>>> However I can not get redboot to load the ELF image I see message (
>>>> Bootsector magic not found (0x8954 @ 0x002001fe)
>>>>
>>>> (Not this vmlinux was produced by build process that created bzImage
>>>> that works)
>>>>
>>>> load -v -r -m disk -b 0x200000 hda2:vmlinux
>>>> exec -b 0x200000 -l 0x300000 -c "console=ttyS0,115200 ip=dhcp
>>>> root=/dev/nfs (some env specific stuff) "
>>>> Bootsector magic not found (0x8954 @ 0x002001fe)
>>>>
>>>> Reason I am trying to boot ELF image is I am trying to use wraplinux
>>>> utility to wrap kernel and initrd, wraplinux produce
>>>>
>>>> Would appreciate any pointers as to what parameters I need to fix for
>>>> load/exec when loading ELF file.
>>> Try leaving out the '-r' and '-b' options - ELF loading
>>> should not need them.
>> So I tried doing the following
>>
>> load -v -m disk hda2:vmlinux
>> exec -c "console=ttyS0,115200 root=/dev/sda2 ip=dhcp platformid=0x500300"
>>
>> I also tried to execute exec with that specified -l
>>
>> load -v -m disk hda2:vmlinux
>> exec -l 0x500000 -c "console=ttyS0,115200 root=/dev/sda2 ip=dhcp
>> platformid=0x500300"
>>
>> without any luck objdump for vmlinux shows the following: so I have
>> also tried executing
>> go 0x00100000 without any luck
>>
>>
>> vmlinux: file format elf32-i386
>> vmlinux
>> architecture: i386, flags 0x00000112:
>> EXEC_P, HAS_SYMS, D_PAGED
>> start address 0x00100000
>>
>> Program Header:
>> LOAD off 0x00001000 vaddr 0xc0100000 paddr 0x00100000 align 2**12
>> filesz 0x0036032c memsz 0x0036032c flags r-x
>> LOAD off 0x00362000 vaddr 0xc0461000 paddr 0x00461000 align 2**12
>> filesz 0x0007a086 memsz 0x000bc000 flags rwx
>> NOTE off 0x002b4cd8 vaddr 0xc03b3cd8 paddr 0x003b3cd8 align 2**2
>> filesz 0x00000024 memsz 0x00000024 flags ---
>>
>>
>>
>>
>> /Subodh
>>
>>
>>
>>
>>
>>
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------