diff options
Diffstat (limited to 'linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript')
-rwxr-xr-x | linaro/arm-virt-bl/bootwrapper/big-little-mp4.mxscript | 89 |
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(); + |