From e9f79a2e999502b86c733115d31729fbd435cbf2 Mon Sep 17 00:00:00 2001
From: jaseg <git@jaseg.net>
Date: Tue, 22 Aug 2017 20:13:10 +0200
Subject: Add profiling script

---
 fw/profile.gdb |  5 +++++
 fw/profile.sh  | 26 ++++++++++++++++++++++++++
 2 files changed, 31 insertions(+)
 create mode 100644 fw/profile.gdb
 create mode 100644 fw/profile.sh

(limited to 'fw')

diff --git a/fw/profile.gdb b/fw/profile.gdb
new file mode 100644
index 0000000..fd26540
--- /dev/null
+++ b/fw/profile.gdb
@@ -0,0 +1,5 @@
+set pagination off
+target remote localhost:3333
+while(1)
+    continue
+end
diff --git a/fw/profile.sh b/fw/profile.sh
new file mode 100644
index 0000000..b209a14
--- /dev/null
+++ b/fw/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")
+
-- 
cgit