[BUG] mtdinfo -a: Tries to open NULL pointer for NOR with Eraseblock Regions
Brian Foster
brian.foster at maxim-ic.com
Mon Aug 8 04:10:42 EDT 2011
On Saturday 06 August 2011 02:09:04 Brian Norris wrote:
> On Thu, Aug 4, 2011 at 3:41 PM, Mike Frysinger <vapier at gentoo.org> wrote:
> > On Thu, Aug 4, 2011 at 10:46, Brian Norris wrote:
>[...]
> >> Anyway, since I don't have these types of flash readily
> >> available, I don't even use these options :) And apparently,
> >> one of the biggest contributors for mtd-utils, Mike Frysinger,
> >> doesn't use region_info either...
> >
> > i dont think any of the flashes (parallel nor, spi nor,
> > nand, etc...) included region_info. that's why the func
> > print_region_info() sets up a dummy region_info struct that
> > describes the entire flash before calling print_region_map().
>
> I don't know much about this, but what's the feature for
> if no one uses it?
I'm also uncertain why Flash manufacturers have
this “feature”, but some certainly do. Below's
the output of ‘mtd_debug info /dev/mtd0’ for
two different NOR-Flash chips (on different
reference systems). In both cases, ‘/dev/mtd0’
is the entire chip (an important point since
it looks like partitions of a chip always(?)
have zero regions?):
────────────────────────────────────────────────
# mtd_debug info /dev/mtd0 #(1) Flash from original bug report
mtd.type = MTD_NORFLASH
mtd.flags = MTD_CAP_NORFLASH
mtd.size = 33554432 (32M)
mtd.erasesize = 131072 (128K)
mtd.writesize = 1
mtd.oobsize = 0
regions = 1
region[0].offset = 0x00000000
region[0].erasesize = 131072 (128K)
region[0].numblocks = 256
region[0].regionindex = 0
# mtd_debug info /dev/mtd0 #(2) Different Flash on different system
mtd.type = MTD_NORFLASH
mtd.flags = MTD_CAP_NORFLASH
mtd.size = 4194304 (4M)
mtd.erasesize = 65536 (64K)
mtd.writesize = 1
mtd.oobsize = 0
regions = 3
region[0].offset = 0x00000000
region[0].erasesize = 8192 (8K)
region[0].numblocks = 8
region[0].regionindex = 0
region[1].offset = 0x00010000
region[1].erasesize = 65536 (64K)
region[1].numblocks = 62
region[1].regionindex = 1
region[2].offset = 0x003f0000
region[2].erasesize = 8192 (8K)
region[2].numblocks = 8
region[2].regionindex = 2
────────────────────────────────────────────────
Our Linux systems are not explicitly taking
advantage of multiple eraseblock regions.
I do not know whether or not other software
uses them. (And yes, case ‘(2)’ really is
only 4MiB — that chip is almost useless for
the Linux systems.... ;-\ That system also
has a 2nd NOR-Flash (32MiB), but I don't have
at-hand the ‘mtd_debug info’ for it....)
cheers!
-blf-
--
Brian FOSTER
Principal MTS, Software
Maxim Integrated Products (Microcontroller BU), formerly Innova Card
ZI Athélia IV - Le Forum, Bât. A
Quartier Roumagoua
13600 La Ciotat - France
Phone : +33 (0)4 42 98 15 35
Fax : +33 (0)4 42 08 33 19
Email : brian.foster at maxim-ic.com
Web : http://www.maxim-ic.com/
More information about the linux-mtd
mailing list