-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrv64emu_run_linux.sh
executable file
·40 lines (35 loc) · 1.26 KB
/
rv64emu_run_linux.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env bash
# ROOT PATH
SDK_ROOT=$(pwd)
OPENSBI_ROOT=${SDK_ROOT}/opensbi
BUSYBOX_ROOT=${SDK_ROOT}/busybox-1_36_stable
LINUX_ROOT=${SDK_ROOT}/linux
# IMAGE PATH
LINUX_CONFIG=rv64emu_linux_defconfig
LINUX_BIN=${LINUX_ROOT}/arch/riscv/boot/Image
OPENSBI_ELF=${OPENSBI_ROOT}/build/platform/generic/firmware/fw_payload.elf
DTS_FILE=${SDK_ROOT}/dts/rv64emu-signal-128m
############################################
# You need to modify the following path according to your own environment
# RV64EMU
RV64EMU=/home/leesum/workhome/riscv64-emu
# CROSS_COMPILE
CROSS_COMPILE=/opt/riscv-linux/bin/riscv64-unknown-linux-gnu-
############################################
# Build Linux
cp ${SDK_ROOT}/${LINUX_CONFIG} ${LINUX_ROOT}/arch/riscv/configs/
make -C ${LINUX_ROOT} ARCH=riscv CROSS_COMPILE=${CROSS_COMPILE} ${LINUX_CONFIG}
make -C ${LINUX_ROOT} ARCH=riscv CROSS_COMPILE=${CROSS_COMPILE} -j$(nproc)
# Build dts
dtc -I dts -O dtb ${DTS_FILE}.dts -o ${DTS_FILE}.dtb
# Build opensbi with linux payload
cd ${OPENSBI_ROOT}
make clean
make PLATFORM=generic \
CROSS_COMPILE=$CROSS_COMPILE \
FW_PAYLOAD_PATH=$LINUX_BIN \
FW_FDT_PATH=${DTS_FILE}.dtb -j$(nproc)
# Run rv64emu
cd $RV64EMU
cargo run --release --example=linux_system -- --img ${OPENSBI_ELF} \
--num-harts 1