The MTD driver is a sophisticated kernel tool available to manage and manipulate Flash devices. It is used to accommodate varying physical flash implementations, and varying methods of connecting flash memory to the Blackfin. The MTD subsystem must be told to find a particular Flash device at a particular address. This is done by registering one or more probe routines, and the address that the probe is at. The MTD controller will then try to identify the device at that address. If it is successful, it will then set up the access routines and control mechanisms. To erase it, users can set up the sector sizes and the array sizes. Then the device can be registered with the kernel and divided into partitions. Those partitions can be compiled into the driver. A module can set up the partition table for different variants of the same kernel, or define that partition on the command line. Once that is set up, the MTD block driver can be used to mount the Flash device into the kernel's virtual file system layer. At this point the kernel will expect the file system to exist on it, or it can be an erased device and the JFFS2 file system will recognize and start adapting it as a JFFS2 image. The character-based device driver, also available in the MTD subsystem, can be used to copy raw image data into the device. This is how the device can be erased or loaded with an initial image.

