ISF(4)

NAME
isf - driver for Intel StrataFlash NOR flash devices

SYNOPSIS
device isf

In /boot/device.hints:
hint.isf.0.at="nexus0"
hint.isf.0.maddr=0x74000000
hint.isf.0.msize=0x2000000

DESCRIPTION
The isf device driver provides support for Intel StrataFlash NOR flash devices. Devices are presented as disk(9) devices and read access is supported along with limited write support. Erasing blocks is supported the ISF_ERASE ioctl.

The erase block size of isf devices is 128K. NOR flash blocks contains all 1's after an erase cycle. Writes to isf devices are allowed to succeed if and only if they all bits in the write block (512-bytes) remain the same or transition from 1 to 0.

HARDWARE
The current version of the isf driver is known to support the 64MB part found on the Altera DE4 board. It attempts to support other StrataFlash parts documented in the datasheet, but those are untested.

IOCTLS
The device supports the ioctl(2) command codes:

ISF_ERASE
    Erase one or more blocks. ISF_ERASE is defined as follows:

        	struct isf_range {
        		off_t	ir_off;
        		size_t	ir_size;
        	};
        	#define ISF_ERASE       _IOW('I', 1, struct isf_range)

    The ir_off member marks the beginning of the area to be erased and must fall on at 128K boundary. The ir_size member indicates the size of the area to be erased and must a multiple of 128K.

SEE ALSO
isfctl(4), disk(9) Intel StrataFlash Embedded Memory (P30), November 1, 2005, Intel Corporation, http://www.xilinx.com/products/boards/ml505/datasheets/30666604.pdf.

HISTORY
The isf device driver first appeared in FreeBSD 10.0.

AUTHORS
The isf device driver and this manual page were developed by SRI International and the University of Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) (“CTSRD”), as part of the DARPA CRASH research programme.

BUGS
While an erase is in progress, all read and write operations return EBUSY. In principle, reads could be allowed outside the programming region the blocked currently being erased resides in and writes could be allowed by suspending the erase, but neither of these is currently implemented.

Depending on the flash part ether the top or bottom 128K of the flash address space is divided into 4 32K erase blocks. The isf driver hides this from the user requiring that all erase requests be multiples of 128K in size and erasing the individual blocks as needed at the top or bottom.