#!/bin/bash set -eu . "$(dirname "$0")/env.sh" if [ $# -lt 5 ]; then echo "Usage: $0 [mem=16GB]" exit 1 fi W=$1; CORE=$2; DV=$3; DROWSY=$4; L2=$5; MEM=${6:-16GB} TAG="${W}_${CORE}_${DV}_l2${L2}_d${DROWSY}" OUTDIR="$OUT_DATA/$TAG" mkdir -p "$OUTDIR" echo "[run_one] $TAG mem=$MEM -> $OUTDIR" # Map core types to baremetal.py CPU types if [ "$CORE" = "big" ]; then CPU_TYPE="o3" # Using o3 as closest to O3CPU elif [ "$CORE" = "little" ]; then CPU_TYPE="atomic" # Using atomic as closest to TimingSimpleCPU else CPU_TYPE="o3" # Default for hybrid fi # Map DVFS to CPU frequency (simplified) if [ "$DV" = "high" ]; then CPU_FREQ="2GHz" else CPU_FREQ="1GHz" fi "$GEM5_BIN" "$CFG" \ --kernel="$RUN/$W" \ --workload=ArmBaremetal \ --cpu="$CPU_TYPE" \ --cpu-freq="$CPU_FREQ" \ --mem-type=DDR3_1600_8x8 \ --mem-size="$MEM" \ > "$LOG_DATA/${TAG}.stdout.log" \ 2> "$LOG_DATA/${TAG}.stderr.log" # mirror to repo rsync -a --delete "$OUTDIR/" "$OUT_IOT/$TAG/" rsync -a "$LOG_DATA/${TAG}."* "$LOG_IOT/" 2>/dev/null || true echo "[run_one] DONE"