Hi Sathya,

I'm familiar with the use of the elfloader on ARM platforms, but not so 
familiar with the RISC-V port.
My bet is that the memcpy is overwriting some part of the elfloader code, data 
or stack sections.
To resolve this, you could try to load/execute the elfloader from a higher 
address in memory.

Alternatively, the destination address range for the memcpy may not be to RAM. 
It might help to draw a diagram of where RAM lies, where the elfloader lies, 
and where the kernel and user images will be copied to.

 - Alex


________________________________
From: Devel <[email protected]> on behalf of Sathya Narayanan N 
<[email protected]>
Sent: Friday, August 3, 2018 10:13 PM
To: [email protected]
Subject: [seL4] Porting SEL4 on RISCV FPGA

Hi,

I am porting SEL4 on RISCV FPGA. I am stuck midway in the kernel elf loader.

The function stuck is memcpy. I have added prints and I am not progressing 
after the last memcpy call in unpack_elf_to_paddr(). All kinds of input 
appreciated.


Function under review:
static void unpack_elf_to_paddr(void *elf, paddr_t dest_paddr)

        /* Parse size/length headers. */
        dest_vaddr = elf_getProgramHeaderVaddr(elf, i);
        data_size = elf_getProgramHeaderFileSize(elf, i);
        data_offset = elf_getProgramHeaderOffset(elf, i);

        /* Load data into memory. */

        memcpy((char *)dest_vaddr + phys_virt_offset,
               (char *)elf + data_offset, data_size);
printf("loaded data into memory \n");                 -----> Stuck Here !
     }

}

Can anyone give me a clue on whatsoever to check here ? It worked perfectly in 
spike simulation.

RISCV FPGA configuration - It supports IMAFD. It has already booted linux. 
Kernel is loaded at physical address 80 million.?

--
 regards,
Sathya


_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to