DANGER: committed work-in-progress to handle examination of jtag devices without...
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 19 Aug 2008 13:55:14 +0000 (13:55 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 19 Aug 2008 13:55:14 +0000 (13:55 +0000)
added alive_sleep() to avoid warnings when resetting target(fixes incomprehensible error timeout error messages in GDB).

git-svn-id: svn://svn.berlios.de/openocd/trunk@941 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/jtag/jtag.c

index d1ee1bbbeba2f3955338e7d8099dd45564a74356..d5158126c9160bc9eac4638e1a4b416940f3442a 100644 (file)
@@ -1311,7 +1311,7 @@ int jtag_reset_callback(enum jtag_event event, void *priv)
 
 void jtag_sleep(u32 us)
 {
-       usleep(us);
+       alive_sleep(us/1000);
 }
 
 /* Try to examine chain layout according to IEEE 1149.1 ยง12
@@ -1364,9 +1364,8 @@ int jtag_examine_chain(void)
                if ((idcode & 1) == 0)
                {
                        /* LSB must not be 0, this indicates a device in bypass */
-                       device_count++;
-                       
-                       LOG_WARNING("Device was in bypass after TRST/TMS reset");
+                       LOG_WARNING("Device does not have IDCODE");
+                       idcode=0;
                        
                        bit_count += 1;
                }
@@ -1403,13 +1402,6 @@ int jtag_examine_chain(void)
                                break;
                        }
                        
-                       if (device)
-                       {
-                               device->idcode = idcode;
-                               device = device->next;
-                       }
-                       device_count++;
-                       
                        manufacturer = (idcode & 0xffe) >> 1;
                        part = (idcode & 0xffff000) >> 12;
                        version = (idcode & 0xf0000000) >> 28;
@@ -1419,6 +1411,12 @@ int jtag_examine_chain(void)
                        
                        bit_count += 32;
                }
+               if (device)
+               {
+                       device->idcode = idcode;
+                       device = device->next;
+               }
+               device_count++;
        }
        
        /* see if number of discovered devices matches configuration */
@@ -1591,7 +1589,7 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx)
                        LOG_ERROR("Could not validate JTAG chain");
                        return ERROR_JTAG_INVALID_INTERFACE;
                }
-               usleep(10000);
+               alive_sleep(10);
        }
        
        return ERROR_OK;