aboutsummaryrefslogtreecommitdiff
path: root/fw/tools/profile.sh
diff options
context:
space:
mode:
authorjaseg <git@jaseg.net>2018-01-05 11:53:52 +0100
committerjaseg <git@jaseg.net>2018-01-05 11:53:52 +0100
commite3094b18d4fc1b5f8e5e7ca146318e501a7a4ff9 (patch)
treee70e8d966a82d84f476b9d05b3b358678f38b42f /fw/tools/profile.sh
parent31fc78d0e00f9c82f03c88367a7e23b2df918ca6 (diff)
download7seg-e3094b18d4fc1b5f8e5e7ca146318e501a7a4ff9.tar.gz
7seg-e3094b18d4fc1b5f8e5e7ca146318e501a7a4ff9.tar.bz2
7seg-e3094b18d4fc1b5f8e5e7ca146318e501a7a4ff9.zip
Firmware directory reorganization
Diffstat (limited to 'fw/tools/profile.sh')
-rw-r--r--fw/tools/profile.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/fw/tools/profile.sh b/fw/tools/profile.sh
new file mode 100644
index 0000000..b209a14
--- /dev/null
+++ b/fw/tools/profile.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+NLOOPS=1000
+SLEEP=0.1
+
+[ $# -lt 1 ] && echo "ERROR: Not enough arguments" && exit 2
+elffile="$1"
+
+trap "exit" SIGINT
+
+logfile=$(mktemp)
+
+arm-none-eabi-gdb -x profile.gdb "$elffile" > "$logfile" 2>/dev/null&
+gdbpid=$!
+trap "kill -TERM $gdbpid; rm $logfile" EXIT
+echo "Gathering..."
+for i in $(seq 1 $NLOOPS); do
+ echo "$i/$NLOOPS"
+ kill -INT $gdbpid
+ sleep $SLEEP
+done
+kill -TERM $gdbpid
+trap "rm '$logfile'" EXIT
+
+egrep -o '\w+ \(.*\) at .*' "$logfile" |cut -d' ' -f1|sort|uniq -c|sort -n
+echo 'Total:' $(egrep -c '\w+ \(.*\) at .*' "$logfile")
+