Skip to content
Snippets Groups Projects
Commit b65b2126 authored by Henrik Tjäder's avatar Henrik Tjäder
Browse files

Merge branch 'klee' of gitlab.henriktjader.com:KLEE/cortex-m-rtfm-klee into klee

parents 172ae071 560b34d3
No related branches found
No related tags found
No related merge requests found
klee.py 0 → 100644
#!/usr/bin/env python
import gdb
import os
import sys
import struct
from subprocess import call
import subprocess
import glob
# gdb helper functions
def gdb_continue():
gdb.execute("continue")
def gdb_cyccnt_enable():
# Enable cyccnt
gdb.execute("mon mww 0xe0001000 1")
def gdb_cyccnt_disable():
# Disble cyccnt
gdb.execute("mon mww 0xe0001000 0")
def gdb_cyccnt_reset():
# Reset cycle counter to 0
gdb.execute("mon mww 0xe0001004 0")
def gdb_cyccnt_read():
# Read cycle counter
return int(gdb.execute("mon mdw 0xe0001004", False, True).strip(
'\n').strip('0xe000012004:').strip(',').strip(), 16)
def gdb_cyccnt_write(num):
# Write to cycle counter
gdb.execute('mon mww 0xe0001004 %r' % num)
def gdb_call(task):
# call task
print("#### call task %s" % task)
gdb.execute('call %s' % "stub_" + task + "()")
print("<<<<<<<<<<<<<<<<< after call >>>>>>>>>>>>>>>>>")
def gdb_setup():
# Commands for making GDB scriptable
print("gbd init")
gdb.execute("set confirm off")
gdb.execute("set pagination off")
gdb.execute("set verbose off")
gdb.execute("set height 0")
# gdb.execute("set unwindonsignal off")
gdb.execute("set unwindonsignal on")
# Event handling
# GDB event, called on breakpoint
def stop_event(evt):
print("#### stop event %r" % evt)
try:
ceiling = int(gdb.parse_and_eval("ceiling").
cast(gdb.lookup_type('u8')))
print("ceiling %r" % ceiling)
gdb_continue()
except gdb.error:
print("#### return")
gdb.post_event(next)
next()
def next():
global task_nr
global tasks
task_nr = task_nr + 1
if task_nr == len(tasks):
print("------------ all done ---------")
return
print("-------------- start {}-------------".format(task_nr))
gdb_call(tasks[task_nr - 1])
print("-------------- finshed {}-------------".format(task_nr))
next()
# def next_event(next):
# global task_nr
# global tasks
# if task_nr == tasks.lenght():
# print("vvvvvvvvvvvvvvvvv")
# return
# print("-------------- start {}-------------".format(task_nr))
# gdb_call(tasks[t_nr])
# gdb.post_event(next)
# globals
tasks = ["EXTI2", "EXTI3", "EXTI1"]
task_nr = 0
print("simple python script started")
gdb_setup()
gdb.events.stop.connect(stop_event)
next()
# gdb.events.next.connect(next_event)
# gdb.post_event(next)
# for t_nr, t_index in enumerate(tasks):
# busy = True
# sad = False
# try:
# gdb_call(tasks[t_nr])
# except:
# print("############ call failed #############")
# while busy:
# gdb_continue()
# while sad:
# pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment