tinker with Xscale performance, anti-log spamming is now only for debug_level 3 or more. Otherwise polling is done continously for 1 second.

git-svn-id: svn://svn.berlios.de/openocd/trunk@937 b42882b7-edfa-0310-969c-e2dbd0fdcd60
__archive__
oharboe 2008-08-19 11:56:45 +00:00
parent bbe7110f42
commit 91b6460671
1 changed files with 51 additions and 53 deletions

View File

@ -487,41 +487,40 @@ int xscale_read_tx(target_t *target, int consume)
for (;;) for (;;)
{ {
int i; /* if we want to consume the register content (i.e. clear TX_READY),
for (i=0; i<100; i++) * we have to go straight from Capture-DR to Shift-DR
* otherwise, we go from Capture-DR to Exit1-DR to Pause-DR
*/
if (consume)
jtag_add_pathmove(3, path);
else
{ {
/* if we want to consume the register content (i.e. clear TX_READY), jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path);
* we have to go straight from Capture-DR to Shift-DR }
* otherwise, we go from Capture-DR to Exit1-DR to Pause-DR
*/ jtag_add_dr_scan(3, fields, TAP_RTI);
if (consume)
jtag_add_pathmove(3, path); if ((retval = jtag_execute_queue()) != ERROR_OK)
else {
{ LOG_ERROR("JTAG error while reading TX");
jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path); return ERROR_TARGET_TIMEOUT;
} }
jtag_add_dr_scan(3, fields, TAP_RTI); gettimeofday(&now, NULL);
if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec)))
if ((retval = jtag_execute_queue()) != ERROR_OK) {
{ LOG_ERROR("time out reading TX register");
LOG_ERROR("JTAG error while reading TX"); return ERROR_TARGET_TIMEOUT;
return ERROR_TARGET_TIMEOUT; }
} if (!((!(field0_in & 1)) && consume))
{
gettimeofday(&now, NULL); goto done;
if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) }
{ if (debug_level>=3)
LOG_ERROR("time out reading TX register"); {
return ERROR_TARGET_TIMEOUT; LOG_DEBUG("waiting 10ms");
} usleep(10*1000); /* avoid flooding the logs */
if (!((!(field0_in & 1)) && consume))
{
goto done;
}
} }
LOG_DEBUG("waiting 10ms");
usleep(10*1000); /* avoid flooding the logs */
} }
done: done:
@ -585,28 +584,27 @@ int xscale_write_rx(target_t *target)
LOG_DEBUG("polling RX"); LOG_DEBUG("polling RX");
for (;;) for (;;)
{ {
int i; jtag_add_dr_scan(3, fields, TAP_RTI);
for (i=0; i<100; i++)
if ((retval = jtag_execute_queue()) != ERROR_OK)
{ {
jtag_add_dr_scan(3, fields, TAP_RTI); LOG_ERROR("JTAG error while writing RX");
return retval;
if ((retval = jtag_execute_queue()) != ERROR_OK) }
{
LOG_ERROR("JTAG error while writing RX"); gettimeofday(&now, NULL);
return retval; if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec)))
} {
LOG_ERROR("time out writing RX register");
gettimeofday(&now, NULL); return ERROR_TARGET_TIMEOUT;
if ((now.tv_sec > timeout.tv_sec) || ((now.tv_sec == timeout.tv_sec)&& (now.tv_usec > timeout.tv_usec))) }
{ if (!(field0_in & 1))
LOG_ERROR("time out writing RX register"); goto done;
return ERROR_TARGET_TIMEOUT; if (debug_level>=3)
} {
if (!(field0_in & 1)) LOG_DEBUG("waiting 10ms");
goto done; usleep(10*1000); /* avoid flooding the logs */
} }
LOG_DEBUG("waiting 10ms");
usleep(10*1000); /* wait 10ms to avoid flooding the logs */
} }
done: done: