Memory Technology Device (MTD) Subsystem for Linux

Design aims

We're working on a generic Linux subsystem for memory devices, especially Flash devices.

The aim of the system is to make it simple to provide a driver for new hardware, by providing a generic interface between the hardware drivers and the upper layers of the system.

Hardware drivers need to know nothing about the storage formats used, such as FTL, FFS2, etc., but will only need to provide simple routines for read, write and erase. Presentation of the device's contents to the user in an appropriate form will be handled by the upper layers of the system.


Mailing list and IRC

There is a mailing list for discussion of MTD development: linux-mtd@lists.infradead.org. Please do not post to the mailing list without first reading my notes on etiquette. Full archives are available at http://lists.infradead.org/pipermail/linux-mtd/.

To subscribe, go here or send "subscribe" in the body of a mail to linux-mtd-request@lists.infradead.org

NOTE: DO NOT SEND YOUR SUBSCRIPTION REQUEST TO THE LIST ITSELF.
SEND IT TO linux-mtd-request@lists.infradead.org AS THE ABOVE SAYS.

There is also an IRC channel: #mtd on irc.ipv6.freenode.net or irc.freenode.net


Download and CVS

Very occasionally, I make snapshot releases. Now that the MTD code is in the 2.4 kernel, it's become even rarer. Your best option is to obtain the latest code from CVS, by following the instructions below. We do break the CVS build occasionally, but we're also fairly good at fixing it quickly when we do so.

Anonymous CVS access is available, and full CVS access may also be granted to developers on request.

cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login (password: anoncvs)
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd
    

If you can't access anoncvs for some reason, daily snapshots are also available at ftp://ftp.uk.linux.org/pub/people/dwmw2/mtd/cvs/


Installation

Check out sources from CVS or download a snapshot and untar it. Change to the top directory and read INSTALL. Change to subdir patches. There you find a script patchin.sh. It is highly recommended to use this script, as it is aware of different kernel versions, pristine or already patched kernels. This script applies all the neccecary changes to your kernel source including the often discussed shared zlib patches. Your kernel source must be configured already, as the script retrieves information from Makefile in your kernel source.
The script takes following options:
-c copy files into kernel tree instead of linking files
-j include jffs(2) filesystems
As last argument you have to give the path of your kernel tree. This must be an absolute path.

The difference between linking and copying files into the kernel tree is, that copying gives you a modified kernel tree, which can be handled by CVS as it contains no symlinks. Linking the files has two advantages.
1. All your kernel trees can share the same MTD source.
2. You can have more than one MTD source eg. a stable and an unstable and use it with your kernel tree(s) by changing the link to the directories. Assumed you have two MTD versions (stable and unstable) and those are located in source, then the directory listing of source shows:
mtd->/source/mtd.stable
mtd.stable
mtd.unstable
If you want to build with your stable MTD source, set the mtd link to mtd.stable else to mtd.unstable. Don't forget to make clean, if you switch the links.


Documentation

There is now some MTD API documentation available. It's a little out of date - the API has been evolving over the last few months as we encounter strange pieces of hardware that we hadn't anticipated, and occasionally when I'd just overlooked something blatantly obvious. Volunteers to update the docs are welcome.

13th Feb 2001: A mtd-jffs-HOWTO is now also available under CVS. Not all topics are covered yet, but it's a start.

5th May 2002: A NAND Flash document is now available. It covers some technical topics about NAND and filesystems and contains a HOWTO.


Booting

You can now replace the firmware on the DiskOnChip 2000, and possibly also the DiskOnChip Millennium, with a version of GNU Grub which runs directly from the flash.

The patches to make Grub aware of the DiskOnChip and the NFTL format used on it, along with a first-stage loader to load Grub itself into memory from the DiskOnChip, are in the CVS repository.


MTD User modules

These are the modules which provide interfaces that can be used directly from userspace. The user modules currently planned include:


MTD hardware device drivers

These provide physical access to memory devices, and are not used directly - they are accessed through the user modules above.


David Woodhouse
$Id: index.html,v 1.30 2003/09/29 10:17:40 dwmw2 Exp $