aboutsummaryrefslogtreecommitdiff
path: root/linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript
diff options
context:
space:
mode:
Diffstat (limited to 'linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript')
-rwxr-xr-xlinaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript89
1 files changed, 89 insertions, 0 deletions
diff --git a/linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript b/linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript
new file mode 100755
index 0000000..96bc6bf
--- /dev/null
+++ b/linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript
@@ -0,0 +1,89 @@
+// Replace the string with the absolute path of the Kingfisher model executable
+// e.g. string model = "/home/working_dir/models/RTSM_VE_Cortex-A15x4-A7x4"
+string model = "<path to the model>";
+
+// Replace the string with the absolute path of the Virutalizer+Payload software image
+// e.g. string app = "/home/working_dir/bootwrapper/img.axf"
+string app = "<path to the software image>";
+
+int ctr = 0;
+
+// NOTE
+//
+// Uncomment the next 4 'string' variables and update them _only_ if the run is required
+// to generate trace output as described in docs/04-Cache-hit-rate-howto.txt. Also,
+// comment out the system() invocation on line 47 and uncomment the system() command on line 34.
+// Each 'trace' parameter is described below.
+
+// Add the path to the trace plugin
+// string trace_plugin = " --trace-plugin <path to>/GenericTrace.so";
+
+// Parameters for selecting the trace sources to monitor outbound cache hits
+// string trace_sources = " --parameter TRACE.GenericTrace.trace-sources=\*sw_trace_event\*,\*read_for_3_came_from_snoop\*,\*read_for_4_came_from_snoop\* ";
+
+// Add the path to the trace file where all the output will be collected
+// string trace_file = " --parameter TRACE.GenericTrace.trace-file=<path to trace file> ";
+
+// Miscellaneous parameters. The frequency at which the performance metrics of the
+// model appear in the trace source can be changed here (default is 0x100).
+// string trace_misc = " -C TRACE.GenericTrace.perf-period=0x100 -C TRACE.GenericTrace.flush=1 ";
+
+// The commented 'system' command below will launch the model and register the trace
+// sources selected in 'trace_sources' with the Generic Trace plugin selected using
+// 'trace_plugin'. Other parameters are specified in 'trace_file' & 'trace_misc'.
+// system(model + trace_plugin + trace_sources + trace_file + trace_misc + " -C coretile.cache_state_modelled=1" + " -a coretile.cluster0.\*=" + app + " -a coretile.cluster1.\*=" + app + " --verbose -S &");
+
+// NOTE
+//
+// _Only_ if a run is needed using an optional rootfs MMC image built using the instructions in
+// doc/06-Optional-rootfs-build.txt, then comment out the system() invocation
+// below (on line 47) and uncomment the following lines taking care to update
+// the paths accordingly.
+// string mmcimage = "<path to mmc.img>";
+// system(model + " -C motherboard.mmc.p_mmc_file=" + mmcimage + " -C coretile.cache_state_modelled=1" + " -a coretile.cluster0.\*=" + app + " -a coretile.cluster1.\*=" + app + " --verbose -S &");
+
+// Invoke the model. It then listens for connection requests from the model debugger
+// Vanilla invocation of the model.
+system(model + " -C coretile.cache_state_modelled=1" + " -a coretile.cluster0.\*=" + app + " -a coretile.cluster1.\*=" + app + " --verbose -S &");
+
+// Wait for the model to load before connecting to it. There will be times when we
+// try connecting before the model has loded resulting in a "Connection refused"
+// error. Increasing 'ctr' or retrying should solve the problem.
+while(ctr < 400000000)
+{
+ ctr++;
+}
+
+// Model listens at port 7000
+connectToModel("7000");
+
+// The following lines can be uncommented to set any breakpoints on each cluster
+selectTarget("coretile.cluster0.cpu0");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster0.cpu1");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster0.cpu2");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster0.cpu3");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster1.cpu0");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster1.cpu1");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster1.cpu2");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+selectTarget("coretile.cluster1.cpu3");
+//bpAdd(<address>, "Normal");
+//bpAdd(<address>, "Secure");
+
+// Select the primary cpu on the primary cluster and set the ball rolling
+selectTarget("coretile.cluster0.cpu0");
+run();
+