mtd_debug usage

Duke ezbonites at gmail.com
Wed Nov 22 09:23:45 EST 2006


On 11/22/06, Ricard Wanderlof <ricard.wanderlof at axis.com> wrote:
>
> On Tue, 21 Nov 2006, Duke wrote:
>
> >> I've seen usage where /dev/mtd2 is used instead of /dev/mtdblock2,
> >> what is the difference here? which should it be. It seems to me that
> >> /dev/mtd2 simply gives the node info (mtd_debug info )and
> >> /dev/mtdblock2 is really what you want to used. Do I have this
> >> correct?
>
> mtdblock devices are normally only used with the mount/umount commands.
> For erase /dev/mtdX is required - the mtdblock devices don't support the
> required ioctls. Actually, since a while back, it's not necessary to use
> /dev/mtdblockX devices for mount/umount either since they understand
> 'mtdX' directly as in  mount -t cramfs mtd1 /mnt/mountpoint .
>
> mtdblock devices do support an automatic erase-before-write functionality
> when writing. This used to be buggy, don't know the status of this. As far
> as I'm concerned, it's of little use anyway, because if the image you are
> writing is smaller than the partition, using this feature will leave the
> end of the partition unerased which is probably not what you want. Doing
> separate erase and write operations is thus preferable IMHO.
>
> > Creating 3 MTD partitions on "physmap-flash.0":
> > 0x00000000-0x00040000 : "boot"
> > 0x00040000-0x00200000 : "kernel"
> > 0x00200000-0x00800000 : "cramfs"
> >
> > When I ran mtd_debug I get the following from the above mapping:
> >
> > # mtd_debug info /dev/mtd2
> > mtd.size = 1835008 (1M)
> >
> > # mtd_debug info /dev/mtd1
> > mtd.size = 262144 (256K)
> >
> > # mtd_debug info /dev/mtd0
> > mtd.size = 262144 (256K)
> >
> > # mtd_debug info /dev/mtd3
> > mtd.size = 1835008 (1M)
>
> Looks like your minor numbers are screwed up for the /dev/mtd devices. 0
> and 1 seem to have the same size, as to 2 and 3. Normally mtd0 is the
> whole flash, with the first partition being in mtd1 (someone please
> correct me if I'm wrong here). mtd0/1 seems to refer to the first 256k
> boot partition, with mtd2/3 referring to the kernel partition with the
> size of 0x1c0000 = 1835008.
>
> What does  ls -l /dev/mtd*  (and ls -l /dev/mtdblock*) say?

It looks like this:

crw-r--r--    1 root     root      90,   0 Mar 22  2005 /dev/mtd0
crw-r--r--    1 root     root      90,   1 Mar 22  2005 /dev/mtd1
crw-r--r--    1 root     root      90,   2 Mar 22  2005 /dev/mtd2
crw-r--r--    1 root     root      90,   3 Mar 22  2005 /dev/mtd3
crw-r--r--    1 root     root      90,   4 Nov 22  2006 /dev/mtd4
brw-r--r--    1 root     root      31,   0 Mar 22  2005 /dev/mtdblock0
brw-r--r--    1 root     root      31,   1 Mar 22  2005 /dev/mtdblock1
brw-r--r--    1 root     root      31,   2 Mar 22  2005 /dev/mtdblock2
brw-r--r--    1 root     root      31,   3 Mar 22  2005 /dev/mtdblock3
brw-r--r--    1 root     root      31,   4 Nov 22  2006 /dev/mtdblock4

I've added the fourth block but that looks the same as the 0 and 1 blocks.


>
> > # mtd_debug erase /dev/mtdblock2 0 0x600000
> > MEMERASE: Inappropriate ioctl for device
>
> You must use /dev/mtd2 for erasure.
>
> > Clearly I'm missing something here. Could someone help me understand this?
>
> The problem seems to have something to do with the device mapping, your
> commands look ok at least to start with.
>
> /Ricard
> --
> Ricard Wolf Wanderlöf                           ricardw(at)axis.com
> Axis Communications AB, Lund, Sweden            www.axis.com
> Phone +46 46 272 2016                           Fax +46 46 13 61 30
>




More information about the linux-mtd mailing list