Linux中,关于如何在flash上实现JFFS得问题

土豆 2003-12-31 09:21:23

在嵌入式的环境下,我需要在flash实现实现一个可读写的文件系统,现在基本是锁定在JFFS上了。我的flash是Intel的K3/K8系列,NOR类型的。

看了相关资料,有一大堆,其中还牵涉到MTD,我是在不知道该如何下手。应该说Linux本身已经为我们做了很多东西,应该说JFFS本身是不需要我做什么的了,需要做的地方就是修改MTD中和我自己的flash相关的部分。我想知道我究竟需要修改哪些东西,按照什么样的步骤我才能使我的Linux在flash上跑其来?

恳请不吝赐教!!!!!!!!
...全文
53 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
qsyang 2004-01-07
  • 打赏
  • 举报
回复
FireAngel(风雪漫天):
传给kernel的是一个全局结构,kernel在解压时会读取这些信息,从内核源码中可以找到,应该是在head.S里。我用的是powerpc,有个头文件\arc\ppc\ppcboot.h中有定义这个结构。你用arm,也应有相关文件。
最后祝贺你解决问题!
土豆 2004-01-07
  • 打赏
  • 举报
回复
虽然还是懵懵懂懂的,不过问题已基本解决,感谢大家的帮助,其实问题很简单,主要还是因为我是个生手。
土豆 2004-01-06
  • 打赏
  • 举报
回复
我也才接触不久,请多指点。
我的目的就是要让我的flash的根文件系统为jffs2,而我已经把jffs2类型的rootdisk烧到flash上了,MTD的驱动程序也编到内核中了,就是不知道该改哪里,通知内核我的根系统是jffs2了
qsyang 2004-01-06
  • 打赏
  • 举报
回复
FireAngel(风雪漫天):
你觉得你的理解有错误,
"Kernel panic: VFS: Unable to mount root fs on 80:00" 错误并不是说你的/文件系统要改为jffs2。这个错误很常见,我也遇到过,但大部分都是由于内核配置上不正确导致的。
我的意思是说并不是只配置[file system]就全部ok了。还有其他几个相关的东西要注意,如MTD,NFS等等。另外一个就是你的bootloader传给kernel的参数是否正确?如果不正确也是会有这样的错误发生的。
土豆 2004-01-06
  • 打赏
  • 举报
回复
我将rootdisk烧成了JFF2的格式,并且在将JFFS2和flash的驱动程序做进了kernel(我现在用的flash还不是intel,是micron的)。我就是不知道改如何将根系统改成JFF2。然后系统运行到mount根系统的时候就出错了。下面是启动过程:

Copying kernel from Flash to RAM ...
Booting kernel ...

Linux version 2.4.18-rmk4-mx1bsp, BSP Version 0.3.6 - (root@localhost.localdomai
n) (gcc version 2.95.3 20010315 (release)) #18 Fri Dec 12 06:59:31 CST 2003
Processor: ARM/CIRRUS Arm920Tsid(wb) revision 0
Architecture: Motorola MX1ADS
Get command line from bootloader
On node 0 totalpages: 12288
zone(0): 12288 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mdsk mem=48M
Console: colour dummy device 80x30
Calibrating delay loop... 75.16 BogoMIPS
Memory: 48MB = 48MB total
Memory: 46604KB available (1371K code, 284K data, 76K init)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Sangoma WANPIPE Router v1.1 (c) 1995-2000 Sangoma Technologies Inc.
Initializing RT netlink socket
Starting kswapd
devfs: v1.10 (20020120) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
Console: switching to colour frame buffer device 30x40
register LCD power management successfully.
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with no serial options enabled
We have setup both UART1 and UART2 .
Software Watchdog Timer: 0.05, timer margin: 60 sec
block: 128 slots per queue, batch=32
RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
arcnet: v3.93 BETA 2000/04/29 - by Avery Pennarun et al.
arcnet: Available protocols:
loop: loaded (max 8 devices)
MTD driver for Micron SyncFlash.
syncflash: Probing for SyncFlash on MX1ADS...
SyncFlash probe: manufacturer 0x002c002c, device_id 0x00d300d3
syncflash: Found a SyncFlash device.
Creating 3 MTD partitions on "syncflash":
0x00000000-0x00100000 : "bootloader"
0x00100000-0x00200000 : "kernel"
0x00200000-0x01000000 : "JFFS2"
Init DOC
No DOC is in System
SDRAM disk initialized.
FLASH disk initialized.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
IrCOMM protocol (Dag Brattli)
Kernel panic: VFS: Unable to mount root fs on 80:00 <---------出错了,无法加载根文
件系统

高手来指点下
土豆 2004-01-06
  • 打赏
  • 举报
回复
我要把根系统改成JFFS2,而不是仅仅让Linux能支持JFF2,[file system]中只有让系统能够支持JFF2的选项,而没有更改“/”的文件系统类型的选项。
土豆 2004-01-06
  • 打赏
  • 举报
回复
qsyang(二拳映月) 兄,我不知道bootloader如何传递参数给kernel,请指点
土豆 2004-01-05
  • 打赏
  • 举报
回复
谢谢大家。
我想请教一下qsyang,/driver/mtd/maps目录下有很多文件,我怎么能确定是改physmap.c呢?也就是说,我对的那些文件分别是干吗的不甚了了。
qsyang 2004-01-05
  • 打赏
  • 举报
回复
FireAngel(风雪漫天) :
/driver/mtd/maps下只需要修改physmap.c就可以了,其他的不用管

make menuconfig中配置文件系统[file system]中有对jffs2的选项!!

土豆 2004-01-05
  • 打赏
  • 举报
回复
我现在Flash本身的驱动已经搞定,而我原来的系统用的是cramfs作为根文件系统,现在我想改成JFF2,应该怎样改配置文件?我在make menuconfig中没找到。
qsyang 2004-01-03
  • 打赏
  • 举报
回复
让我来告诉你:
我用的也是mot的片子,不过是powepc,文件系统是jffs2。
生成文件系统,首先是修改分区文件/kernel/drivers/maps/physmap.c,在里面添加分区,是一个结构,一般至少为3个,以我的板子为例:mtd0为bootloader,mtd1放kernel,mtd2放jffs2。分区大小自己设定。
然后配置MTD,通过make menuconfig就可以了,选中该选的项,你用的是intel,选择intel/sharp组;Amd和富士通是另外一个组的。还有一些其它项,比如flash起始地址、大小、总线宽度等等。这些依你的板子而定。
应该说配置fs还是很简单的,希望对你有帮助!
土豆 2004-01-02
  • 打赏
  • 举报
回复
如果驱动的问题弄好后,我如何编译修改Linux的Makefile,在编译的时候能够编译我的源文件?

另外,我如何修改配置,把Linux的根文件系统改成JFFS,是改源程序还是改配置?如何修改Linux的编译选项,让它在找flash驱动程序的时候来找我的驱动,而不是其他的?

我在make menuconfig中看了很久,也不知道该改哪个地方

敬请指点
younikes 2003-12-31
  • 打赏
  • 举报
回复
还没收到你的信笺啊~~~收到后我好好看看~~
土豆 2003-12-31
  • 打赏
  • 举报
回复
呵呵,不管怎么说,谢谢你了
土豆 2003-12-31
  • 打赏
  • 举报
回复
我把.config发给你了,邮件打开前先查下毒,我怕万一把病毒给你带来了。
younikes 2003-12-31
  • 打赏
  • 举报
回复
这样啊。那你还是多问问你们的硬件开发人员吧。这个涉及到很多硬件方面的东西~包括各种参数。这个应该会同他们一起解决。~~

敝人水平有限,估计难得帮上什么忙了~~~~~
土豆 2003-12-31
  • 打赏
  • 举报
回复
.config发给你就是了,我装的是redhat9,然后用摩托的BSP打了下补丁,map下面的东西就是redhat自己带的。
土豆 2003-12-31
  • 打赏
  • 举报
回复
不是,我们的板子是自己做的,芯片是moto的DragenBall DXL,flash是用的intel的k3,我就知道这些了,其他就不知道什么了
younikes 2003-12-31
  • 打赏
  • 举报
回复
如果可能把你那里的maps目录下的程序打包后发给我。记住去掉.o文件。否则太大。还有把你那里的配置文件.config发给我。
younikes 2003-12-31
  • 打赏
  • 举报
回复
你们应该是买的人家的开发板,对吗?如果是这样的话,可以向厂家咨询应该配置什么样的map。
如果厂家告诉了。再通过maps下的Makefile找到相应的map文件。如果开发板是自己研发的,那只好问开发这个板子的开发人员了~~

我估计应该是小弟,因为我才毕业半年了~~嘿嘿~~~

如果可以的话,把你的相关详细资料发给我,我帮你看看。我的信箱是koptity@sina.com
加载更多回复(6)

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧