Copy files to jffs2 partition have problem

Pham Huy Vu vuph at mail.cable.net.tw
Wed Feb 4 12:15:52 EST 2004


Hi all,
I have used uClinux on my Samsung ARM7 board,
My flash (MX 29LV320TTC- 4MB) have
    + configurations:
    static const struct awtel_info awtel_flash_board_desc[PHYSMAP_NUMBER] =
            {   // DATA Flash configuration
                "MX FLASH",          // name
                0xE0000000,          // window_addr
                0x400000,              // window_size
                2,                          // buswidth 16 bits mode
                5,                          // num_partitions
        },
    +5 partitons:
                {
                        name: "Whole partition",
                        size: 0x400000,
                        offset: 0x000000,
                },
                {
                        name: "Bios partition",
                        size: 0x010000,
                        offset: 0x000000,
                },
                {
                        name: "Kernel partition",
                        size: 0x1e0000,
                        offset: 0x010000,
                },
                {
                        name: "Data partition", // jffs2 fs on this
partition
                        size: 0x1e0000,
                        offset: 0x200000,
                },
                {
                        name: "Configuration partition",
                        size: 0x010000,
                        offset: 0x3e0000,
                },

In amd_flash.c:
static const struct amd_flash_info table[] = {
....
    //This my flash setup
        mfr_id: MANUFACTURER_MX,
        dev_id: MX29LV320T,
        name: "MXIC MX29LV320T",
        size: 0x00400000,
        numeraseregions: 3,
        regions: {
            { offset: 0x000000, erasesize: 0x10000, numblocks: 48 },
            { offset: 0x300000, erasesize: 0x10000, numblocks: 15 },
            { offset: 0x3f0000, erasesize: 0x02000, numblocks:  8 },
        }
....
}

BUT I always go problem when copy files:
---------------------
Booting messages:
......
awtel_flash device: 400000 at e0000000
awtel_flash: ioremap is e0000000
buswidth is 2
MX FLASH: Probing for AMD compatible flash...
buswidth is 2
amd_flash.c:362:buswidth is 2
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0xf0
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xf000f0
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0x90
amd_flash.c:198 flash WRITE addr=0xaaa, val=0x900090
awtel_read16:0xe0000000
amd_flash.c:184 flash READ addr=0x0, val=0xc2
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0xf0
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xf000f0
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0x90
amd_flash.c:198 flash WRITE addr=0xaaa, val=0x900090
awtel_read16:0xe0000002
amd_flash.c:184 flash READ addr=0x2, val=0x22a7
amd_flash.c:385: buswidth:2, mfr_id=0xc2, dev_id=0x22a7
MX FLASH: Found 1 x 4MiB MXIC MX29LV320T at 0x0
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0xf0
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xf0
phymap 0 amd_flash_probe: mymtd is 1fcf3a0
Creating 5 MTD partitions on "MX FLASH":
0x00000000-0x00400000 : "Whole partition"
mtd: Giving out device 0 to Whole partition
0x00000000-0x00010000 : "Bios partition"
mtd: Giving out device 1 to Bios partition
0x00010000-0x001f0000 : "Kernel partition"
mtd: Giving out device 2 to Kernel partition
0x00200000-0x003e0000 : "Voip partition"
mtd: Giving out device 3 to Voip partition
0x003e0000-0x003f0000 : "Configuration partition"
mtd: Giving out device 4 to Configuration partition
init_mtdchar: allocated major number 90.
init_mtdblock: allocated major number 131.
.....


#mkfs.jffs2 -l -r /tmp/data/ -o data.jffs2
#dd if=data.jffs2 of=/dev/mtd3 bs=64
#mount -t jffs2 /dev/mtdblock3 /var/flash
# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    3.1M      3.1M         0 100% /
/dev/rom0                 3.1M      3.1M         0 100% /
/dev/mtdblock3            1.9M      1.2M    664.0k  65% /var/flash

#ls  -la /tmp
-rwxrwxrwx    1 0        root       292756 abc

#cp /tmp/abc /var/flash/
cp: write: Input/output error

#ls -la /var/flash
-rwxr-xr-x    1 0        root        42749 abc
drwxr-xr-x    1 0        root           32 usr

# dmesg
......
awtel_write16:0xe0000aaa, 0xaa
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xaa00aa
awtel_write16:0xe0000554, 0x55
amd_flash.c:198 flash WRITE addr=0x554, val=0x550055
awtel_write16:0xe0000aaa, 0xa0
amd_flash.c:198 flash WRITE addr=0xaaa, val=0xa0
awtel_write16:0xe03a59c0, 0x10
amd_flash.c:198 flash WRITE addr=0x3a59c0, val=0x14000010
awtel_read16:0xe03a59c0
amd_flash.c:184 flash READ addr=0x3a59c0, val=0x10
awtel_read16:0xe03a59c0
amd_flash.c:184 flash READ addr=0x3a59c0, val=0x10
awtel_read16:0xe03a59c0
amd_flash.c:184 flash READ addr=0x3a59c0, val=0x10
MX FLASH: write to 0x3a59c0 failed. datum = 14000010, verify = 10
Write of 71 bytes at 0x001a597c failed. returned 0, retlen 68
jffs2_add_physical_node_ref(): Node at 0x1a597c, size 0x48
jffs2_mark_node_obsolete called with already obsolete node at 0x001a597c
jffs2_complete_reservation()
thread_should_wake(): nr_free_blocks 14, nr_erasing_blocks 0, dirty_size
0x184
jffs2_commit_write(): Not all bytes written. Marking page !uptodate
jffs2_commit_write() returning -5
.........

------------------------------
Please help me if someone overcomes these problem or give me some hints.

+ Why i got errors when i copy files to jffs2 partition even my free space
enough for Garbage collection ( 5*64k = 320k < 664.0k)?
+ "MX FLASH: write to 0x3a59c0 failed. datum = 14000010, verify = 10
    Write of 71 bytes at 0x001a597c failed. returned 0, retlen 68"
    =>Why it write 71 bytes?
+ Did I set up something wrong with my flash?
Thanks a lot.


----mark pham----





More information about the linux-mtd mailing list