(
Jump to the original submission)
Sat 08 Mar 2008 10:49:11 PM UTC, comment #6:
Fixed in CVS HEAD and 1_6 branches.
|
Sat 08 Mar 2008 02:21:24 PM UTC, comment #5:
Changing owner to Dmitry.
|
Tue 18 Dec 2007 10:48:57 PM UTC, comment #4:
Deferred until 1.6.1.
|
Tue 30 Oct 2007 12:43:45 PM UTC, comment #3:
This can be fixed by reimplementing the EEPROM API via inline assembly macros. This will also potentially fix GCC bug #31644. I am currently working on such an implementation, so I'll take the bug.
|
Wed 24 Oct 2007 10:56:00 AM UTC, comment #2:
> If we skip this then we might be ok, if the eeprom.S
> file is build per device not per architecture.
Unfortunately, it actually is per architecture, not per
device. That's the reason why it is compiled into two
different object files (for two different EEPROM base
addresses).
The only way I'm seeing is to compile it into four different
object files (base address vs. 8- or 16-bit addressing), and
extend the macro wrapper logic in <avr/eeprom.h>.
|
Wed 24 Oct 2007 10:09:42 AM UTC, comment #1:
I thinks the current file is capable of handling this.
But it always undefs EEARH to redefine it as EERAL+1.
If we skip this then we might be ok, if the eeprom.S file is build per device not per architecture. Which must be the case otherwise the whole setup can't work.
Another option would be to only use EEARH if E2END is larger then 0xFF. So instead of undef and def EEARH and doign a check on #ifdef EEARH we could do a #if E2END > 0xFF.
Just my 2 cents
|
Wed 24 Oct 2007 07:53:24 AM UTC, original submission:
The library functions, defined in avr-libc-1.4.6/libc/misc/eeprom.S"
always write a 16-Bit address to the EEAR register. This is expressly forbidden in the Tiny13 datasheet and appears to cause faulty reading of the eeprom data under some circumstances.
Reference:
Tiny 13 datasheet on page 158, note 1: "Reserved I/O memory
addresses should never be written".
The same appears for the 8515 and 2313 (these are expressly mentioned in 'eeprom.S').
My proposal is to modify eeprom.S to write 16 bit addresses where the ioxxyy.h file defines EEARH and 8 bit to all others (seems OK for newer devices, I don't have experience of the older parts).
|
(Note: upload size limit is set to 16384 kB, after insertion of the required
escape characters.)
Attach File(s):
Comment:
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
Follow 7 latest changes.