I just saw you did re-post... but you only waited 4 hours.  That is not
enough time.  You need to wait 12-24 hours, preferably 24.

On Wed, 2009-07-08 at 13:50 -0700, Zach Welch wrote:
> You need to re-post patches when they change substantially.   You added
> new code that was not in the original patch.  
> 
> It still has whitespace problems.
> 
> On Wed, 2009-07-08 at 20:29 +0200, ohar...@mail.berlios.de wrote:
> > Author: oharboe
> > Date: 2009-07-08 20:29:03 +0200 (Wed, 08 Jul 2009)
> > New Revision: 2499
> > 
> > Modified:
> >    trunk/src/flash/aduc702x.c
> > Log:
> > Fix SEGFAULTs and broken error handling for flash programming w/working area
> > 
> > Modified: trunk/src/flash/aduc702x.c
> > ===================================================================
> > --- trunk/src/flash/aduc702x.c      2009-07-08 10:38:50 UTC (rev 2498)
> > +++ trunk/src/flash/aduc702x.c      2009-07-08 18:29:03 UTC (rev 2499)
> > @@ -193,6 +193,11 @@
> >     return ERROR_FLASH_OPERATION_FAILED;
> >  }
> >  
> > +/* If this fn returns ERROR_TARGET_RESOURCE_NOT_AVAILABLE, then the caller 
> > can fall
> > + * back to another mechanism that does not require onboard RAM
> > + *
> > + * Caller should not check for other return values specifically
> > + */
> >  static int aduc702x_write_block(struct flash_bank_s *bank, uint8_t 
> > *buffer, uint32_t offset, uint32_t count)
> >  {
> >     aduc702x_flash_bank_t *aduc702x_info = bank->driver_priv;
> > @@ -204,6 +209,12 @@
> >     armv4_5_algorithm_t armv4_5_info;
> >     int retval = ERROR_OK;
> >  
> > +   if (((count%2)!=0)||((offset%2)!=0))
> > +   {
> > +           LOG_ERROR("write block must be multiple of two bytes in offset 
> > & length");
> > +           return ERROR_FAIL;
> > +   }
> > +
> >          /* parameters:
> >  
> >          r0 - address of source data (absolute)
> > @@ -249,8 +260,12 @@
> >             return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
> >     };
> >  
> > -   target_write_buffer(target, aduc702x_info->write_algorithm->address,
> > +   retval=target_write_buffer(target, 
> > aduc702x_info->write_algorithm->address,
> >                  sizeof(aduc702x_flash_write_code), 
> > (uint8_t*)aduc702x_flash_write_code);
> > +   if (retval!=ERROR_OK)
> > +   {
> > +           return retval;
> > +   }
> >  
> >     /* memory buffer */
> >     while (target_alloc_working_area(target, buffer_size, &source) != 
> > ERROR_OK)
> > @@ -279,12 +294,16 @@
> >  
> >     while (count > 0)
> >     {
> > -           uint32_t thisrun_count = (count > (buffer_size / 2)) ? 
> > (buffer_size / 2) : count;
> > +           uint32_t thisrun_count = (count > buffer_size) ? buffer_size : 
> > count;
> >  
> > -           target_write_buffer(target, source->address, thisrun_count * 2, 
> > buffer);
> > +           retval=target_write_buffer(target, source->address, 
> > thisrun_count, buffer);
> > +           if (retval!=ERROR_OK)
> > +           {
> > +                   break;
> > +           }
> >  
> >             buf_set_u32(reg_params[0].value, 0, 32, source->address);
> > -           buf_set_u32(reg_params[1].value, 0, 32, thisrun_count);
> > +           buf_set_u32(reg_params[1].value, 0, 32, thisrun_count/2);
> >             buf_set_u32(reg_params[2].value, 0, 32, address);
> >             buf_set_u32(reg_params[4].value, 0, 32, 0xFFFFF800);
> >  
> > @@ -294,17 +313,19 @@
> >                          10000, &armv4_5_info)) != ERROR_OK)
> >             {
> >                     LOG_ERROR("error executing aduc702x flash write 
> > algorithm");
> > -                   retval = ERROR_FLASH_OPERATION_FAILED;
> >                     break;
> >             }
> >  
> > -           if ((buf_get_u32(reg_params[3].value, 0, 32) & 1) != 1) {
> > -                   retval = ERROR_FLASH_OPERATION_FAILED;
> > +           if ((buf_get_u32(reg_params[3].value, 0, 32) & 1) != 1)
> > +           {
> > +                   /* FIX!!!! what does this mean??? replace w/sensible 
> > error message */
> > +                   LOG_ERROR("aduc702x detected error writing flash");
> > +                   retval = ERROR_FAIL;
> >                     break;
> >             }
> >  
> > -           buffer += thisrun_count * 2;
> > -           address += thisrun_count * 2;
> > +           buffer += thisrun_count;
> > +           address += thisrun_count;
> >             count -= thisrun_count;
> >     }
> >  
> > @@ -382,14 +403,9 @@
> >                                  return ERROR_FLASH_OPERATION_FAILED;
> >                          }
> >                  }
> > -                else if (retval == ERROR_FLASH_OPERATION_FAILED)
> > -                {
> > -                        LOG_ERROR("flash block writing failed");
> > -                        return ERROR_FLASH_OPERATION_FAILED;
> > -                }
> >          }
> >  
> > -        return ERROR_OK;
> > +        return retval;
> >  }
> >  
> >  static int aduc702x_probe(struct flash_bank_s *bank)
> > 
> > _______________________________________________
> > Openocd-svn mailing list
> > openocd-...@lists.berlios.de
> > https://lists.berlios.de/mailman/listinfo/openocd-svn
> 
> _______________________________________________
> Openocd-development mailing list
> Openocd-development@lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/openocd-development

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to