[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[microblaze-uclinux] Mount JFFS2 returns "No such device" on existing device.
G'day All
This is a question that has been going around for awhile without any
solution, and i think its about time it was solved and posted onto the web.
The problem is related to mounting partitions in Petalinux, in this
particular example we are running petalinux off a Spartan 3A DSP 1800a
development board using bitstream configuration from BPI flash. The
target partition to mount is to be formated to JFFS2 to provide a
persistant storage for applications, config etc
The BPI flash, is a 128Mbit = 16MByte NOR parallel flash device from
intel, and goes by the model number JS28F128J3D.
As shown below, at the current configuration stage, BPI has been
partitioned, bitstream loaded onto mtd0, uboot loaded and configured in
mtd1-3, and linux kernel sitting in mtd4. The system is configured and
automatically boots straight into petalinux on power on. the target
partition is approx 10MBytes (slight larger) located on mtd5 and is to
be setup up with a JFFS2 file system
# cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00020000 "fpga"
mtd1: 00040000 00020000 "boot"
mtd2: 00020000 00020000 "bootenv"
mtd3: 00020000 00020000 "config"
mtd4: 00400000 00020000 "image"
mtd5: 00a80000 00020000 "home" /* JFFS2 file system here */
mtd6: 0015d000 00001000 "ROMfs"
Also shown below the output of the "cat /proc/partitions" - i don't
think this shows much useful information.
# cat /proc/partitions
major minor #blocks name
31 0 1024 mtdblock0
31 1 256 mtdblock1
31 2 128 mtdblock2
31 3 128 mtdblock3
31 4 4096 mtdblock4
31 5 10752 mtdblock5
31 6 1396 mtdblock6
#
auto-config has been used and the uboot recognises the partitions
passing theses into the kernel on boot.
the JFFS2 image was build on a pc using the following command:
"mkfs.jffs2 -r ~/workspace/flashData/jffs2_image/ -o home.jffs2 -e 128
-b --pad=10485760"
where,
"-r ~/workspace/flashData/jffs2_image/" was the source directory for the
image containing a text file for testing purposes
"-o home.jffs2" is the output image file
"-e 128" was erase block size - set to 128 following the JS28F128J3D BPI
datasheet specifications
"-b" for big endian format - same as the microblaze processor
"--pad=10485760" was to pad the image file up to 10Mbytes, to create a
10Mbyte partition
I've hosted this image file for your inspection:
http://allsey.homeip.net/uploaded%20data/home.jffs2
I have written this image to flash in a couple of ways
1. From uboot using
tftp $(clobstart) home.jffs2
erase $(homestart) +$(homesize)
cp.b $(clobstart) $(homestart) 0x00A00000
- where homesize and homestart are variables i calculated and stored
using the setenv cmd and 0x00A00000 is 10MBytes in bytes in hex.
2. In linux, using wget to download the home.jffs2 to /var directory
(linked to RW RAMfs)
erased partition using "eraseall /dev/mtd5"
then attempted to use flashcp to find this is not built into the
petalinux mtd-utils - is there any reason to why this is the case?
from here i used "dd if=/var/home.jffs2 of=/dev/mtdblock5" instead -
this seems to works and returns to stdout
20480+0 records in
20480+0 records out
Either way the main problem is when i write the command: "mount -t jffs2
/dev/mtd5 /usr" it returns the error:
mount: Mounting /dev/mtd5 on /usr failed: No such device
Now this error just doesn't make sense to me, i mean how is that
writting the image and erasing seems to work fine, but come time to
mount - it suddenly doesn't exist anymore...
the output from this next command proves that the device exists and that
it can be accessed from the mtd-utils app eraseall - note device mtd8
actually doesn't exist and is used for comparison.
# eraseall /dev/mtd8
eraseall: /dev/mtd8: No such device /* okay fair enough this device
doesn't exist */
# eraseall /dev/mtd5
Erasing 128 Kibyte @ a0000 -- 5 % complete. /* clearly the device exists */
Any feedback will be greatly appreciated - for further output please
also reply and i will post back - hopefully we can get this problem
solved once & for all.
Cheers, Michael Allwright
Mechatronics Undergrad Student
Swinburne University - Melbourne, Australia.
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/