URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [insight/] [dejagnu/] [config/] [udi.exp] - Rev 1777
Go to most recent revision | Compare with Previous | Blame | View Log
# Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Please email any bugs, comments, and/or additions to this file to:
# DejaGnu@cygnus.com
# This file was originally written by Rob Savoye. (rob@cygnus.com)
# and modified by Bob Manson (manson@cygnus.com)
# When using the simulator (-n iss) and running nice'd, things can naturally
# take a little longer, so increase the timeout.
#
# udi_load -- load the program and execute it
#
# See default.exp for explanation of arguments and results.
#
proc udi_load { dest prog args } {
set shell_prompt [board_info $dest shell_prompt];
set output "";
if ![file exists $prog] then {
perror "$prog does not exist."
verbose -log "$prog does not exist." 3
return [list "untested" ""];
}
# Load the program.
if ![board_info $dest exists fileid] then {
remote_open $dest;
if ![board_info $dest exists fileid] then {
verbose -log "$prog not executed, couldn't connect to $dest." 3
return "untested"
}
}
if { [remote_ld $dest $prog] == "" } {
verbose -log "$prog not executed, load failed." 3
return [list "unresolved" ""];
}
# Execute it.
set result -1
set output "";
set noappend 0;
verbose "Executing $prog." 2
remote_send $dest "g\n"
# FIXME: The value 300 below should be a parameter.
remote_expect $dest 300 {
-re "(.*)Process exited with 0x0\[^\r\n\]*\[\r\n\]" {
append output $expect_out(1,string);
verbose "$prog executed successfully" 2
set noappend 1;
set result 0;
exp_continue;
}
-re "(.*)Halt instruction encountered" {
append output $expect_out(1,string);
verbose "$prog got a HALT instruction" 2
set result 1;
set noappend 1;
exp_continue;
}
-re "(^|\[\r\n\])$shell_prompt" {
if { $result == -1 } {
exp_continue;
}
}
-re "(^|\[\r\n\]+)g\[\r\n\]+" {
exp_continue;
}
-re "\[\r\n\]+" {
if { ! $noappend } {
append output $expect_out(buffer);
if { [string length $output] < 512000 } {
exp_continue;
} else {
set result 1;
}
} else {
exp_continue;
}
}
timeout {
warning "$prog timed out."
}
}
# See what happened.
switch -- $result {
0 {
set status [check_for_board_status output];
if { $status < 0 } {
blammo
}
if { $status > 0 } {
set result "fail";
} else {
set result "pass"
}
}
1 - -1 {
warning "Resetting $dest."
remote_send $dest "r\n"
remote_expect $dest 5 {
-re "r.*$shell_prompt.*" {
verbose "Target reset." 2
}
timeout {
# Get nastier. We want to leave the system in a state
# ready to run the next testcase.
remote_send $dest "q\n"
remote_close $dest;
set udi_shell_id [remote_open $dest]
if { $udi_shell_id < 0 } {
perror "Couldn't reset $dest."
}
}
}
if { $result == 1 } {
set result "fail"
} else {
set result "unresolved"
}
}
default {
set result "unresolved"
}
}
return [list $result $output];
}
#
# udi_exit -- shutdown the connection (or simulator)
#
proc udi_exit {} {
remote_close target;
}
set_board_info protocol "udi";
set_board_info connect "mondfe";
set_board_info shell_prompt "mondfe>";
Go to most recent revision | Compare with Previous | Blame | View Log