Commit e5181df1 authored by oharboe's avatar oharboe
Browse files

added 1000ms timeout

git-svn-id: svn://svn.berlios.de/openocd/trunk@970 b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent f5507d89
...@@ -305,8 +305,9 @@ int str9x_erase(struct flash_bank_s *bank, int first, int last) ...@@ -305,8 +305,9 @@ int str9x_erase(struct flash_bank_s *bank, int first, int last)
{ {
return retval; return retval;
} }
while (1) { int i;
for (i=0; i<1000; i++) {
if ((retval=target_read_u8(target, adr, &status))!=ERROR_OK) if ((retval=target_read_u8(target, adr, &status))!=ERROR_OK)
{ {
return retval; return retval;
...@@ -315,6 +316,11 @@ int str9x_erase(struct flash_bank_s *bank, int first, int last) ...@@ -315,6 +316,11 @@ int str9x_erase(struct flash_bank_s *bank, int first, int last)
break; break;
alive_sleep(1); alive_sleep(1);
} }
if (i==1000)
{
LOG_ERROR("erase timed out");
return ERROR_FAIL;
}
/* clear status, also clear read array */ /* clear status, also clear read array */
if ((retval=target_write_u16(target, adr, 0x50))!=ERROR_OK) if ((retval=target_write_u16(target, adr, 0x50))!=ERROR_OK)
...@@ -571,13 +577,20 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count) ...@@ -571,13 +577,20 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
/* get status command */ /* get status command */
target_write_u16(target, bank_adr, 0x70); target_write_u16(target, bank_adr, 0x70);
while (1) { int i;
for (i=0; i<1000; i++)
{
target_read_u8(target, bank_adr, &status); target_read_u8(target, bank_adr, &status);
if( status & 0x80 ) if( status & 0x80 )
break; break;
alive_sleep(1); alive_sleep(1);
} }
if (i==1000)
{
LOG_ERROR("write timed out");
return ERROR_FAIL;
}
/* clear status reg and read array */ /* clear status reg and read array */
target_write_u16(target, bank_adr, 0x50); target_write_u16(target, bank_adr, 0x50);
...@@ -614,12 +627,19 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count) ...@@ -614,12 +627,19 @@ int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
/* query status command */ /* query status command */
target_write_u16(target, bank_adr, 0x70); target_write_u16(target, bank_adr, 0x70);
while (1) { int i;
for (i=0; i<1000; i++)
{
target_read_u8(target, bank_adr, &status); target_read_u8(target, bank_adr, &status);
if( status & 0x80 ) if( status & 0x80 )
break; break;
alive_sleep(1); alive_sleep(1);
} }
if (i==1000)
{
LOG_ERROR("write timed out");
return ERROR_FAIL;
}
/* clear status reg and read array */ /* clear status reg and read array */
target_write_u16(target, bank_adr, 0x50); target_write_u16(target, bank_adr, 0x50);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment