64 bit ARM ELF image load in Tx1 platform
Hi All, I have been trying to load 64bit seL4 (kernel+user space) ELF image on Tx1 board but it's failed to start the application and crashed with reason '"Synchronous Abort" handler, esr 0x02000000' always. Just walk through the Tx1 u-boot code and found that 'load_elf_image_phdr(unsigned long addr)' is using 32bit ELF header structure pointer to load the program header. I would like to understand whether 64bit ELF image load handled using 32bit elf header itself or we need to configure u-boot to load 64 bit ELF image ? I have modified the kernel base addr as 0xffffffc000080000 and phyadd as 0x80080000 to boot sel4 app image on TX1 board nothing has worked out. Please share details if someone succeeded to bring sel4 app elf image on Tx1 platform. Regards, Munees
Hi Munees, Apologies for the bum steer. I have now heard that the "bootelf" command does not work on the tx1, obviously this information comes too late. The alternative is to convert the elf format file into a binary file, load it to the correct location in memory, and use the "go" command with the appropriate entry point. From the elf file, the load address and entry point should both be 0x0. The menuconfig has an option for generating binary files under: Tools -> Build elfloader -> Boot image type - Alex On Mon, 2017-10-16 at 19:31 +0530, Muneeswaran Rajendran wrote:
Hi All,
I have been trying to load 64bit seL4 (kernel+user space) ELF image on Tx1 board but it's failed to start the application and crashed with reason '"Synchronous Abort" handler, esr 0x02000000' always.
Just walk through the Tx1 u-boot code and found that 'load_elf_image_phdr(unsigned long addr)' is using 32bit ELF header structure pointer to load the program header.
I would like to understand whether 64bit ELF image load handled using 32bit elf header itself or we need to configure u-boot to load 64 bit ELF image ?
I have modified the kernel base addr as 0xffffffc000080000 and phyadd as 0x80080000 to boot sel4 app image on TX1 board nothing has worked out.
Please share details if someone succeeded to bring sel4 app elf image on Tx1 platform.
Regards, Munees _______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
Hi Alex,
Thanks for confirmation. As you suggested to use binary file to load at
address is 0x0.
Build the binary image using menuconfig option and loaded the image into
0x00, and used the 'go 0x0'.
but still kernel crashed with below dump.
Tegra210 (P2371-2180) # ext4load mmc 1 0x0
sel4test-driver-image-arm-tx1.bin
6858320 bytes read in 451 ms (14.5 MiB/s)
Tegra210 (P2371-2180) # go 0x0
## Starting application at 0x00000000 ...
"Synchronous Abort" handler, esr 0x8600000e
ELR: 0
LR: ff1328d0
x0 : 0000000000000001 x1 : 00000000fcc2c238
x2 : 00000000fcc2c238 x3 : 0000000000000000
x4 : 0000000000000030 x5 : 0000000000000000
x6 : 00000000ffffffd0 x7 : 0000000000000044
x8 : 0000000000000210 x9 : 0000000000000008
x10: 000000000000000f x11: 00000000ff179c20
x12: 0000000000000000 x13: 0000000000000040
x14: 0000000000000001 x15: 00000000ff12c0e4
x16: 00000000ff12c2f8 x17: 0000000000010000
x18: 00000000fcc28df8 x19: 00000000fcc2c238
x20: 0000000000000002 x21: 0000000000000000
x22: 00000000fcc2c230 x23: 0000000000000002
x24: 00000000ff198b38 x25: 0000000000000000
x26: 0000000000000000 x27: 00000000fcc2bff0
x28: 0000000000000000 x29: 00000000fcc24a10
Also verified the elf image header sections for reference the load memory
address is 0x0
:~$ aarch64-linux-gnu-objdump -h sel4test-driver-image-arm-tx1
sel4test-driver-image-arm-tx1: file format elf64-littleaarch64
Sections:
Idx Name Size VMA LMA File off
Algn
0 .text 0000700c 0000000000000000 0000000000000000 00010000
2**12
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .rodata 0044ef80 0000000000007010 0000000000007010 00017010
2**3
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000a000 0000000000456000 0000000000456000 00465f90
2**12
ALLOC
3 .comment 00000082 0000000000000000 0000000000000000 00465f90
2**0
CONTENTS, READONLY
Please suggest if anything is missing.
Regards,
Munees
On Tue, Oct 17, 2017 at 9:11 AM,
Hi Munees,
Apologies for the bum steer. I have now heard that the "bootelf" command does not work on the tx1, obviously this information comes too late.
The alternative is to convert the elf format file into a binary file, load it to the correct location in memory, and use the "go" command with the appropriate entry point. From the elf file, the load address and entry point should both be 0x0.
The menuconfig has an option for generating binary files under: Tools -> Build elfloader -> Boot image type
- Alex
On Mon, 2017-10-16 at 19:31 +0530, Muneeswaran Rajendran wrote:
Hi All,
I have been trying to load 64bit seL4 (kernel+user space) ELF image on Tx1 board but it's failed to start the application and crashed with reason '"Synchronous Abort" handler, esr 0x02000000' always.
Just walk through the Tx1 u-boot code and found that 'load_elf_image_phdr(unsigned long addr)' is using 32bit ELF header structure pointer to load the program header.
I would like to understand whether 64bit ELF image load handled using 32bit elf header itself or we need to configure u-boot to load 64 bit ELF image ?
I have modified the kernel base addr as 0xffffffc000080000 and phyadd as 0x80080000 to boot sel4 app image on TX1 board nothing has worked out.
Please share details if someone succeeded to bring sel4 app elf image on Tx1 platform.
Regards, Munees _______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
Hi Munees, I am afraid that this is the limit of my TX1 knowledge. Sorry I can't be more help. - Alex On Tue, 2017-10-17 at 11:03 +0530, Muneeswaran Rajendran wrote:
Hi Alex,
Thanks for confirmation. As you suggested to use binary file to load at address is 0x0.
Build the binary image using menuconfig option and loaded the image into 0x00, and used the 'go 0x0'.
but still kernel crashed with below dump.
Tegra210 (P2371-2180) # ext4load mmc 1 0x0 sel4test-driver-image-arm- tx1.bin 6858320 bytes read in 451 ms (14.5 MiB/s) Tegra210 (P2371-2180) # go 0x0 ## Starting application at 0x00000000 ... "Synchronous Abort" handler, esr 0x8600000e ELR: 0 LR: ff1328d0 x0 : 0000000000000001 x1 : 00000000fcc2c238 x2 : 00000000fcc2c238 x3 : 0000000000000000 x4 : 0000000000000030 x5 : 0000000000000000 x6 : 00000000ffffffd0 x7 : 0000000000000044 x8 : 0000000000000210 x9 : 0000000000000008 x10: 000000000000000f x11: 00000000ff179c20 x12: 0000000000000000 x13: 0000000000000040 x14: 0000000000000001 x15: 00000000ff12c0e4 x16: 00000000ff12c2f8 x17: 0000000000010000 x18: 00000000fcc28df8 x19: 00000000fcc2c238 x20: 0000000000000002 x21: 0000000000000000 x22: 00000000fcc2c230 x23: 0000000000000002 x24: 00000000ff198b38 x25: 0000000000000000 x26: 0000000000000000 x27: 00000000fcc2bff0 x28: 0000000000000000 x29: 00000000fcc24a10
Also verified the elf image header sections for reference the load memory address is 0x0
:~$ aarch64-linux-gnu-objdump -h sel4test-driver-image-arm-tx1
sel4test-driver-image-arm-tx1: file format elf64- littleaarch64
Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000700c 0000000000000000 0000000000000000 00010000 2**12 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .rodata 0044ef80 0000000000007010 0000000000007010 00017010 2**3 CONTENTS, ALLOC, LOAD, DATA 2 .bss 0000a000 0000000000456000 0000000000456000 00465f90 2**12 ALLOC 3 .comment 00000082 0000000000000000 0000000000000000 00465f90 2**0 CONTENTS, READONLY
Please suggest if anything is missing.
Regards, Munees
On Tue, Oct 17, 2017 at 9:11 AM,
wrote: Hi Munees,
Apologies for the bum steer. I have now heard that the "bootelf" command does not work on the tx1, obviously this information comes too late.
The alternative is to convert the elf format file into a binary file, load it to the correct location in memory, and use the "go" command with the appropriate entry point. From the elf file, the load address and entry point should both be 0x0.
The menuconfig has an option for generating binary files under: Tools -> Build elfloader -> Boot image type
- Alex
Hi All,
I have been trying to load 64bit seL4 (kernel+user space) ELF image on Tx1 board but it's failed to start the application and crashed with reason '"Synchronous Abort" handler, esr 0x02000000' always.
Just walk through the Tx1 u-boot code and found that 'load_elf_image_phdr(unsigned long addr)' is using 32bit ELF
structure pointer to load the program header.
I would like to understand whether 64bit ELF image load handled using 32bit elf header itself or we need to configure u-boot to load 64 bit ELF image ?
I have modified the kernel base addr as 0xffffffc000080000 and
On Mon, 2017-10-16 at 19:31 +0530, Muneeswaran Rajendran wrote: header phyadd
as 0x80080000 to boot sel4 app image on TX1 board nothing has worked out.
Please share details if someone succeeded to bring sel4 app elf image on Tx1 platform.
Regards, Munees _______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
Hi Munees, try '0x82000000' instead of '0x0'! - Amir ________________________________________ From: Kroh, Alexander (Data61, Kensington NSW) Sent: Wednesday, October 18, 2017 11:04 AM To: m.rajendran@matellio.com; Kroh, Alexander (Data61, Kensington NSW) Cc: devel@sel4.systems; Zarrabi, Amirreza (Data61, Kensington NSW) Subject: Re: [seL4] 64 bit ARM ELF image load in Tx1 platform Hi Munees, I am afraid that this is the limit of my TX1 knowledge. Sorry I can't be more help. - Alex On Tue, 2017-10-17 at 11:03 +0530, Muneeswaran Rajendran wrote:
Hi Alex,
Thanks for confirmation. As you suggested to use binary file to load at address is 0x0.
Build the binary image using menuconfig option and loaded the image into 0x00, and used the 'go 0x0'.
but still kernel crashed with below dump.
Tegra210 (P2371-2180) # ext4load mmc 1 0x0 sel4test-driver-image-arm- tx1.bin 6858320 bytes read in 451 ms (14.5 MiB/s) Tegra210 (P2371-2180) # go 0x0 ## Starting application at 0x00000000 ... "Synchronous Abort" handler, esr 0x8600000e ELR: 0 LR: ff1328d0 x0 : 0000000000000001 x1 : 00000000fcc2c238 x2 : 00000000fcc2c238 x3 : 0000000000000000 x4 : 0000000000000030 x5 : 0000000000000000 x6 : 00000000ffffffd0 x7 : 0000000000000044 x8 : 0000000000000210 x9 : 0000000000000008 x10: 000000000000000f x11: 00000000ff179c20 x12: 0000000000000000 x13: 0000000000000040 x14: 0000000000000001 x15: 00000000ff12c0e4 x16: 00000000ff12c2f8 x17: 0000000000010000 x18: 00000000fcc28df8 x19: 00000000fcc2c238 x20: 0000000000000002 x21: 0000000000000000 x22: 00000000fcc2c230 x23: 0000000000000002 x24: 00000000ff198b38 x25: 0000000000000000 x26: 0000000000000000 x27: 00000000fcc2bff0 x28: 0000000000000000 x29: 00000000fcc24a10
Also verified the elf image header sections for reference the load memory address is 0x0
:~$ aarch64-linux-gnu-objdump -h sel4test-driver-image-arm-tx1
sel4test-driver-image-arm-tx1: file format elf64- littleaarch64
Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000700c 0000000000000000 0000000000000000 00010000 2**12 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .rodata 0044ef80 0000000000007010 0000000000007010 00017010 2**3 CONTENTS, ALLOC, LOAD, DATA 2 .bss 0000a000 0000000000456000 0000000000456000 00465f90 2**12 ALLOC 3 .comment 00000082 0000000000000000 0000000000000000 00465f90 2**0 CONTENTS, READONLY
Please suggest if anything is missing.
Regards, Munees
On Tue, Oct 17, 2017 at 9:11 AM,
wrote: Hi Munees,
Apologies for the bum steer. I have now heard that the "bootelf" command does not work on the tx1, obviously this information comes too late.
The alternative is to convert the elf format file into a binary file, load it to the correct location in memory, and use the "go" command with the appropriate entry point. From the elf file, the load address and entry point should both be 0x0.
The menuconfig has an option for generating binary files under: Tools -> Build elfloader -> Boot image type
- Alex
Hi All,
I have been trying to load 64bit seL4 (kernel+user space) ELF image on Tx1 board but it's failed to start the application and crashed with reason '"Synchronous Abort" handler, esr 0x02000000' always.
Just walk through the Tx1 u-boot code and found that 'load_elf_image_phdr(unsigned long addr)' is using 32bit ELF
structure pointer to load the program header.
I would like to understand whether 64bit ELF image load handled using 32bit elf header itself or we need to configure u-boot to load 64 bit ELF image ?
I have modified the kernel base addr as 0xffffffc000080000 and
On Mon, 2017-10-16 at 19:31 +0530, Muneeswaran Rajendran wrote: header phyadd
as 0x80080000 to boot sel4 app image on TX1 board nothing has worked out.
Please share details if someone succeeded to bring sel4 app elf image on Tx1 platform.
Regards, Munees _______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
writes:
Hi Munees, I am afraid that this is the limit of my TX1 knowledge. Sorry I can't be more help.
I've just managed to build and run sel4test on the TX1. You need to load the image at 0x82000000 because it is not position independent. Also, I had troubles with gcc 7. GCC-5.4 works. Peter C -- Dr Peter Chubb Tel: +61 2 9490 5852 http://ts.data61.csiro.au/ Trustworthy Systems Group Data61 (formerly NICTA)
participants (4)
-
Alexander.Kroh@data61.csiro.au
-
Amirreza.Zarrabi@data61.csiro.au
-
Muneeswaran Rajendran
-
Peter.Chubb@data61.csiro.au