Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
NAND(4)		       FreeBSD Kernel Interfaces Manual		       NAND(4)

     nand -- NAND Flash	framework

     device nand

     The FreeBSD nand framework	consists of a set of interfaces	that aim to
     provide an	extensible, object oriented environement for NAND controllers
     and NAND Flash memory chips from various hardware vendors,	and to allow
     for uniform and flexible management of the	NAND devices.  It comprises of
     the following major components:

     +o	 NAND Flash controller (NFC) interface.

	 Defines methods which allow to	send commands as well as send/receive
	 data between the controller and a NAND	chip.  Back-end	drivers	for
	 specific NAND controllers plug	into this interface and	implement low-
	 level routines	for a given NAND controller.

	 This layer implements basic functionality of a	NAND Flash controller.
	 It allows to send command and address to chip,	drive CS (chip select
	 line),	as well	as read/write to the selected NAND chip.  This layer
	 is independent	of NAND	chip devices actually connected	to the con-

     +o	 NAND chip interface.

	 Provides basic	operations like	read page, program page, erase block.
	 Currently three generic classes of drivers are	available, which pro-
	 vide support for the following	chips:

	 +o   large page

	 +o   small page

	 +o   ONFI-compliant

	 This layer implements basic operations	to be performed	on a NAND
	 chip, like read, program, erase, get status etc.  Since these opera-
	 tions use specific commands (depending	on the vendor),	each chip has
	 potentially its own implementation of the commands set.

	 The framework is extensible so	it is also possible to create a	custom
	 command set for a non standard	chip support.

     +o	 NANDbus.

	 This layer is responsible for enumerating NAND	chips in the system
	 and establishing the hierarchy	between	chips and their	supervising

	 Its main purpose is detecting type of NAND chips connected to a given
	 chip select (CS line).	 It also allows	manages	locking	access to the
	 NAND controller.  NANDbus passes requests from	an active chip to the
	 chip controller.

     +o	 NAND character	/ GEOM device.

	 For each NAND chip found in a system a	character and GEOM devices are
	 created which allows to read /	write directly to a device, as well as
	 perform other specific	operations (like via ioctl).

	 There are two GEOM devices created for	each NAND chip:

	 +o   raw device

	 +o   normal device

	 Raw device allows to bypass ECC checking when reading/writing to it,
	 while normal device always uses ECC algorithm to validate the read

	 NAND character	devices	will be	created	for each NAND chip detected
	 while probing the NAND	controller.

     libnandfs(3), gnand(4), nandsim(4), nandfs(5), makefs(8),
     mount_nandfs(8), nandfs(8), nandsim(8), nandtool(8), newfs_nandfs(8),

     Open NAND Flash Interface Working Group (ONFI).

     The nand framework	support	first appeared in FreeBSD 10.0.

     The nand framework	was designed and developed by Grzegorz Bernacki.  This
     manual page was written by	Rafal Jaworowski.

FreeBSD	11.0			 March 8, 2012			  FreeBSD 11.0


Want to link to this manual page? Use this URL:

home | help