* 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, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
/* The specification for SVF is available here:
if (strcmp(CMD_ARGV[0], "plain") != 0) {
tap = jtag_tap_by_string(CMD_ARGV[0]);
if (!tap) {
- command_print(CMD_CTX, "Tap: %s unknown", CMD_ARGV[0]);
+ command_print(CMD, "Tap: %s unknown", CMD_ARGV[0]);
return ERROR_FAIL;
}
}
xsvf_fd = open(filename, O_RDONLY);
if (xsvf_fd < 0) {
- command_print(CMD_CTX, "file \"%s\" not found", filename);
+ command_print(CMD, "file \"%s\" not found", filename);
return ERROR_FAIL;
}
if ((CMD_ARGC > 2) && (strcmp(CMD_ARGV[2], "quiet") == 0))
verbose = 0;
+ LOG_WARNING("XSVF support in OpenOCD is limited. Consider using SVF instead");
LOG_USER("xsvf processing file: \"%s\"", filename);
while (read(xsvf_fd, &opcode, 1) > 0) {
struct scan_field field;
result = svf_add_statemove(loop_state);
- if (result != ERROR_OK)
+ if (result != ERROR_OK) {
+ free(dr_in_mask);
return result;
+ }
jtag_add_clocks(loop_clocks);
jtag_add_sleep(loop_usecs);
}
if (tdo_mismatch) {
- command_print(CMD_CTX,
+ command_print(CMD,
"TDO mismatch, somewhere near offset %lu in xsvf file, aborting",
file_offset);
if (unsupported) {
off_t offset = lseek(xsvf_fd, 0, SEEK_CUR) - 1;
- command_print(CMD_CTX,
+ command_print(CMD,
"unsupported xsvf command (0x%02X) at offset %jd, aborting",
uc, (intmax_t)offset);
return ERROR_FAIL;
}
if (do_abort) {
- command_print(CMD_CTX, "premature end of xsvf file detected, aborting");
+ command_print(CMD, "premature end of xsvf file detected, aborting");
return ERROR_FAIL;
}
close(xsvf_fd);
- command_print(CMD_CTX, "XSVF file programmed successfully");
+ command_print(CMD, "XSVF file programmed successfully");
return ERROR_OK;
}