This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Flash Driver Read/Write Alignment Question


On Fri, 2006-06-09 at 10:06 -0700, Jay Foster wrote:
> I am puzzling over how the eCos flash drivers are supposed to work when
> using 16-bit wide flash devices.  I'm using an ARM architecture (ARM7TDMI,
> ARM940T), and the AMD AM29LV160 flash device connected in the 16-bit wide
> mode (CYGNUM_FLASH_WIDTH=16).
> 
> Looking at the flash driver code, this defines the flash_data_t as a 16-bit
> type.  This results in all accesses to the flash device to be performed as
> 16-bit reads/writes.
> 
> The flash driver defines some special addresses (FLASH_Setup_Addr1,
> FLASH_Setup_Addr2, etc.).  At least one of these will be defined as an odd
> address.  This will result in an unaligned transfer, causing a DATA ABORT
> exception.  What am I missing here?

They should not end up at odd addresses since they are cast to the
FLASH element type.  If this is 16 bit, Addr(0xA55) == 0x14AA, etc.

If you're ending up with alignment issues, then you've configured
your FLASH driver incorrectly (check the defines).  There are lots
of examples of 16 and 32 bit device setups, as well as some parallel
and banked layouts.

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]