lm3s3748 config file
[fw/openocd] / src / flash / stellaris.c
index cc85cafb1cc1b656297b29236e572de1888dcab1..e39978606c71b20bc85d8f0ba1cdc0cdb750a1b3 100644 (file)
@@ -410,7 +410,7 @@ u32 stellaris_wait_status_busy(flash_bank_t *bank, u32 waitbits, int timeout)
        while (((status = stellaris_get_flash_status(bank)) & waitbits) && (timeout-- > 0))
        {
                LOG_DEBUG("status: 0x%x", status);
-               usleep(1000);
+               alive_sleep(1);
        }
        
        /* Flash errors are reflected in the FLASH_CRIS register */
@@ -520,6 +520,7 @@ int stellaris_protect_check(struct flash_bank_s *bank)
 
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -549,6 +550,7 @@ int stellaris_erase(struct flash_bank_s *bank, int first, int last)
        
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -619,6 +621,7 @@ int stellaris_protect(struct flash_bank_s *bank, int set, int first, int last)
        
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
        
@@ -814,6 +817,7 @@ int stellaris_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count
        
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -915,6 +919,7 @@ int stellaris_probe(struct flash_bank_s *bank)
        
        if (bank->target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
 
@@ -941,6 +946,7 @@ int stellaris_mass_erase(struct flash_bank_s *bank)
        
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
        
@@ -1007,15 +1013,20 @@ int stellaris_handle_mass_erase_command(struct command_context_s *cmd_ctx, char
                return ERROR_OK;
        }
        
-       stellaris_mass_erase(bank);
-       
-       /* set all sectors as erased */
-       for (i = 0; i < bank->num_sectors; i++)
+       if (stellaris_mass_erase(bank) == ERROR_OK)
        {
-               bank->sectors[i].is_erased = 1;
+               /* set all sectors as erased */
+               for (i = 0; i < bank->num_sectors; i++)
+               {
+                       bank->sectors[i].is_erased = 1;
+               }
+               
+               command_print(cmd_ctx, "stellaris mass erase complete");
+       }
+       else
+       {
+               command_print(cmd_ctx, "stellaris mass erase failed");
        }
-       
-       command_print(cmd_ctx, "stellaris mass erase complete");
        
        return ERROR_OK;
 }