The main restriction with this design is it results in one ISA target per board. The ISA is declared per core. To make the design simpler it's assumed a Processor (a collection of cores) are all of the same ISA. As each board has one processor, this also means a board is typically tied to one ISA per simulation. In order to remain backwards compatible and maintain the standard library APIs, this patch adds a `--main-isa` parameter which will determine what `gem5.runtime.get_runtime_isa` returns in cases where mutliple ISAs are compiled in. When setting the ISA in a simulation (via the Processor or Cores), the user may, as before, choose not to and, in this case, the `gem5.runtime.get_runtime_isa` function is used. The `gem5.runtime.get_runtime_isa` function is an intermediate step which should be removed in future versions of gem5 (users should specify precisely what ISA they want via configuration scripts). For this reason it throws a warning when used and should not be heavily relied upon. It is deprecated. Change-Id: Ia76541bfa9a5a4b6b86401309281849b49dc724b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55423 Reviewed-by: Gabe Black <gabe.black@gmail.com> Maintainer: Gabe Black <gabe.black@gmail.com> Tested-by: kokoro <noreply+kokoro@google.com>
README
This README details how to build a RISCV full system that utilizes the lupIO devices. The LupIO devices were created by Professor Joël Porquet-Lupine, and more information about the device can be found here. The specs for each individual device can be found here, and the Linux drivers for each of these devices can be found here.
To build the RISCV gem5 binary execute:
scons build/RISCV/gem5.opt
Then, to run the LupIO example execute:
.build/RISCV/gem5.opt configs/example/lupv/run_lupv.py [cpu type] [num cpus]
Note: valid cpu types are atomic and timing for now.
For example:
gem5/build/RISCV/gem5.opt configs/example/lupv/run_lupv.py atomic 1
You can observe the stdout of the simulated system in m5out/system.terminal.
Then, you can open up a separate terminal and use m5term to connect to the
simulated console. The port number will be specified in the gem5 simulation
as 0: system.remote_gdb: listening for remote gdb on port <port>
example:
m5term localhost 3456
This should allow you to run busybox, in which you can see the LupIO device at work!