Hi Joyce,
On 09/05/17 17:15, Joyce Peng(彭美僑) wrote:
>
> Hi all,
>
> I tried to run seL4 test suite on my ARM Cortex-A7 target board.
>
What is the name of the board you have? How do you build and run sel4test?
>
> There is no error message when boot up seL4 kernel and boot strap test
> program on seL4 user land.
>
> But I got a “data abort” message after call
> sel4utils_map_page(..vaddr) and do memset(vaddr, 0, PAGE_SIZE_4K);
>
> There are some debug information list below.
>
> <1> I add debug message before the program that happen data abort
>
> diff --git a/libsel4utils/src/vspace/bootstrap.c
> b/libsel4utils/src/vspace/bootstrap.c
>
> index c366a35..70d378a 100644
>
> --- a/libsel4utils/src/vspace/bootstrap.c
>
> +++ b/libsel4utils/src/vspace/bootstrap.c
>
> @@ -107,13 +107,13 @@ static void *alloc_and_map(vspace_t *vspace,
> size_t size) {
>
> error = sel4utils_map_page(data->vka, data->vspace_root,
> frame.cptr, vaddr,
>
> seL4_AllRights, 1, objects, &num);
>
> + LOG_ERROR("my-hacker\n");
>
> if (error) {
>
> vka_free_object(data->vka, &frame);
>
> LOG_ERROR("Failed to map bootstrap frame at %p, error: %d", vaddr, error);
>
> return NULL;
>
> }
>
> + LOG_ERROR("my-hacker alloc_and_map() before memset vaddr=0x%x\n",vaddr);
>
> /* Zero the memory */
>
> memset(vaddr, 0, PAGE_SIZE_4K);
>
> <2>Printed messages:
>
> ELF-loader started on CPU: ARM Ltd. Cortex-A7 r0p5
>
> paddr=[20000000..2051881f]
>
> ELF-loading image 'kernel'
>
> paddr=[22000000..22032fff]
>
> vaddr=[e0000000..e0032fff]
>
> virt_entry=e0000000
>
> ELF-loading image 'sel4test-driver'
>
> paddr=[22033000..22463fff]
>
> vaddr=[8000..438fff]
>
> virt_entry=15f50
>
> Enabling MMU and paging
>
> Jumping to kernel-image entry point...
>
> Bootstrapping kernel
>
> Booting all finished, dropped to user space
>
> Warning: using printf before serial is set up. This only works as your
>
> printf is backed by seL4_Debug_PutChar()
>
> [email protected]:111 my-hacker
>
> [email protected]:119 my-hacker alloc_and_map() before
> memset() vaddr=0xdf7fe000
>
> <3>When happen data abort, the value of CPU registers:
>
> r1:0
>
> r3:0xdf7fe000
>
> lr:0xcbe8
>
> <4>Objdump sel4test-driver.
>
> 0000cbc8 <memset>:
>
> cbc8: e3520000 cmp r2, #0
>
> cbcc: e92d4030 push {r4, r5, lr}
>
> cbd0: 08bd8030 popeq {r4, r5, pc}
>
> cbd4: e0803002 add r3, r0, r2
>
> cbd8: e6ef1071 uxtb r1, r1
>
> cbdc: e3520002 cmp r2, #2
>
> cbe0: e5431001 strb r1, [r3, #-1]
>
> cbe4: e5c01000 strb r1, [r0]
>
> cbe8: 98bd8030 popls {r4, r5, pc}
>
> cbec: e3520006 cmp r2, #6
>
> It seems to write virtual address 0xdf7ff000.
>
> <5>The virtual address 0xdf7fe000 is not map in page table
>
> It seems sel4utils_map_page() not create page table for user land
> program correctly.
>
> Can anyonehelp me, how to solve this problem? Thanks!
>
> Joyce Peng(彭美僑)
>
>
>
> _______________________________________________
> Devel mailing list
> [email protected]
> https://sel4.systems/lists/listinfo/devel
Cheers,
Hesham
_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel