issues in running sel4test on RISC-V rocket-chip FPGA
Hi guys, I have ported rocket chip (github.com/ucb-bar/fpga-zynq) on a ZCU102 FPGA board and it successfully runs riscv-linux. It's RV64G RISC-V. I am trying to run sel4test on the same hardware system. So far, the system gives no output after "Jumping to kernel-image entry point..." and seems to be stuck there. The same code has been tested on qemu simulator targeting spike 1.10 with the same device tree, following the online guide ( https://docs.sel4.systems/Hardware/RISCV.html). No problem. I have seen this thread ( http://sel4.systems/pipermail/devel/2018-August/002069.html), and used the solution provided for modifying the paddr range. I tried to add a few printf statements and even a fail statement in the boot.c file in kernel/src/arch/riscv/kernel/, which I guess is the first function executed after head.S. Same problem happens. Any suggestions? Thanks. Best regards, Tuo
Hi Tuo, Can you send a log of what your build process is, including Cmake steps and elfloader output? The kernel should have a BUILD_ROCKET_CHIP_ZEDBOARD option, which can be initialized with the –DkernelPlatformSpikeRocketChip flag in Cmake. Can you also look at the “kernel/gen_config/kernel/gen_config.h” file to see if CONFIG_BUILD_ROCKET_CHIP_ZEDBOARD is being set. Chris Guikema DornerWorks Ltd. From: Devel [mailto:devel-bounces@sel4.systems] On Behalf Of Tuo Li Sent: Sunday, September 2, 2018 11:10 PM To: devel@sel4.systems Subject: [seL4] issues in running sel4test on RISC-V rocket-chip FPGA CAUTION: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. Hi guys, I have ported rocket chip (github.com/ucb-bar/fpga-zynqhttp://github.com/ucb-bar/fpga-zynq) on a ZCU102 FPGA board and it successfully runs riscv-linux. It's RV64G RISC-V. I am trying to run sel4test on the same hardware system. So far, the system gives no output after "Jumping to kernel-image entry point..." and seems to be stuck there. The same code has been tested on qemu simulator targeting spike 1.10 with the same device tree, following the online guide (https://docs.sel4.systems/Hardware/RISCV.html). No problem. I have seen this thread (http://sel4.systems/pipermail/devel/2018-August/002069.html), and used the solution provided for modifying the paddr range. I tried to add a few printf statements and even a fail statement in the boot.c file in kernel/src/arch/riscv/kernel/, which I guess is the first function executed after head.S. Same problem happens. Any suggestions? Thanks. Best regards, Tuo
Hi Chris,
I just updated the sel4test today. And the problem seems to be gone. Now
the processor can jump to kernel entry and finish the sel4test.
The only issue now is I have to execute init_build.sh and ninja twice to
make "-DKernelPlatformSpikeRocketChip" flag effective. Perhaps I didn't do
it correctly, since I am not very familiar with cmake.
init_build.sh file is modified to initilize cmake with
-DKernelPlatformSpikeRocketChip:
# Initialize cmake
cmake -DKernelPlatformSpikeRocketChip=ON
-DCMAKE_TOOLCHAIN_FILE=${SCRIPT_PATH}/kernel/gcc.cmake -G Ninja $@
${SCRIPT_PATH} && cmake ${SCRIPT_PATH} && cmake ${SCRIPT_PATH}
Executing init_build.sh && ninja once does not
set CONFIG_BUILD_ROCKET_CHIP_ZEDBOARD in kernel/gen_config/kernel/gen_
config.h. And, elf_loader loads kernel to paddr=[c0000000..c0026fff], which
is out of 256M memory space.
Cmake log:
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler:
/home/lituo/workspace/riscv/sel4test/riscv-tools/bin/riscv64-unknown-elf-gcc
-- Check for working C compiler:
/home/lituo/workspace/riscv/sel4test/riscv-tools/bin/riscv64-unknown-elf-gcc
-- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler:
/home/lituo/workspace/riscv/sel4test/riscv-tools/bin/riscv64-unknown-elf-g++
-- Check for working CXX compiler:
/home/lituo/workspace/riscv/sel4test/riscv-tools/bin/riscv64-unknown-elf-g++
-- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM compiler identification is GNU
-- Found assembler:
/home/lituo/workspace/riscv/sel4test/riscv-tools/bin/riscv64-unknown-elf-gcc
-- Performing test HARD_FLOAT with flags -mfloat-abi=hard
-- Test HARD_FLOAT FAILED
-- Performing test SOFTFP_FLOAT with flags -mfloat-abi=softfp
-- Test SOFTFP_FLOAT FAILED
CMake Warning at tools/seL4/cmake-tool/flags.cmake:123 (message):
Kernel supports hardware floating point but toolchain does not
Call Stack (most recent call first):
tools/seL4/cmake-tool/base.cmake:58 (include)
tools/seL4/cmake-tool/all.cmake:16 (include)
CMakeLists.txt:21 (include)
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/lituo/workspace/riscv/sel4test/build-riscv
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/lituo/workspace/riscv/sel4test/build-riscv
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/lituo/workspace/riscv/sel4test/build-riscv
elfloader output:
bbl loader
ELF-loader started on
paddr=[80200000..805cbe7f]
ELF-loading image 'kernel'
paddr=[c0000000..c0026fff]
vaddr=[ffffffff80000000..ffffffff80026fff]
virt_entry=ffffffff80000000
What I did is executing init_build.sh && ninja twice. This seems to
make -DKernelPlatformSpikeRocketChip
flag effective.
elfloader output:
bbl loader
ELF-loader started on
paddr=[80200000..805cc27f]
ELF-loading image 'kernel'
paddr=[88000000..88027fff]
vaddr=[ffffffff80000000..ffffffff80027fff]
virt_entry=ffffffff80000000
ELF-loading image 'sel4test-driver'
paddr=[88028000..8838efff]
vaddr=[10000..376fff]
virt_entry=3a8ee
Jumping to kernel-image entry point...
Thanks,
Tuo
On Tue, Sep 4, 2018 at 10:58 PM Chris Guikema
Hi Tuo,
Can you send a log of what your build process is, including Cmake steps and elfloader output?
The kernel should have a BUILD_ROCKET_CHIP_ZEDBOARD option, which can be initialized with the –DkernelPlatformSpikeRocketChip flag in Cmake. Can you also look at the “kernel/gen_config/kernel/gen_config.h” file to see if CONFIG_BUILD_ROCKET_CHIP_ZEDBOARD is being set.
Chris Guikema
DornerWorks Ltd.
*From:* Devel [mailto:devel-bounces@sel4.systems] *On Behalf Of *Tuo Li *Sent:* Sunday, September 2, 2018 11:10 PM *To:* devel@sel4.systems *Subject:* [seL4] issues in running sel4test on RISC-V rocket-chip FPGA
CAUTION: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Hi guys,
I have ported rocket chip (github.com/ucb-bar/fpga-zynq) on a ZCU102 FPGA board and it successfully runs riscv-linux. It's RV64G RISC-V.
I am trying to run sel4test on the same hardware system. So far, the system gives no output after "Jumping to kernel-image entry point..." and seems to be stuck there.
The same code has been tested on qemu simulator targeting spike 1.10 with the same device tree, following the online guide ( https://docs.sel4.systems/Hardware/RISCV.html). No problem.
I have seen this thread ( http://sel4.systems/pipermail/devel/2018-August/002069.html), and used the solution provided for modifying the paddr range.
I tried to add a few printf statements and even a fail statement in the boot.c file in kernel/src/arch/riscv/kernel/, which I guess is the first function executed after head.S. Same problem happens.
Any suggestions? Thanks.
Best regards, Tuo
participants (2)
-
Chris Guikema
-
Tuo Li