Hey,

>  By making it so that one can
> program their fuses when requested and only engage safemode when fuse
> bytes end up changed which were _not_ requested, then that makes
> safemode truly a safety net that stays out of the way until it is
> needed.  Win win.

Done in the latest patch. I did it by adding a simple test to the avr.c file 
where byte by byte programming is done:

/*
 * write a byte of data at the specified address
 */
int avr_write_byte(PROGRAMMER * pgm, AVRPART * p, AVRMEM * mem,
                   unsigned long addr, unsigned char data)
{

  unsigned char safemode_lfuse;
  unsigned char safemode_hfuse;
  unsigned char safemode_efuse;

  /* If we write the fuses, then we need to tell safemode that they *should* 
change */
  safemode_memfuses(0, &safemode_lfuse, &safemode_hfuse, &safemode_efuse);

  if (strcmp(mem->desc, "lfuse")==0) {
      safemode_lfuse = data;
  }
  if (strcmp(mem->desc, "hfuse")==0) {
      safemode_hfuse = data;
  }
  if (strcmp(mem->desc, "efuse")==0) {
      safemode_efuse = data;
  }
  
  safemode_memfuses(1, &safemode_lfuse, &safemode_hfuse, &safemode_efuse);

As you can see it just uses the new value as what too look for. I had support 
for this before when I originally wrote the function as I planned on adding 
it apparently. So here it is, I just needed to add that code.

Regards,

 -Colin


_______________________________________________
avrdude-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avrdude-dev

Reply via email to