35
35
36
36
conn.close()
37
37
38
-
39
38
"""
40
39
41
40
testbuf = (
61
60
62
61
class gdb (object ):
63
62
64
- def __init__ (self , port ):
65
- self .port = port # gdb listening port
63
+ def __init__ (self , cpu ):
64
+ self .cpu = cpu
65
+ self .port = 3333 # gdb listening port
66
66
self .rx_state = self .wait4_start # receive packet state
67
67
self .rx_cs = [] # receive packet checksum
68
68
self .rx_data = [] # receive packet data
69
69
70
+ def rx_ack (self ):
71
+ print ('ack' )
72
+
73
+ def rx_nak (self ):
74
+ print ('nak' )
75
+
76
+ def rx_cmd (self , cmd ):
77
+ print ('%s' % cmd )
78
+
79
+ def csum_good (self , data , cs ):
80
+ csum = 0
81
+ for c in data :
82
+ csum += ord (c )
83
+ return int (cs , 16 ) == csum % 256
84
+
70
85
def wait4_start (self , c ):
71
86
"""wait for the packet start delimiter"""
72
- if c == '$' :
87
+ if c == '+' :
88
+ self .rx_ack ()
89
+ elif c == '-' :
90
+ self .rx_nak ()
91
+ elif c == '$' :
73
92
# get the packet data
74
93
self .rx_data = []
75
94
self .rx_state = self .wait4_end
@@ -82,7 +101,7 @@ def wait4_end(self, c):
82
101
if c == '#' :
83
102
# get the checksum
84
103
self .rx_cs = []
85
- self .rx_state == self .wait4_checksum
104
+ self .rx_state = self .wait4_checksum
86
105
else :
87
106
# accumulate the packet data
88
107
self .rx_data .append (c )
@@ -95,34 +114,20 @@ def wait4_checksum(self, c):
95
114
# we have the checksum
96
115
cs = '' .join (self .rx_cs )
97
116
data = '' .join (self .rx_data )
98
- # TODO process the checksum
99
- self .ui .put ('data: %s cs %s' % (data , cs ))
100
- self .rx_state == self .wait4_start
101
-
102
- def wait4_ack (self , c ):
103
- """wait for an acknowledgement"""
104
- if c == '+' :
105
- # ack TODO clear the packet
106
- pass
107
- elif c == '-' :
108
- # nack TODO retransmit
109
- pass
110
- else :
111
- # what is this?
112
- pass
117
+ if self .csum_good (data , cs ):
118
+ self .rx_cmd (data )
119
+ else :
120
+ # TODO: bad checksum - send a nak
121
+ pass
122
+ self .rx_state = self .wait4_start
113
123
114
124
def rx (self , buf ):
115
125
"""receive a buffer of characters"""
116
126
for c in buf :
117
127
self .rx_state (c )
118
128
119
-
120
-
121
- #-----------------------------------------------------------------------------
122
-
123
- def main ():
124
- print testbuf
125
-
126
- main ()
129
+ def run (self , ui , args ):
130
+ """run the gdb server"""
131
+ self .rx (testbuf )
127
132
128
133
#-----------------------------------------------------------------------------
0 commit comments