|
| 1 | +# QEMU/RISCV64 VIRT板级支持包说明 |
| 2 | + |
| 3 | +## 1. 简介 |
| 4 | + |
| 5 | +RISC-V是一种开放和免费的指令集体系结构(ISA)。本工程是在QEMU的RISCV64 VIRT版本上进行的一份移植。 |
| 6 | + |
| 7 | +## 2. 编译说明 |
| 8 | + |
| 9 | +首先可以下载交叉编译工具链,建议采用sifive的工具链进行编译。 |
| 10 | +``` |
| 11 | +https://www.sifive.com/software |
| 12 | +``` |
| 13 | +选择对应的平台即可。 |
| 14 | + |
| 15 | +这里推荐在Ubuntu上进行开发工作。 |
| 16 | + |
| 17 | +解压工具链到指定的目录。 |
| 18 | + |
| 19 | +``` |
| 20 | +export RTT_EXEC_PATH=~/gcc/bin |
| 21 | +``` |
| 22 | + |
| 23 | +进入到`rt-thread/bsp/qemu-riscv-virt64`目录进行输入 |
| 24 | +``` |
| 25 | +scons |
| 26 | +``` |
| 27 | +可以看到正常生成`rtthread.elf`与`rtthread.bin`文件。 |
| 28 | + |
| 29 | +## 3. 执行 |
| 30 | + |
| 31 | +本工程提供了riscv64的两种可配置运行模式,默认运行在M-Mode下。 |
| 32 | + |
| 33 | +*M-Mode* |
| 34 | + |
| 35 | +首先安装`qemu-system-riscv64`。 |
| 36 | + |
| 37 | +``` |
| 38 | +sudo apt install qemu-system-misc |
| 39 | +``` |
| 40 | +直接输入 |
| 41 | +``` |
| 42 | +./qemu-nographic.sh |
| 43 | +``` |
| 44 | +可以看到程序运行 |
| 45 | + |
| 46 | +``` |
| 47 | +heap: [0x80035804 - 0x86435804] |
| 48 | +
|
| 49 | + \ | / |
| 50 | +- RT - Thread Operating System |
| 51 | + / | \ 4.0.4 build May 21 2021 |
| 52 | + 2006 - 2021 Copyright by rt-thread team |
| 53 | +Hello RISC-V! |
| 54 | +msh /> |
| 55 | +``` |
| 56 | + |
| 57 | +*S-Mode* |
| 58 | + |
| 59 | +如果运行在S-Mode下,那么需要通过menuconfig选择配置 |
| 60 | + |
| 61 | +``` |
| 62 | +scons --menuconfig |
| 63 | +``` |
| 64 | +选择如下: |
| 65 | +``` |
| 66 | +RISCV qemu virt64 configs ---> |
| 67 | + [*] RT-Thread run in riscv smode |
| 68 | +``` |
| 69 | +保存后,重新`scons`编译即可。 |
| 70 | + |
| 71 | +要让rt-thread运行在S-Mode,首先需要启动opensbi,然后通过opensbi启动rt-thread。 |
| 72 | + |
| 73 | +自行编译的qemu或者下载的高版本的qemu内置opensbi,执行`./qemu-nographic-smode.sh`即可正常运行。 |
| 74 | + |
| 75 | +通过`sudo apt install qemu-system-misc`安装的qemu版本较低,可自行编译opensbi。 |
| 76 | + |
| 77 | +``` |
| 78 | +git clone [email protected]:riscv/opensbi.git |
| 79 | +cd opensbi |
| 80 | +make PLATFORM=generic CROSS_COMPILE=~/gcc/bin/riscv64-unknown-elf- |
| 81 | +``` |
| 82 | +最后生成的`/build/platform/generic/firmware/fw_jump.elf`则是需要的文件。 |
| 83 | + |
| 84 | +输入以下的命令即可运行: |
| 85 | + |
| 86 | +``` |
| 87 | +qemu-system-riscv64 -nographic -machine virt -m 256M -kernel rtthread.bin -bios ~/opensbi/build/platform/generic/firmware/fw_jump.elf |
| 88 | +``` |
| 89 | +可以看到如下的结果 |
| 90 | +``` |
| 91 | +OpenSBI v0.9 |
| 92 | + ____ _____ ____ _____ |
| 93 | + / __ \ / ____| _ \_ _| |
| 94 | + | | | |_ __ ___ _ __ | (___ | |_) || | |
| 95 | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | |
| 96 | + | |__| | |_) | __/ | | |____) | |_) || |_ |
| 97 | + \____/| .__/ \___|_| |_|_____/|____/_____| |
| 98 | + | | |
| 99 | + |_| |
| 100 | +
|
| 101 | +Platform Name : riscv-virtio,qemu |
| 102 | +Platform Features : timer,mfdeleg |
| 103 | +. |
| 104 | +. |
| 105 | +. |
| 106 | +Boot HART ISA : rv64imafdcsu |
| 107 | +Boot HART Features : scounteren,mcounteren |
| 108 | +Boot HART PMP Count : 16 |
| 109 | +Boot HART PMP Granularity : 4 |
| 110 | +Boot HART PMP Address Bits: 54 |
| 111 | +Boot HART MHPM Count : 0 |
| 112 | +Boot HART MHPM Count : 0 |
| 113 | +Boot HART MIDELEG : 0x0000000000000222 |
| 114 | +Boot HART MEDELEG : 0x000000000000b109 |
| 115 | +heap: [0x80235a58 - 0x86635a58] |
| 116 | +
|
| 117 | + \ | / |
| 118 | +- RT - Thread Operating System |
| 119 | + / | \ 4.0.4 build May 21 2021 |
| 120 | + 2006 - 2021 Copyright by rt-thread team |
| 121 | +Hello RISC-V! |
| 122 | +msh /> |
| 123 | +``` |
| 124 | +## 4. 支持情况 |
| 125 | + |
| 126 | +| 驱动 | 支持情况 | 备注 | |
| 127 | +| ------ | ---- | :------: | |
| 128 | +| UART | 支持 | UART0 | |
| 129 | +| PLIC | 支持 | - | |
| 130 | +| CLIC | 支持 | - | |
| 131 | + |
| 132 | +## 5. 联系人信息 |
| 133 | + |
| 134 | +维护人:[bernard][1] |
| 135 | + |
| 136 | +[1]: https://github.com/BernardXiong |
0 commit comments