SunSPOT API V3.0


com.sun.spot.peripheral
Interface IFlashMemoryDevice

All Known Implementing Classes:
M25P05

public interface IFlashMemoryDevice

Interface to flash memory devices on the main Spot board and external boards. We assume the device has the concepts of sector (unit of erasure) and page (max size of write, alignment boundary). Not all devices have page alignment restrictions, so a special write operation is provided that does not insist on writing at a page boundary. Devices that require alignment should throw an exception if this is called. For many devices the page size could, in principle, be equal to the sector size, or even larger, but implementors of this interface need to bear in mind: 1) the page size is used for the size of the RAM buffers in streamed I/O 2) flash writing for devices on the main bus often locks out all other processor activity, including interrupts. So for devices like that keeping the page size small is beneficial

Author:
Syntropy

Method Summary
 void eraseChip()
          Erase all data in the chip
 void eraseSectorAtAddress(int address)
          Erase a sector
 int getNumberOfSectors()
          Get the number of sectors in the device.
 int getNumberOfSectorsInRegion(int addrToFlash, int dataSize)
          Find the number of sectors in a region of the flash memory.
 int getPageSize()
          Get the page size for writing.
 int getSectorContainingAddress(int addrToFlash)
          Find the sector associated with a given address in the flash.
 int[] getSectorMap()
          Get a map of sector numbers to sector addresses
 int getSectorSize(int sectorNum)
          Get the size of a device sector
 int getSize()
          Get the capacity of the device
 void read(int address, int numOfBytes, byte[] buffer, int offset)
          Read data from the flash memory.
 boolean sectorErased(int address)
          Check whether a sector is erased.
 boolean verify(int address, int numOfBytes, byte[] buffer)
          Verify data in the flash memory.
 void write(int address, int numOfBytes, byte[] buffer, int offset)
          Write data into the flash memory.
 

Method Detail

read

void read(int address,
          int numOfBytes,
          byte[] buffer,
          int offset)
Read data from the flash memory.

Parameters:
address - address in memory to start reading
numOfBytes - number of bytes to read
buffer - the hold the data
offset - offset into buffer for first byte read

write

void write(int address,
           int numOfBytes,
           byte[] buffer,
           int offset)
Write data into the flash memory.

Parameters:
address - address in memory to start writing, no need to be page-aligned
numOfBytes - number of bytes to write, in range 0 to PAGE_SIZE
buffer - the data to write
offset - the offset into the buffer of the first byte to write
Throws:
IllegalStateException - if unaligned and this device requires page alignment

verify

boolean verify(int address,
               int numOfBytes,
               byte[] buffer)
Verify data in the flash memory.

Parameters:
address - address in memory to start verifying, must be page-aligned
numOfBytes - number of bytes to write, in range 0 to PAGE_SIZE
buffer - the data to verify against
Returns:
true if data matches

eraseSectorAtAddress

void eraseSectorAtAddress(int address)
Erase a sector

Parameters:
address - an address within sector to erase - must be even and in range

sectorErased

boolean sectorErased(int address)
Check whether a sector is erased.

Parameters:
address - an address within sector to check
Returns:
true if sector is erased

eraseChip

void eraseChip()
Erase all data in the chip


getPageSize

int getPageSize()
Get the page size for writing. Each call to write can write no more than one page.

Returns:
The page size in bytes

getSectorMap

int[] getSectorMap()
Get a map of sector numbers to sector addresses

Returns:
The map as an array of addresses where the array index is the sector number.

getSize

int getSize()
Get the capacity of the device

Returns:
The size of the memory in bytes

getSectorSize

int getSectorSize(int sectorNum)
Get the size of a device sector

Parameters:
sectorNum - The sector whose size is to be returned
Returns:
The size of the sector in bytes

getNumberOfSectors

int getNumberOfSectors()
Get the number of sectors in the device.

Returns:
Number of sectors.

getSectorContainingAddress

int getSectorContainingAddress(int addrToFlash)
Find the sector associated with a given address in the flash.

Parameters:
addrToFlash - The address.
Returns:
The sector number.

getNumberOfSectorsInRegion

int getNumberOfSectorsInRegion(int addrToFlash,
                               int dataSize)
Find the number of sectors in a region of the flash memory.

Parameters:
addrToFlash - The start of the region.
dataSize - The size of the region.
Returns:
The number of sectors.

SunSPOT API V3.0


Copyright © 2006, 2007 Sun Microsystems, Inc. All Rights Reserved.