bugAVR C Runtime Library - Bugs: bug #38192, eeprom_update_byte does not use...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #38192: eeprom_update_byte does not use bitwise AND

Submitter:  None
Submitted:  Tue 29 Jan 2013 11:23:56 AM UTC
   
 
Category:  Library Severity:  3 - Normal
Priority:  5 - Normal Item Group:  libc code
Status:  None Assigned to:  None
Percent Complete:  0% Originator Email:  -email is unavailable-
Open/Closed:  Open Release:  Any
Fixed Release:  None

Discussion

Tue 29 Jan 2013 11:23:56 AM UTC, original submission:  

As described in AVR103, there is no need of erase cycle if new value match bitwise AND between the old value and the new value.

Patch below uses this functionality, eeprom endurance is higher and update time is reduced too.


% diff -u eeupd_byte.S.orig eeupd_byte.S
--- eeupd_byte.S.orig   2013-01-29 10:54:43.000000000 +0100
+++ eeupd_byte.S        2013-01-29 12:02:25.000000000 +0100
@@ -88,8 +88,14 @@
        breq    2f
 
 # if    defined (EEPM0) && defined (EEPM1)
-       ; Set programming mode: erase and write.
+       ; Set programming mode: write only
        out     SFR_IO_ADDR (EECR), __zero_reg_
+       sbi     _SFR_IO_ADDR (EECR),EEPM1
+       ;test bitwise AND
+       and     _tmp_reg_, r18
+       cpse    _tmp_reg_, r18
+       ; final value different, set programing mode: erase and write
+       cbi     _SFR_IO_ADDR (EECR),EEPM1
 # elif  defined (EEPM0) || defined (EEPM1)
 #  error       /* Unknown EECR register.       */
 # endif

Anonymous

 

Attached Files

This item currently has no attached files.

 

Dependencies

This item does not depend on any other items.

No items depend on this one.

 

Mail Notification Carbon-Copy List

Carbon-Copy List
  • -email is unavailable- added by None (Submitted the item)
  •  

    History

    No changes have been made to this item

    Back to the top

    Powered by Savane 3.16-2753.
    Corresponding source code