comparison tests/dbg/dbg.py @ 34:4411dee34085

cleaned out docs (don't worry they are comming back) and added all my test files
author james <jb302@eecs.qmul.ac.uk>
date Wed, 16 Apr 2014 16:51:39 +0100
parents
children
comparison
equal deleted inserted replaced
33:02241452f397 34:4411dee34085
1 #!/usr/bin/env python
2 # dbg.py - debug client
3 import struct
4 import os, sys
5 from time import sleep
6
7 # talks to the emulator
8 # see controller() in emu/main.c for the inverse
9 class controller:
10
11 def __init__(self):
12 self.Emu = None
13 open('out', 'w').close()
14
15 # Alternetive snd and rcv functions need to be
16 # written read/write using serial buffer to make
17 # this class talk to an emulator running on
18 # an MCU
19 def snd(self, m):
20 self.Emu.stdin.write(struct.pack('>B', m))
21
22 def rcv(self, l):
23 lc = 0
24 while lc != l:
25 lc = os.path.getsize('out')
26 #sleep(0.5)
27 with open('out', 'r') as f:
28 c = f.read()
29 open('out', 'w').close()
30 return c
31
32 def step(self):
33 self.snd(0x00)
34
35 def run(self):
36 self.snd(0x01)
37
38 def set_reg(self, reg, data):
39 self.snd(0x02)
40 self.snd(reg) # reg
41 self.snd(data) # data
42
43 def get_reg(self, reg):
44 self.snd(0x03)
45 self.snd(reg) # reg
46 return self.rcv(1)
47
48 def set_flag(self, flag, on):
49 self.snd(0x04)
50 if on == 0:
51 self.snd(flag)
52 self.snd(0)
53 else:
54 self.snd(flag)
55 self.snd(1)
56
57 def get_flag(self, flag):
58 self.snd(0x05)
59 self.snd(flag)
60 return self.rcv(1)
61
62 def set_block(self, addrh, addrl, data):
63 self.snd(0x06)
64 self.snd(addrh) # address high byte
65 self.snd(addrl) # address low byte
66 self.snd((len(data) >> 8) & 0xFF)
67 self.snd(len(data) & 0xFF)
68 for b in data:
69 self.snd(b) # data
70
71 def get_block(self, addrh, addrl, lenh, lenl):
72 block = []
73 self.snd(0x07)
74 self.snd(addrh) # address high byte
75 self.snd(addrl) # address low byte
76 self.snd(lenh)
77 self.snd(lenl)
78 return self.rcv(lenl | (lenh << 8))
79
80 def get_a(self):
81 self.snd(0x09)
82 return self.rcv(1)
83
84 def get_flags(self):
85 self.snd(0x0A)
86 return self.rcv(1)
87
88 def get_ir(self):
89 self.snd(0x0B)
90 return self.rcv(1)
91
92 def run_len(self, lenh, lenl):
93 self.snd(0x0C)
94 self.snd(lenh)
95 self.snd(lenl)
96
97 def free_run(self):
98 self.snd(0x0D)
99
100 def set_bp(self, i, addrh, addrl):
101 self.snd(0x0E)
102 self.snd(i)
103 self.snd(addrh)
104 self.snd(addrl)
105
106
107
108
109