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