我的开发板是ARM的,uclinux 开发包是基于linux-2.4-40裁减的。
目的: 我想在我的板子上实现flash文件系统,即能够在我的flash上创建目录,创建文件,存储文件...等文件操作。
目前状况: 根据板子开发平台搭建的说明文档,
1。make config ; 配置板子的ip和子网掩码。 1。make linuxconfig ; 修改uclinux的配置 3。make linux ; 编译内核 生成kernel-*****.bin ,这是uclinux的内核。 4。 make rootfs; 创建root文件系统 5。make romfs; 生成romfs-***.bin.gz ,这是创建rom文件系统。
主机(Redhatlinux9.0)通过minicom和板子连接,板子上的bootloader提供download功能,将编译后最终生成的 romfs-***.bin.gz download到板子的rom中。然后从rom启动。 uclinux 启动成功,出现shell 提示符: #
/*这是启动后 ,/ 目录的 结构*/ # cd / # ls bin home mnt root usr dev lib opt sbin var etc linux.bin.gz proc tmp
/* /dev下出现了 mtd 和 mtdblock,说明MTD模块已经编译进内核,并检测到flash*/ # cd dev # ls blkmem fb kmem null pty scsi vc cdroms full mem port random tty vcc console ide mtd ptmx rd ttyAM0 zero cuaam0 ir mtdblock pts root urandom
/*mtd 下面出现两个文件,我 cat 0; 显示一堆乱码,不过我猜是我download 到板子上的romfs-***.bin.gz */ # cd mtd # ls 0 0ro
/*mtdblock下也出现一个文件*/
# cd ../mtdblock/ # ls 0 /*proc 文件的结构, 出现 mtd */ # cd /proc/ # ls 1 7 execdomains kcore mounts stat 2 72 fb kmsg mtd swaps 3 bus filesystems ksyms net sys 4 cmdline fs loadavg partitions tty 5 cpuinfo ide locks pci uptime 52 devices interrupts meminfo scsi version 54 dma iomem misc self 6 driver ioports modules slabinfo
/*目前内核中支持的文件系统,有jffs,说明jffs文件系统已经 编译进内核*/ # cat filesystems nodev rootfs nodev bdev nodev proc nodev sockfs nodev pipefs ext2 nodev ramfs minix umsdos msdos vfat iso9660 nodev devfs nodev nfs jffs romfs # cat mtd /*cat /proc/mtd 后显示了 板子的mtd 信息;总共2m,分两个区。*/ # cat mtd dev: size erasesize name mtd0: 00400000 00010000 "EM86XX mapped flash" region 0 @ 00000000 [00002000 * 8] region 1 @ 00010000 [00010000 * 63]
下面是启动过程minicom打印的信息。 /*说明已经 probe到 flash*/ Probing EM86XX Flash Memory EM86XX mapped flash: Found an alias at 0x400000 for the chip at 0x0EM86XX mapped flash: Found an alias at 0x800000 for the chip at 0x0 EM86XX mapped flash: Found an alias at 0xc00000 for the chip at 0x0 Amd/Fujitsu Extended Query Table v1.1 at 0x0040 number of CFI chips: 1 Using word write method cfi_cmdset_0002: Disabling fast programming due to code brokenness.
NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 2048 bind 2048) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. FAT: bogus logical sector size 31776 UMSDOS: msdos_read_super failed, mount aborted. FAT: bogus logical sector size 31776 FAT: bogus logical sector size 31776
/*jffs 的信息*/ JFFS: Trying to mount a non-mtd device.
VFS: Mounted root (romfs filesystem) readonly. Mounted devfs on /dev
我感觉既然 /dev下面出现了mtd 目录,我是否已经可以在mtd下创建文件了。 # cd /dev/mtd # # ls 0 0ro 我在mtd下生成aa 文件 # touch aa touch: aa: Permission denied /*Permission denied ??? 不允许?? 不知什么原因???*/
# cd bin/ # ls busybox date false kill mount ps sleep uname cat dd fgrep ln msh pwd sync usleep chgrp df grep ls mv rm tar vi chmod dmesg gunzip mkdir netstat rmdir touch zcat chown echo gzip mknod pidof sed true cp egrep hostname more ping sh umount 从其他目录copy ping 到 /dev/mtd下: # cp ping /dev/mtd/ping cp: unable to open `/dev/mtd/ping': Permission denied /*不能copy!!!! ????? */
哪位高人 做过相关方面,请帮帮忙,看看问题出在哪?想实现我的flash文件系统应该怎末解决!! 我对uclinux内核理解不是太深,/proc 文件系统,/dev 设备操作等理解不太清楚,也是刚刚看了些jffs, mtd , nandflash 的文档。大家有 这些方面的 文档 ,相关网址等等,也告诉俺!多谢!!