MCU : s3c44b0x
Flash : AMD29LV320DB(4Mbyte)
RAM : K4S281632

#cat /proc/mtd
dev:        size        erasesize        name
mtd0:        00100000        00010000        “kernel”
mtd1:        00300000        00010000        “rootfs”


#df
Filesystem        1k-blocks        Used        Available        Use%        Mounted on
/dev/rom1        3072        1152        1920        40%        /
/dev/ram0        1979        7        1972        0%        /var

현재 상황
1. 사용하는 영역은 Flash 영역입니다. 파일이 업데이트 될때마다 기존에 파일을 지우고 다시 업데이트된 파일을 써야 합니다.
2. file_a 파일의 크기는 100 ~ 300kbyte 입니다.
3. /var/tmp 는 ram 영역이고 /usr 영역은 flash 영역 입니다.
4. 업데이트 될 파일은 /var/tmp 에 copy 했다가 /usr/ 로 다시 copy 됩니다.
5. copy 는 저희가 동작시키는 Application 파일에서 system 함수를 사용하여
system(“/bin/cp   /var/tmp/file_a   /usr/file_a”) 이런 식으로 동작 합니다.
6. copy 가 끝난후에는 보드를 reboot 하도록 되어 있습니다.


테스트 방식(현재 디렉토리는 /var/tmp 입니다.)
1. cp ./file_a /usr/file_a 파일의 copy 가 완료되면 명령어 재실행(10번정도하면 보드먹통되고 메시지도 안뜨고 전원리셋후 부팅가능)
2. cp –dpR ./file_a /usr/file_a(실패)
3. rm /usr/file_a; cp ./file_a /usr/file_a(실패)
4. cp ./file_a /usr/file_a; cp ./file_a /usr/file_a; cp ./file_a /usr/file_a….10번반복(문제점 3의 메시지가 가장 많이뜸)
5. 생각이 몇가지 않나는데 이 외에도 여러가지 방법을 다 해보았습니다.
* 모든 테스트 방식은 파일사이즈가 커지거나 커지지 않으면 보드가 먹통이 되어 죽어 버립니다.



문제점
1. 랜덤하게 /var/tmp 에서 /usr/ 로 copy 를 할 때 /usr/ 로 옮긴 파일의 사이즈가 무한정 커집니다. 아래의 상황을 참조해 주시기 바랍니다.
#df
Filesystem        1k-blocks        Used        Available        Use%        Mounted on
/dev/rom1        3072        1152        1920        100%        /
/dev/ram0        1979        7        1972        0%        /var

2. 사이즈를 확인해보면 일반적으로 랜덤 하지만 최대 400Mbyte 까지 커져있는 것을 확인 하였습니다.
#ls –l /usr/file_a
-r-xr-xr-x        1        0        0        413126313        file_a

3. 아래와 같은 메시지가 뜨면서 보드가 죽을때도 있습니다.
jffs2_reserve_space_gc of 196 bytes for garbage_collect_dnode failed: 203653120