OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [tools/] [bin/] [openmsp430-gdbproxy.tcl] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 olivier.gi
#!/usr/bin/tclsh
2
#------------------------------------------------------------------------------
3
# Copyright (C) 2001 Authors
4
#
5
# This source file may be used and distributed without restriction provided
6
# that this copyright statement is not removed from the file and that any
7
# derivative work contains the original copyright notice and the associated
8
# disclaimer.
9
#
10
# This source file is free software; you can redistribute it and/or modify
11
# it under the terms of the GNU Lesser General Public License as published
12
# by the Free Software Foundation; either version 2.1 of the License, or
13
# (at your option) any later version.
14
#
15
# This source is distributed in the hope that it will be useful, but WITHOUT
16
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18
# License for more details.
19
#
20
# You should have received a copy of the GNU Lesser General Public License
21
# along with this source; if not, write to the Free Software Foundation,
22
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
23
#
24
#------------------------------------------------------------------------------
25
# 
26
# File Name: openmsp430-gdbproxy.tcl
27
# 
28
#------------------------------------------------------------------------------
29
 
30
global serial_baudrate
31
global serial_device
32
global serial_status
33
global hw_break
34
global clients
35
global server
36
global verbose
37
global shell
38
 
39
# Initializations
40
set serial_status 0
41
 
42
 
43
###############################################################################
44
#                                                                             #
45
#                            SOURCE LIBRARIES                                 #
46
#                                                                             #
47
###############################################################################
48
 
49
# Get library path
50
set current_file [info script]
51
if {[file type $current_file]=="link"} {
52
    set current_file [file readlink $current_file]
53
}
54
set lib_path [file dirname $current_file]/../lib/tcl-lib
55
 
56
# Source library
57
source $lib_path/dbg_functions.tcl
58
 
59
# Source remaining files
60
source [file dirname $current_file]/../openmsp430-gdbproxy/server.tcl
61
source [file dirname $current_file]/../openmsp430-gdbproxy/commands.tcl
62
 
63
 
64
###############################################################################
65
#                                                                             #
66
#                            PARAMETER CHECK                                  #
67
#                                                                             #
68
###############################################################################
69
 
70
proc help {} {
71
    puts ""
72
    puts "USAGE   : openmsp430-gdbproxy.tcl \[-device   <communication device>\]"
73
    puts "                                  \[-baudrate <communication speed>\]"
74
    puts "                                  \[-port     <server port>\]"
75
    puts "                                  \[-shell]"
76
    puts "                                  \[-verbose\]"
77
    puts "                                  \[-help\]"
78
    puts ""
79
    puts "Examples: openmsp430-gdbproxy.tcl -device /dev/ttyUSB0 -baudrate  9600  -port 2000"
80
    puts "          openmsp430-gdbproxy.tcl -device COM2:        -baudrate 38400  -port 2000"
81
    puts ""
82
}
83
 
84
# Default values
85
set serial_device   [lindex [dbg_list_uart] end]
86
set serial_baudrate 115200
87
set server(port)    2000
88
set shell           0
89
set verbose         0
90
 
91
# Parse arguments
92
for {set i 0} {$i < $argc} {incr i} {
93
    switch -exact -- [lindex $argv $i] {
94
        -device   {set serial_device   [lindex $argv [expr $i+1]]; incr i}
95
        -baudrate {set serial_baudrate [lindex $argv [expr $i+1]]; incr i}
96
        -port     {set server(port)    [lindex $argv [expr $i+1]]; incr i}
97
        -shell    {set shell   1}
98
        -verbose  {set verbose 1}
99
        -h        {help; exit 0}
100
        -help     {help; exit 0}
101
        default   {}
102
    }
103
}
104
 
105
# Source additional library for graphical interface
106
if {!$shell} {
107
    source $lib_path/combobox.tcl
108
    package require combobox 2.3
109
    catch {namespace import combobox::*}
110
}
111
 
112
# Small functions to display messages
113
proc putsLog {string {nonewline 0}} {
114
    global server
115
    global shell
116
    if {$shell} {
117
        if {$nonewline} {
118
            puts -nonewline $string
119
        } else {
120
            puts $string
121
        }
122
    } else {
123
        if {$nonewline} {
124
            $server(log) insert end "$string"
125
        } else {
126
            $server(log) insert end "$string\n"
127
        }
128
        $server(log) see end
129
    }
130
}
131
proc putsVerbose {string} {
132
    global verbose
133
    if {$verbose} {
134
        putsLog "$string"
135
    }
136
}
137
 
138
###############################################################################
139
#                               SHELL MODE                                    #
140
###############################################################################
141
if {$shell} {
142
 
143
    # Connect to device
144
    if {![GetDevice]} {
145
        puts "ERROR: Could not open $serial_device"
146
        puts "INFO:  Available serial ports are:"
147
        foreach port [dbg_list_uart] {
148
            puts "INFO:                               -  $port"
149
        }
150
        exit 1
151
    }
152
 
153
    # Display info
154
    puts "INFO: Sucessfully connected with the openMSP430 target."
155
    set sizes [GetCPU_ID_SIZE]
156
    puts "INFO: ROM Size - [lindex $sizes 0] B"
157
    puts "INFO: RAM Size - [lindex $sizes 1] B"
158
    puts "INFO: $hw_break(num) Hardware Brea/Watch-point unit(s) detected"
159
    puts ""
160
 
161
    # Reset & Stop CPU
162
    ExecutePOR_Halt
163
 
164
    # Start server for GDB
165
    if {![startServer]} {
166
        exit 1
167
    }
168
 
169
    vwait forever
170
}
171
 
172
 
173
###############################################################################
174
#                                 GUI MODE                                    #
175
###############################################################################
176
 
177
####################################
178
#   CREATE & PLACE MAIN WIDGETS    #
179
####################################
180
 
181
wm title    . "openMSP430 GDB Proxy"
182
wm iconname . "openMSP430 GDB Proxy"
183
 
184
# Create the Main Menu budget
185
frame  .menu
186
pack   .menu   -side top -padx 10 -pady 10 -fill x
187
 
188
# Create the Serial port Menu budget
189
frame  .serial
190
pack   .serial -side top -padx 10 -pady 10 -fill x
191
 
192
# Create the Server Menu budget
193
frame  .server
194
pack   .server -side top -padx 10 -pady 10 -fill x
195
 
196
 
197
####################################
198
#  CREATE THE REST                 #
199
####################################
200
 
201
# Exit button
202
button .menu.exit -text "Exit" -command {stopServer; exit 0}
203
pack   .menu.exit -side left
204
 
205
 
206
# Serial Port fields
207
label  .serial.l1      -text "Serial Port:"  -anchor w
208
pack   .serial.l1      -side left
209
set serial_device      [lindex [dbg_list_uart] end]
210
combobox .serial.p1    -textvariable serial_device -editable true
211
eval     .serial.p1    list insert end [dbg_list_uart]
212
pack   .serial.p1      -side left -padx 5
213
label  .serial.l2      -text "  Baudrate:" -anchor w
214
pack   .serial.l2      -side left
215
set serial_baudrate    115200
216
combobox .serial.p2    -textvariable serial_baudrate -editable true
217
eval     .serial.p2    list insert end [list    9600   19200  38400  57600 115200 \
218
                                              230400  460800 500000 576000 921600 \
219
                                             1000000 1152000]
220
pack   .serial.p2      -side left -padx 5
221
label  .serial.l3      -text "Disconnected" -anchor w -fg Red
222
pack   .serial.l3      -side left -padx 10
223
 
224
 
225
# Server Port field
226
frame  .server.port
227
pack   .server.port    -side top -fill x
228
label  .server.port.l1 -text "Proxy Server Port:" -anchor w
229
pack   .server.port.l1 -side left
230
entry  .server.port.p  -textvariable server(port) -relief sunken
231
pack   .server.port.p  -side left -padx 5
232
label  .server.port.l2 -text "Not running" -anchor w -fg Red
233
pack   .server.port.l2 -side left -padx 10
234
button .server.port.start -text "Start Proxy Server" -command {startServerGUI}
235
pack   .server.port.start -side right
236
 
237
 
238
# Create the text widget to log received messages
239
frame  .server.t
240
pack   .server.t     -side top -padx 10 -pady 10 -fill x
241
set server(log) [text   .server.t.log -width 80 -height 10 -borderwidth 2  \
242
                          -setgrid true -yscrollcommand {.server.t.scroll set}]
243
pack   .server.t.log -side left  -fill both -expand true
244
scrollbar .server.t.scroll -command {.server.t.log yview}
245
pack   .server.t.scroll -side right -fill both -expand true
246
 
247
 
248
# Log commands
249
frame  .server.cmd
250
pack   .server.cmd   -side top -fill x
251
button .server.cmd.clear -text "Clear log" -command {$server(log) delete 1.0 end}
252
pack   .server.cmd.clear -side left -padx 10
253
checkbutton .server.cmd.verbose -text "Verbose" -variable verbose
254
pack   .server.cmd.verbose -side right -padx 10

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.