Loading README.md +4 −4 Original line number Diff line number Diff line Loading @@ -30,10 +30,10 @@ EnergyTrace performs measurements in intervals of about 270 µs. Each line contains data for one measurement interval. Measurement data consists of for readings: * Timestamps (µs) since start of the measurement, * Mean current (nA) over the last ten to thousand intervals, * Mean voltage (mV) with details unknown, and * Cumulative energy (nJ) since start of the measurement. 1. Timestamps (µs) since start of the measurement, 2. Mean current (nA) over the last ten to thousand intervals, 3. Mean voltage (mV) with details unknown, and 4. Cumulative energy (nJ) since start of the measurement. Note that the EnergyTrace hardware and firmware only measures time, voltage, and energy. Current readings are calculated by the MSP430 client library. Power Loading bin/msp430-etv +26 −11 Original line number Diff line number Diff line Loading @@ -168,12 +168,16 @@ class PELT: return changepoints def measure_data(filename, duration, energytrace_cmd="energytrace"): def measure_data( filename, duration, libmsp430_path=None, energytrace_cmd="energytrace" ): # libmsp430.so must be available if not "LD_LIBRARY_PATH" in os.environ: os.environ[ "LD_LIBRARY_PATH" ] = "{}/var/projects/msp430/MSP430Flasher_1.3.15".format(os.environ["HOME"]) if libmsp430_path is None: libmsp430_path = "/opt/msp430/MSP430Flasher_1.3.20" if "LD_LIBRARY_PATH" in os.environ: os.environ["LD_LIBRARY_PATH"] += f":{libmsp430_path}" else: os.environ["LD_LIBRARY_PATH"] = libmsp430_path # https://ess.cs.uos.de/git/df/energytrace-util must be available if which(energytrace_cmd) is None: Loading Loading @@ -278,6 +282,12 @@ def main(): type=str, help="Export analysis results (e.g. changepoints) to JSON file", ) parser.add_argument( "--libmsp430-path", metavar="DIRECTORY", type=str, help="Path to directory containing libmsp30.so", ) parser.add_argument( "--skip", metavar="N", Loading Loading @@ -355,10 +365,15 @@ def main(): log_data = f.read() elif args.with_hardware_states: log_data = measure_data( args.save, args.duration, energytrace_cmd="energytracepp" args.save, args.duration, libmsp430_path=args.libmsp430_path, energytrace_cmd="energytracepp", ) else: log_data = measure_data(args.save, args.duration) log_data = measure_data( args.save, args.duration, libmsp430_path=args.libmsp430_path ) lines = log_data.split("\n") data_count = sum(map(lambda x: len(x) > 0 and x[0] != "#", lines)) Loading Loading @@ -523,7 +538,7 @@ def main(): ) smooth_power = running_mean(power_from_energy, 10) if args.pelt: if args.pelt is not None: power_changepoints = detect_changepoints( data[1:, 0] * 1e-6, power_from_energy, num_samples=args.pelt ) Loading Loading @@ -581,7 +596,7 @@ def main(): if args.json_export: extra_data = dict() if args.pelt: if args.pelt is not None: extra_data["power_changepoints"] = power_changepoints extra_data["current_changepoints"] = current_changepoints export_json(args.json_export, extra_data) Loading Loading @@ -674,7 +689,7 @@ def main(): label="mean(I, 10)", markersize=1, ) if args.pelt: if args.pelt is not None: plt.vlines( plot_changepoints_vlines(current_changepoints), np.min(Y), Loading @@ -701,7 +716,7 @@ def main(): label="mean(P, 10)", markersize=1, ) if args.pelt: if args.pelt is not None: plt.vlines( plot_changepoints_vlines(power_changepoints), np.min(Y), Loading Loading
README.md +4 −4 Original line number Diff line number Diff line Loading @@ -30,10 +30,10 @@ EnergyTrace performs measurements in intervals of about 270 µs. Each line contains data for one measurement interval. Measurement data consists of for readings: * Timestamps (µs) since start of the measurement, * Mean current (nA) over the last ten to thousand intervals, * Mean voltage (mV) with details unknown, and * Cumulative energy (nJ) since start of the measurement. 1. Timestamps (µs) since start of the measurement, 2. Mean current (nA) over the last ten to thousand intervals, 3. Mean voltage (mV) with details unknown, and 4. Cumulative energy (nJ) since start of the measurement. Note that the EnergyTrace hardware and firmware only measures time, voltage, and energy. Current readings are calculated by the MSP430 client library. Power Loading
bin/msp430-etv +26 −11 Original line number Diff line number Diff line Loading @@ -168,12 +168,16 @@ class PELT: return changepoints def measure_data(filename, duration, energytrace_cmd="energytrace"): def measure_data( filename, duration, libmsp430_path=None, energytrace_cmd="energytrace" ): # libmsp430.so must be available if not "LD_LIBRARY_PATH" in os.environ: os.environ[ "LD_LIBRARY_PATH" ] = "{}/var/projects/msp430/MSP430Flasher_1.3.15".format(os.environ["HOME"]) if libmsp430_path is None: libmsp430_path = "/opt/msp430/MSP430Flasher_1.3.20" if "LD_LIBRARY_PATH" in os.environ: os.environ["LD_LIBRARY_PATH"] += f":{libmsp430_path}" else: os.environ["LD_LIBRARY_PATH"] = libmsp430_path # https://ess.cs.uos.de/git/df/energytrace-util must be available if which(energytrace_cmd) is None: Loading Loading @@ -278,6 +282,12 @@ def main(): type=str, help="Export analysis results (e.g. changepoints) to JSON file", ) parser.add_argument( "--libmsp430-path", metavar="DIRECTORY", type=str, help="Path to directory containing libmsp30.so", ) parser.add_argument( "--skip", metavar="N", Loading Loading @@ -355,10 +365,15 @@ def main(): log_data = f.read() elif args.with_hardware_states: log_data = measure_data( args.save, args.duration, energytrace_cmd="energytracepp" args.save, args.duration, libmsp430_path=args.libmsp430_path, energytrace_cmd="energytracepp", ) else: log_data = measure_data(args.save, args.duration) log_data = measure_data( args.save, args.duration, libmsp430_path=args.libmsp430_path ) lines = log_data.split("\n") data_count = sum(map(lambda x: len(x) > 0 and x[0] != "#", lines)) Loading Loading @@ -523,7 +538,7 @@ def main(): ) smooth_power = running_mean(power_from_energy, 10) if args.pelt: if args.pelt is not None: power_changepoints = detect_changepoints( data[1:, 0] * 1e-6, power_from_energy, num_samples=args.pelt ) Loading Loading @@ -581,7 +596,7 @@ def main(): if args.json_export: extra_data = dict() if args.pelt: if args.pelt is not None: extra_data["power_changepoints"] = power_changepoints extra_data["current_changepoints"] = current_changepoints export_json(args.json_export, extra_data) Loading Loading @@ -674,7 +689,7 @@ def main(): label="mean(I, 10)", markersize=1, ) if args.pelt: if args.pelt is not None: plt.vlines( plot_changepoints_vlines(current_changepoints), np.min(Y), Loading @@ -701,7 +716,7 @@ def main(): label="mean(P, 10)", markersize=1, ) if args.pelt: if args.pelt is not None: plt.vlines( plot_changepoints_vlines(power_changepoints), np.min(Y), Loading