中国Linux公社论坛's Archiver

jackzheng2002 发表于 2005-4-5 08:57

ARMLinux-S3C2410-YAFFS 开发档案

有志于加入 ARMLinux-2410-yaffs开发的可一起在这个帖子下交流。。。
内容:
1 移植;
2 测试;
3 分析代码:MTD+YAFFS

有相关意见可以来这里提出,谢谢![color=red][/color]

appy 发表于 2005-4-5 10:01

我很有兴趣,你在2.4.18上做YAFFS做成功了吗?

kunasen 发表于 2005-4-5 11:06

yaffs文件 一篇关于在nand flash 上建立 yaffs文件系统的好文章
http://www.ebdev.com/EOS/YAFFS-FileSystem.pdf

jackzheng2002 发表于 2005-4-6 19:40

先看看我们的NAND FLASH,静下心来go through一下NAND的结构和实现。。。

可以去网上搜索下载,或者发我email。。。
准备本周任务好好研究这个文档,然后下周涉及MTD驱动。。。

jackzheng2002 发表于 2005-4-11 19:54

Nand Flash 驱动修改完成。。。
下一步:深入理解ECC原理,加入yaffs的ecc算法。。。
请那几个一同探讨的朋友发邮件继续讨论。。。

jackzheng2002 发表于 2005-4-11 20:26

另外,哪位有关于将yaffs编译进内核的资料,发我一份,谢谢!

冬天 发表于 2005-4-19 15:30

http://www.ebdev.com/EOS/YAFFS-FileSystem.pdf
我按上面介绍的方法将yaffs编译到了内核里面。
分区结构是: 0x00000000--0x00020000 "vivi"
                    0x00020000--0x00030000 "param"
                    0x00030000--0x001f0000  "kernel"
                    0x00200000--0x01600000 "root"
                    0x01600000--0x02000000 "user"
我感觉我这个分区分的好像不对。“user”应该是0x01800000---0x02000000,但是我就将上面的分区加到了内核里面。
然后我又将 yaffs模块加到了内核里面。但是系统就启动不了了。说找不到文件系统
我又应用nfs将系统起来。然后用 imagewrite 写文
件到各个分区。但是一写就出错。对了。在其中的一个步骤我还用了这个命令
/bin/mkyaffs /dev/mtdblock/0  。我也不知道是管什么的。现在我的系统启动不了了。只能用nfs启动。而且我 imagewrite /dev/mtd/0 vivi:0  iamgewrite /dev/mtd/0 kernel:192k imagewrite /dev/mtd/0 2m
这些操作都报错root@fa /]# imagewrite /dev/mtd/0 -part 0 192k 2m
meminfo size = 131072
doing partition
size = 0
size = 196608
size = 2097152
check bad block
part = 0 end = 196608
20000: is bad
24000: is bad
28000: is bad
2C000: is bad
part = 1 end = 2097152
30000: is bad
34000: is bad
38000: is bad
3C000: is bad
40000: is bad

现在我也不知道是怎么造成这个的。急死我了。请大侠出手帮忙!!!!

冬天 发表于 2005-4-19 16:20

斑竹能否详细的说一下 mkyaffs 和 mkyaffsimage 这两个怎么用。

冬天 发表于 2005-4-19 16:35

还有在mtd部分我们不是已经自己加了分区了吗。就像我上面那样分了5个区。是不是头两个可以合为一个分区。我们还用不用自己用imagewrite 来重新分区,分完区如何将某个区指定为yaffs分区。反正这个地方挺乱的。请斑竹详细说明。多谢了。

jackzheng2002 发表于 2005-4-23 19:29

[quote:8393d629b8="冬天"]http://www.ebdev.com/EOS/YAFFS-FileSystem.pdf
我按上面介绍的方法将yaffs编译到了内核里面。
分区结构是: 0x00000000--0x00020000 "vivi"
                    0x00020000--0x00030000 "param"
                    0x00030000--0x001f0000  "kernel"
                    0x00200000--0x01600000 "root"
                    0x01600000--0x02000000 "user"
我感觉我这个分区分的好像不对。“user”应该是0x01800000---0x02000000,但是我就将上面的分区加到了内核里面。
然后我又将 yaffs模块加到了内核里面。但是系统就启动不了了。说找不到文件系统
我又应用nfs将系统起来。然后用 imagewrite 写文
件到各个分区。但是一写就出错。对了。在其中的一个步骤我还用了这个命令
/bin/mkyaffs /dev/mtdblock/0  。我也不知道是管什么的。现在我的系统启动不了了。只能用nfs启动。而且我 imagewrite /dev/mtd/0 vivi:0  iamgewrite /dev/mtd/0 kernel:192k imagewrite /dev/mtd/0 2m
这些操作都报错root@fa /]# imagewrite /dev/mtd/0 -part 0 192k 2m
meminfo size = 131072
doing partition
size = 0
size = 196608
size = 2097152
check bad block
part = 0 end = 196608
20000: is bad
24000: is bad
28000: is bad
2C000: is bad
part = 1 end = 2097152
30000: is bad
34000: is bad
38000: is bad
3C000: is bad
40000: is bad

现在我也不知道是怎么造成这个的。急死我了。请大侠出手帮忙!!!![/quote]


分区可以自己在数据结构中加。。。跟vivi得分区设成一样。

jackzheng2002 发表于 2005-4-23 19:31

[quote:2cddd38035="冬天"]还有在mtd部分我们不是已经自己加了分区了吗。就像我上面那样分了5个区。是不是头两个可以合为一个分区。我们还用不用自己用imagewrite 来重新分区,分完区如何将某个区指定为yaffs分区。反正这个地方挺乱的。请斑竹详细说明。多谢了。[/quote]

在MOUNT时指明挂载类型!

冬天 发表于 2005-4-25 14:21

在没有换支持yaffs 的内核以前,我在我的文件系统的 /etc/init.d/rcS 中加了miniGUI的mginit服务器程序的自动运行,所以当系统每次开机上电都能自动运行mginit,但是现在我换了支持yaffs的内核以后,mginit这个程序就运行不起来了提示:
Error in step 7:Can not attach shared resource!
InitGUI failure when using /etc/MiniGUI.cfg as cfg file.
因为这些文件在之前是好用的而且我的只读文件系统还是在 2M 以后呀。为什么就运行不起来了呢?是不是跟 mkyaffs 和 mkyaffsimage 有什么关系,请你帮帮我好吗。。
还有就是我现在通过ftp 下载到板上的 内核zImage 。然后 imagewrite /dev/mtd/0 zImage:192k 提示我错误信息如下:meminfo size = 196608
              inavlid partition table info
              first write partition!!!
真的是麻烦你了。多谢!!!

redfoxlinux 发表于 2005-4-28 08:35

斑竹 你好  我现在 也在研究这个 yaffs 你们 做过的 有没有详细的 流程 或者  yaffs 详细的说明情况 比如说 yaffs 整体 逻辑结构 等 资料 我这 有一个关于他的资料 我以附件形势 提供给大家  不是那篇 howto 希望大家 多多指教 多多帮助  谢谢 !


我的mail : redfoxlinux@163.com

冬天 发表于 2005-4-29 08:34

附件怎么下载不了呢???急!!!!!!!!!!!!!

xsnice 发表于 2005-5-4 21:41

2410升级到内核2.6.11的yaffs只要做很小的改动就可以使用了.

jackzheng2002 发表于 2005-5-5 11:04

[quote:3a1efd1b06="xsnice"]2410升级到内核2.6.11的yaffs只要做很小的改动就可以使用了.[/quote]

具体点呢,你是怎么改的?
谢谢!

redfoxlinux 发表于 2005-5-8 10:53

我已经 把 附件 发到你的邮箱里面了  大家 有没有 详细的 说明资料 或者 流程 给大家共享一下  谢谢 各位

honesthgx 发表于 2005-5-9 08:33

我也需要,这方面资料,,
给我一份吧,
或者,用附件贴到这里,我也下一份

我用的实验室以前买的板子,有一个做好YAFFS的根文件系统(不是卖板子提供的)。
不过,实验室的人告诉我,下到板子上,屏幕校正通不过(板子用的触摸屏,QTOPIA+LINUX)。我又不知道,改哪儿?怎么改??

有兄弟指点一下吗,,详细一点,,发到我邮箱最好啦,,谢谢啦

现在,用的根文件系统是CRAMFS的,不能写,很麻烦。因为,我嵌入了数据库,所以需要可写的根文件系统。

谢谢大家帮帮小弟,,毕设时间不多啦!!!急啊

如果你们要看看那个YAFFS的根文件系统,我可以传给你们,有20多M,所以放不上来吧。可以,QQ联系(注明理由)
-----------connect-----------------------
QQ: 31911030
E-MAIL:honesthgx@163.com

jackzheng2002 发表于 2005-5-10 08:51

[quote:6af7bb87b0="redfoxlinux"]我已经 把 附件 发到你的邮箱里面了  大家 有没有 详细的 说明资料 或者 流程 给大家共享一下  谢谢 各位[/quote]
没有收到阿,麻烦再发一次看看。。。。
jeanwelly@126.com

我也在弄!
我的cramfs可以了。

honesthgx 发表于 2005-5-11 08:53

我也要

jackzheng2002 发表于 2005-6-3 12:24

下一步需要完成的工作:
video、usb等

DaviesCai 发表于 2005-6-3 16:15

我也要一份,谢谢
daviescai@21cn.com

honesthgx 发表于 2005-6-4 08:36

why no bady give me software which i want

炭灰 发表于 2005-7-3 14:54

请问在目前2.4.18下的yaffs该怎么做呀?
好像目前目mtd官方网站已经下不了支持2.4.18的mtd了。
我试了很多次,头都搞大了。
能不能给点指导,谢谢。

jackzheng2002 发表于 2005-7-3 14:59

2.4.18的网上真的很多。主要是MTD的Nand的驱动的改动。。。。
其他的关于yaffs的,作为module加载或者作为rootfs都可以。。。

buaazy 发表于 2005-7-5 21:10

Linux version 2.6.11.8 (root@linux) (gcc version 3.4.1) #5 Tue Jul 5 20:46:06 CS
T 2005
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: SMDK2410
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410 (id 0x32410000)
BUG: mapping for 0x19000000 at 0xd0000000 overlaps vmalloc space
S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
S3C2410 Clock control, (c) 2004 Simtec Electronics
Built 1 zonelists
Kernel command line: console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.112:/friend
ly-arm/root ip=192.168.0.69:192.168.0.112:192.168.0.112:255.255.255.0:matrix4.ar
m9.net:eth0:off
irq: clearing subpending status 00000007
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00000000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 62720KB available (1636K code, 347K data, 76K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2410: Initialising architecture
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: devfs_debug: 0x0
devfs: boot_options: 0x1
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev D at 0xd0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
NFTL driver: nftlcore.c $Revision: 1.97 $, nftlmount.c $Revision: 1.40 $
S3C2410 NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand: mapped registers at c4880000
s3c2410-nand: timing: Tacls 10ns, Twrph0 40ns, Twrph1 10ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Bad eraseblock 1432 at 0x01660000
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "loader"
0x00020000-0x00030000 : "param"
0x00030000-0x00230000 : "kernel"
0x00230000-0x02130000 : "root"
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
NET: Registered protocol family 1
IP-Config: Complete:
      device=eth0, addr=192.168.0.69, mask=255.255.255.0, gw=192.168.0.112,
     host=matrix4, domain=, nis-domain=arm9.net,
     bootserver=192.168.0.112, rootserver=192.168.0.112, rootpath=
Looking up port of RPC 100003/2 on 192.168.0.112
Looking up port of RPC 100005/1 on 192.168.0.112
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing init memory: 76K
init started:  BusyBox v0.60.5 (2003.09.05-09:25+0000) multi-call binary
[01/Jan/1970:00:00:06 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:06 +0000] boa: server built Feb 28 2004 at 21:47:23.
[01/Jan/1970:00:00:06 +0000] boa: starting server pid=145, port 80

Please press Enter to activate this console.


BusyBox v0.60.5 (2003.09.05-09:25+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

[root@fa /]# ls
NewFolder        fa-yaffs-v5.tgz  root             vivi-yaffs-v5
aaa              home             sbin             www
bin              lib              tmp              zImage-yaffs-v5
dev              mnt              usr
etc              proc             var
[root@fa /]# mount -t yaffs /dev/mtdblock/3 /mnt
mount: Mounting /dev/mtdblock/3 on /mnt failed: Permission denied
[root@fa /]# mount -t yaffs /dev/mtdblock/2 /mnt
yaffs: dev is 32505858 name is "(unavailable)"
Reading data from NAND FLASH without ECC is not recommended
[root@fa /]# ls
NewFolder        fa-yaffs-v5.tgz  root             vivi-yaffs-v5
aaa              home             sbin             www
bin              lib              tmp              zImage-yaffs-v5
dev              mnt              usr
etc              proc             var
[root@fa /]# cd mnt
[root@fa /mnt]# ls
bin         lost+found
[root@fa /mnt]# mkdir aaaa
Writing data without ECC to NAND-FLASH is not recommended
Reading data from NAND FLASH without ECC is not recommended
mkdir: Cannot create directory `aaaa': Cannot allocate memory
[root@fa /mnt]# ls
bin         lost+found
[root@fa /mnt]#
我的yaffs一直不对,不知道是什么原因,上面是用nfs启动的,但是不知道为什么不能创建目录

jackzheng2002 发表于 2005-7-6 12:56

[root@fa /]# mount -t yaffs /dev/mtdblock/3 /mnt
mount: Mounting /dev/mtdblock/3 on /mnt failed: Permission denied

把目录的权限改一下看看。。。

我的把yaffs作为rootfs在上面的帖子中有,可以去看一下:)

buaazy 发表于 2005-7-6 23:34

终于可以了
Linux version 2.6.11.8 (root@linux) (gcc version 3.4.1) #13 Wed Jul 6 23:04:16 C
ST 2005
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: SMDK2410
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410 (id 0x32410000)
BUG: mapping for 0x19000000 at 0xd0000000 overlaps vmalloc space
S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
S3C2410 Clock control, (c) 2004 Simtec Electronics
Built 1 zonelists
Kernel command line: noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttySAC0

irq: clearing pending ext status 00000200
irq: clearing subpending status 00000002
PID hash table entries: 512 (order: 9, 8192 bytes)
timer tcon=00000000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 62720KB available (1636K code, 347K data, 76K init)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2410: Initialising architecture
NetWinder Floating Point Emulator V0.97 (double precision)
devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
devfs: devfs_debug: 0x0
devfs: boot_options: 0x1
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev D at 0xd0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
NFTL driver: nftlcore.c $Revision: 1.97 $, nftlmount.c $Revision: 1.40 $
S3C2410 NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand: mapped registers at c4880000
s3c2410-nand: timing: Tacls 10ns, Twrph0 40ns, Twrph1 10ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
Scanning device for bad blocks
Bad eraseblock 487 at 0x0079c000
Bad eraseblock 1432 at 0x01660000
Bad eraseblock 2804 at 0x02bd0000
Bad eraseblock 3171 at 0x0318c000
Bad eraseblock 3172 at 0x03190000
Bad eraseblock 3175 at 0x0319c000
Bad eraseblock 3176 at 0x031a0000
Bad eraseblock 3211 at 0x0322c000
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00020000 : "loader"
0x00020000-0x00030000 : "param"
0x00030000-0x00230000 : "kernel"
0x00230000-0x03230000 : "root"
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
NET: Registered protocol family 1
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
yaffs: dev is 32505859 name is "(unavailable)"
VFS: Mounted root (yaffs filesystem).
Mounted devfs on /dev
Freeing init memory: 76K
init started:  BusyBox v0.60.5 (2003.09.05-09:25+0000) multi-call binary
[01/Jan/1970:00:00:03 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:03 +0000] boa: server built Feb 28 2004 at 21:47:23.
[01/Jan/1970:00:00:03 +0000] boa: starting server pid=144, port 80
open device leds: No such file or directory

Please press Enter to activate this console.


BusyBox v0.60.5 (2003.09.05-09:25+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

[root@fa /]#
我终于找到了问题,是在arch/arm/mach_s3c2410/devs.c中定义分区表时不能用
MTD_WRITEABLE
另外将driver/mtd/nand/s3c2410.c 中的NAND_ECC_NONE改NANE_ECC_SOFT

htszjz 发表于 2005-7-18 09:30

请给我一份

多谢!mkyaffs,mkyaffsimage 这两个工具一直编译
不过,(按照文档提示修改),请能给点提示,多谢

buaazy 发表于 2005-7-20 00:13

不要用Makefile编译,直接用命令行
arm-linux-gcc mkyaffs.c -o mkyaffs
arm-linux-gcc mkyaffsimage -o mkyaffssimage
我就是这样编过的

页: [1] 2

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.