This is the mail archive of the ecos-discuss@sources.redhat.com 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]

Problem with Flash drivers, RedBoot, and Flash high in the memory map


I am porting the Flash drivers to the Motorola MPC8260 Voyager Advanced 
Development Board.  This board puts the Flash in the last 8M of the 32 bit 
memory map.  I have run into trouble getting the fis commands to work due 
to the fact that many of the functions to manipulate the flash use as the 
address of the end of the Flash

end_addr = Flash_start_addr + length(Flash)

In my case, the end_addr wraps around so the value is 0x0, so any compares 
to see if my working address is greater than the end_addr always are true.

I am now going through the code to find all the places where I need to 
subtract 1 from my end_addr and change the compares from "<" to "<=".

Has anyone else encountered this issue, or am I the first one to use Flash 
at the high end of the memory map, or am I missing a switch, CDL option, or 
something else obvious?

In a somewhat related issue, the Sharp Flash memory that is on the board 
supports locking of the Flash blocks.  The way it works is that you can 
individually lock a 256K block, but unlocking affects all 32 blocks.  In 
order to use locking, I will implement the unlock function as a three step 
process:

1)  Query Flash to determine which blocks are locked.
2)  If the block I want to unlock is locked, unlock all blocks (its the 
only choice I have)
3)  Go back and relock the blocks that were originally locked.

Does the Intel implementation of this Flash standard implement individual 
block unlocking?


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