Obtaining start/end address of an MTD partition
Hello all,
Is it possible to obtain an MTD partition's starting address through usage of the MTD ioctls? I've had a very quick look and from what I can tell, this doesn't seem to be possible.
To be clear, I'd like to obtain the addresses below (displayed by Linux when it detects the MTD partitions on boot).
Creating 6 MTD partitions on "physmap-flash.0":
0x00000000-0x00120000 : "RedBoot"
0x00120000-0x01000000 : "foo"
0x01000000-0x01400000 : "bar"
I can obviously use the MEMGETINFO ioctl on a particular MTD device to return info in struct mtd_info_user, but this doesn't give me all the information I need for that particular partition (ie start and end offsets in terms of 'physical' addresses).
Basically, I'm trying to cater for using another flash driver instead of the MTD sub-system on some custom hw in order to access the flash device. I'd like to be able to get the MTD partition start and end addresses so I know where to operate on this other device. A bit clunky, I know (if it were my decision MTD would be used).
RedBoot creates the FIS entries above and Linux parses this just fine at boot. If I were using MTD to access the flash device I could open /dev/mtd<x> or /dev/mtdblock<x> accordingly. However, there is a requirement to access the flash through another device (/dev/flash). For example, if I wanted to write to the area covered by /dev/mtd1, I need to be able to:
i) get the start address of /dev/mtd1
ii) open /dev/flash and seek to the offset provided by (i) above. iii) perform the operation(s).
...so I need the partition start addresses (and end too if possible). Can these offsets be obtained through the MTD user space ioctls?
Many thanks,
-- Matt
Quoted 6 lines · Matthew Lear
Hello all,
Is it possible to obtain an MTD partition's starting address through usage of the MTD ioctls? I've had a very quick look and from what I can tell, this doesn't seem to be possible.
Quoted 7 lines
To be clear, I'd like to obtain the addresses below (displayed by Linux when it detects the MTD partitions on boot).
Creating 6 MTD partitions on "physmap-flash.0":
0x00000000-0x00120000 : "RedBoot"
0x00120000-0x01000000 : "foo"
0x01000000-0x01400000 : "bar"
Did you try 'cat /proc/mtd' ?
Signature · 2 lines
Best Regards, Artem Bityutskiy (Артём Битюцкий)
Quoted 11 lines · Matthew Lear
Quoted 10 lines
Hello all,
Is it possible to obtain an MTD partition's starting address through usage
of the MTD ioctls? I've had a very quick look and from what I can tell, this doesn't seem to be possible.To be clear, I'd like to obtain the addresses below (displayed by Linux when it detects the MTD partitions on boot).
Quoted 6 lines
Quoted 4 lines
Creating 6 MTD partitions on "physmap-flash.0":
0x00000000-0x00120000 : "RedBoot"
0x00120000-0x01000000 : "foo"
0x01000000-0x01400000 : "bar"Did you try 'cat
/proc/mtd' ?
Yes, of course but the only way I could easily obtain the start address of a particular partition using /proc/mtd would be to increment the sizes of each previous partition. It's doable but just seems clunky...
Quoted 16 lines · Matthew Lear
Quoted 16 lines · Matthew Lear
Quoted 14 lines
Hello all,
Is it possible to obtain an MTD partition's starting address through usage
of the MTD ioctls? I've had a very quick look and from what I can tell, this doesn't seem to be possible.To be clear, I'd like to obtain the addresses below (displayed by Linux when it detects the MTD partitions on boot).
Creating 6 MTD partitions on "physmap-flash.0":
0x00000000-0x00120000 : "RedBoot"
0x00120000-0x01000000 : "foo"
0x01000000-0x01400000 : "bar"
Quoted 5 lines
Quoted 1 line
Did you try 'cat
/proc/mtd' ?Yes, of course but the only way I could easily obtain the start address of a particular partition using
/proc/mtdwould be to increment the sizes of each previous partition. It's doable but just seems clunky...
Actually, it's worse than that. This will only work if each partition is adjacent. If there is any gap (ie unpartitioned space on the device) between partitions, this will not work at all.
Surely, I'm not the first person to try to obtain this info from MTD?
Any help appreciated...
-- Matt
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 5 lines
Hi Matt,
Please try below:
zcat
/proc/config.gz|grepPHYSMAP_START
Thanks but /proc/config.gz doesn't exist on the embedded system that we're developing on. To be clear, I'm trying to access the start/end addresses from a program, not from a command prompt.
Cheers,
-- Matt