도와주세요!!
글 수 15,339
2007.07.12 22:45:59 (*.92.76.130)
6669
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
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