- Implementation of a gem5 device which allows simulated systems to be
used in the place of a real device. Currently, only Android is
supported.
- The gem5 simulation is started automatically based on a command line
passed in via the agenda. The correct telnet port to connect on is
extracted from the standard error from the gem5 process.
- Resuming from gem5 checkpoints is supported, and can be specified as
part of the gem5 system description. Additionally, the agenda option
checkpoint_post_boot can be used to create a checkpoint
automatically once the system has booted. This can then by used for
subsequent runs to avoid booting the system a second time.
- The Gem5Device waits for Android to finish booting, before sending
commands to the simulated device. Additionally, the device supports
a sleep option, which will sleep in the simulated system for a
number of seconds, prior to running the workload. This ensures that
the system can quieten down, prior to running the workload.
- The Gem5Device relies of VirtIO to pull files into the simulated
environment, and therefire diod support is required on the host
system. Additionally, VirtIO 9P support is required in the guest
system kernel.
- The m5 writefile binary and gem5 pseudo instruction are used to
extract files from the simulated environment.
There's a known issue that HDMI will lose sync with monitor, adding video kernel parameter will make the HDMI more stable for juno
> HDMI can lose sync with the monitor intermittently, particularly at higher resolutions.
> If you are affected by this then try adding a kernel command line argument that forces
> a video mode with reduced blanking, such as the following:
> video=DVI-D-1:1920x1080R@60
- standardisded on a single context argument
- removed Device.init() no longer necessary as initilize now
automatically gets propagated up the hierarchy. Renamed the existing
use of it to "initilize".
- related pylint cleanup.
cpuidle module implements cpuidle state discovery, query and
manipulation for a Linux device. This replaces the more primitive
get_cpuidle_states method of LinuxDevice.
Renamed APIs (and added a couple of new ones) to be more consistent:
"core" APIs take a core name as the parameter (e.g. "a15") or whatever
is listed in core_names for that device.
"cluster" APIs take a numeric cluster ID (eg. 0) as the parameter. These
get mapped using core_clusters for that device.
"cpu" APIs take a cpufreq cpu ID as a parameter. These could be
integers, e.g. 0, or full string id, e.g. "cpu0".
- UEFI config can be specified as a device_config parameter
- The same config is used to create a missing UEFI entry, and
to re-create the entry when flashing. UEFI config now wholy
resides within the device and is not specified for vexpress
flasher.
The boot monitor seems to have some buffer overrun issue while loading the latest Linaro android images.
The behavior is after loading the initrd, the kernel loading will fail, very likely to due command line buffer overrun.
the new initrd in the Linaro image is 3 times larger than the previous version, which could cause the issue.
putting a dummy enter between loading initrd and the kernel could resolve the issue.