NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

TI811X PSP MTD Utilities User Guide

From Texas Instruments Wiki
(Redirected from TI811x MTD Utilities)
Jump to: navigation, search

What are the MTD Utilities?[edit]

MTD subsystem (stands for Memory Technology Devices) provides an abstraction layer for raw flash devices. It makes it possible to use the same API when working with different flash types and technologies, e.g. NAND, OneNAND, NOR, AG-AND, ECC'd NOR, etc.

MTD subsystem does not deal with block devices like MMC, eMMC, SD, CompactFlash, etc. These devices are not raw flashes but they have a Flash Translation layer inside, which makes them look like block devices. These devices are the subject of the Linux block subsystem, not MTD.

MTD subsystem has the following interfaces.

  • MTD character devices - usually referred to as /dev/mtd0, /dev/mtd1, and so on. These character devices provide I/O access to the raw flash. They support a number of ioctl calls for erasing eraseblocks, marking them as bad or checking if an eraseblock is bad, getting information about MTD devices, etc.
  • The sysfs interface is relatively newer and it provides full information about each MTD device in the system. This interface is easily extensible and developers are encouraged to use the sysfs interface instead of older ioctl or /proc/mtd interfaces, when possible.
  • The /proc/mtd proc file system file provides general MTD information. This is a legacy interface and the sysfs interface provides more information.

MTD subsystem supports bare NAND flashes with software and hardware ECC, OneNAND flashes, CFI (Common Flash Interface) NOR flashes, and other flash types.

For more information on MTD, refer <http://www.linux-mtd.infradead.org/doc/general.html>

MTD-Utils User-space tools[edit]

The MTD Utilities are a collection of tools that allow the user to interact with the MTD subsystem in the kernel to perform operations on Flash devices. The most commonly used utilities are:

  • flash_erase - Erases an erase block of flash
  • flash_eraseall - Erases the entire flash device
  • flashcp - Copies data into NOR flash
  • flash_info - Displays information about Flash devices
  • flash_lock - Lock flash pages to prevent writing
  • flash_unlock - Unlock flash pages to allow writing
  • mkfs.jffs2 - Create a JFFS2 file system image from an existing file system
  • nandwrite - Write an input file (i.e. JFFS2 or YAFFS2 image) to the NAND Flash device

These utilities are often used to write file system images to the Flash device on an embedded system.

MTD-Utils Compilation[edit]

Source and dependencies[edit]

Dependencies

The 'mtd-utility' requires zlib, lzo and uuid (from e2fsprogs) libraries. The former two are used for compressing the data, and the latter one is used for generating universally unique ID number for the file-system.

  1. zlib
  2. lzo
  3. e2fsprogs


Sources

zlib
Download zlib from http://zlib.net/. The zlib version is 1.2.5.


lzo
Download from http://www.oberhumer.com/opensource/lzo/download/ . The lzo version is 2.0.6. Download from http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz


e2fsprogs
Download e2fsprogs from http://e2fsprogs.sourceforge.net/ . The e2fsprogs version is 1.42. Download from http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/1.42/e2fsprogs-1.42.tar.gz/download


MTD-Utils
MTD utils are available from http://git.infradead.org/mtd-utils.git. You can get them by

MTD-Utils Version as of writing this wiki is release 1.4.8

Current link for tar archive as of writing this wiki is http://git.infradead.org/mtd-utils.git/snapshot/d37fcc0afd0d4a14c56812847e8e4257d0a99e3b.tar.gz (--> mtd-utils-d37fcc0.tar.gz)


Setup Preparation[edit]

In this example, we use
/home/user/mtd
as base directory. This example assumes you are in this directory and the above three source .tar.gz files are located here, too. To not pollute the host file system, we install build results in local sub-directory:
> mkdir install
should result in /home/user/mtd/install (replace this with your real path below).

This section describes how to compile the MTD utilities for the Linux development host.


zlib

    host$ tar xvf zlib-1.2.5.tar.gz
    host$ cd zlib-1.2.5/
    host$ ./configure --prefix=/home/user/mtd/install
    host$ make
    host$ make install
    host$ cd ..

Result should be zlib.a in /home/user/mtd/install/lib directory and zlib's headers in /home/user/mtd/install/include.


lzo

    host$ tar xvf lzo-2.06.tar.gz
    host$ cd lzo-2.06/
    host$ ./configure --build=i686-pc-linux --prefix=/home/user/mtd/install
    host$ make
    host$ make install
    host$ cd ..

Result should be liblzo2.a in /home/user/mtd/install/lib directory and lzo's headers in /home/user/mtd/install/include/lzo.


e2fsprogs

    host$ tar xvf e2fsprogs-1.42.tar.gz
    host$ cd e2fsprogs-1.42/
    host$ ./configure --build=i686-pc-linux --prefix=/home/user/mtd/install 
    host$ make
    host$ make install
    host$ cd lib/uuid/
    host$ make install
    host$ cd ../../../

Result should be libuuid.a in /home/user/mtd/install/lib directory and uuid's headers in /home/user/mtd/install/include/uuid.


mtd-utils

    host$ tar xvf mtd-utils-d37fcc0.tar.gz
    host$ cd mtd-utils-d37fcc0/

MTD-Utils don't have a configure script, so we have to edit Makefile again. Depending on the version of MTD Utils, make sure head of top level Makefile has:

    host$ vi Makefile
           PREFIX = /home/user/mtd/install
           ZLIBCPPFLAGS = -I$(PREFIX)/include
           LZOCPPFLAGS = -I$(PREFIX)/include
           ZLIBLDFLAGS = -L$(PREFIX)/lib
           LZOLDFLAGS = -L$(PREFIX)/lib
           LDFLAGS += $(ZLIBLDFLAGS) $(LZOLDFLAGS)
           CFLAGS ?= -O2 -g $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)

Save and close vi editor

Edit the common.mk file and comment out the PREFIX=/usr line

    host$ vi common.mk
           #PREFIX=/usr

Save and close vi editor

    host$ WITHOUT_XATTR=1 make
    host$ make install
    host$ cd ..

Directory /home/user/mtd/install/sbin/ should now contain compiled MTD utils you can use on Linux host.


E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article TI811x MTD Utilities here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article TI811x MTD Utilities here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article TI811x MTD Utilities here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article TI811x MTD Utilities here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article TI811x MTD Utilities here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article TI811x MTD Utilities here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article TI811x MTD Utilities here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article TI811x MTD Utilities here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article TI811x MTD Utilities here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity