tinkered a bit with performance for Cortex flash programming. Mainly make it easier to profile as a start.
git-svn-id: svn://svn.berlios.de/openocd/trunk@1380 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
@@ -5,6 +5,9 @@
|
||||
* Copyright (C) 2008 by Spencer Oliver *
|
||||
* spen@spen-soft.co.uk *
|
||||
* *
|
||||
* Copyright (C) 2009 by Oyvind Harboe *
|
||||
* oyvind.harboe@zylin.com *
|
||||
* *
|
||||
* 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 *
|
||||
@@ -178,7 +181,7 @@ int swjdp_transaction_endcheck(swjdp_common_t *swjdp)
|
||||
int retval;
|
||||
u32 ctrlstat;
|
||||
|
||||
keep_alive();
|
||||
/* too expensive to call keep_alive() here */
|
||||
|
||||
/* Danger!!!! BROKEN!!!! */
|
||||
scan_inout_check_u32(swjdp, SWJDP_IR_DPACC, DP_CTRL_STAT, DPAP_READ, 0, &ctrlstat);
|
||||
@@ -199,27 +202,33 @@ int swjdp_transaction_endcheck(swjdp_common_t *swjdp)
|
||||
|
||||
swjdp->ack = swjdp->ack & 0x7;
|
||||
|
||||
long long then=timeval_ms();
|
||||
while (swjdp->ack != 2)
|
||||
if (swjdp->ack != 2)
|
||||
{
|
||||
if (swjdp->ack == 1)
|
||||
long long then=timeval_ms();
|
||||
while (swjdp->ack != 2)
|
||||
{
|
||||
if ((timeval_ms()-then) > 1000)
|
||||
if (swjdp->ack == 1)
|
||||
{
|
||||
LOG_WARNING("Timeout (1000ms) waiting for ACK = OK/FAULT in SWJDP transaction");
|
||||
if ((timeval_ms()-then) > 1000)
|
||||
{
|
||||
LOG_WARNING("Timeout (1000ms) waiting for ACK = OK/FAULT in SWJDP transaction");
|
||||
return ERROR_JTAG_DEVICE_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_WARNING("Invalid ACK in SWJDP transaction");
|
||||
return ERROR_JTAG_DEVICE_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_WARNING("Invalid ACK in SWJDP transaction");
|
||||
return ERROR_JTAG_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
scan_inout_check_u32(swjdp, SWJDP_IR_DPACC, DP_CTRL_STAT, DPAP_READ, 0, &ctrlstat);
|
||||
if ((retval=jtag_execute_queue())!=ERROR_OK)
|
||||
return retval;
|
||||
swjdp->ack = swjdp->ack & 0x7;
|
||||
scan_inout_check_u32(swjdp, SWJDP_IR_DPACC, DP_CTRL_STAT, DPAP_READ, 0, &ctrlstat);
|
||||
if ((retval=jtag_execute_queue())!=ERROR_OK)
|
||||
return retval;
|
||||
swjdp->ack = swjdp->ack & 0x7;
|
||||
}
|
||||
} else
|
||||
{
|
||||
/* common code path avoids fn to timeval_ms() */
|
||||
}
|
||||
|
||||
/* Check for STICKYERR and STICKYORUN */
|
||||
|
||||
Reference in New Issue
Block a user