기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요
아래 로그에서 처럼 userdata 영역에 yaffs2 파일 시스템을 올려 데이타 저장용으로 사용하려고 합니다.
여기 게시판에 비슷한 고민을 했던 분이 있던데 해당 글을 읽고 했는데도 잘 안되네요. 도와 주세요 ~
[ 1.560000] 0x000000000000-0x000000400000 : "uboot"
[ 1.560000] 0x000000400000-0x000000e00000 : "reserved"
[ 1.570000] 0x000000e00000-0x000001200000 : "kernel"
[ 1.580000] 0x000001200000-0x000007600000 : "rootfs"
[ 1.580000] 0x000007600000-0x00000da00000: "userdata"
커널에서 아래 피처 활성화 후 업데이트
CONFIG_YAFFS_FS=y
CONFIG_YAFFS_YAFFS1=y
CONFIG_YAFFS_YAFFS2=y
CONFIG_YAFFS_AUTO_YAFFS2=y
CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
root@october:~# mkdir test
root@october:~# mount -t yaffs2 /dev/mtdblock4 /test
[ 24.080000] yaffs: dev is 32505860 name is "mtdblock4" rw
[ 24.090000] yaffs: passed flags ""
root@october:/# ls
bin etc lib mnt proc tmp var dev home linuxrc opt root sbin test usr
root@october:/# cd test
root@october:/test# ls
lost+found
root@october:/test# touch test.txt
touch: test.txt: Cannot allocate memory
root@october:/test#
위와 같이 하면 "Cannot allocate memory" 에러가 발생하는 데 어떻게 하면 이 영역에 읽고 쓰기가 가능 할까요?
RAM은 256 Mbyte 이며 CPU는 V210, Nand는 K9K8G08 입니다.... 그리고 rootfs 영역은 지우고 쓰고 잘 됩니다.
저는 아래와 같이 2가지 방법으로 해봤습니다. (증상은 동일)
첫번째는
Uboot에서 command로 아래와 같이 userdata 영역을 지우고 커널에서 mount 해봤구요
$ nand erase 7600000 6400000
두번째는
PC에서 mkyaffs2image 툴을 이용해서 yaffs2 더미 이미지 만들고 uboot에서 아래처럼 command 작업하고 커널에서 mount 해봤습니다.
$ nand erase 7600000 6400000
$ nand write.yaffs 21000000 7600000 0x884 (물론 커맨드 실행 이전에 RAM 영역에 yaffs2 더미 이미지를 로딩했구요)
그런데 둘 다 실행 결과는 "Cannot allocate memory" 입니다.
시스템 상황...ex> ram 크기, cpu, nand가 어디 것인지....다른 영역에는 잘 write가 되는지...
에 따라 답이 많이 틀려질 듯 합니다.