정말 감사합니다.

역시 답답한 마음을 잘 알아주셔서 빨리 답변해주시고,

상세하게 차례차례 설명해 주셔서 정말 큰 힘이 됩니다.

내공이 확확 느껴집니다.

정리 해주신 것들로 고민해서 잘 해결 하겠습니다.

고맙습니다.
>
>  <p>답변이 너무 늦지 않았나 모르겠습니다. ^^<br />
>    <br />
>  또 다른 분께서 teddykim님의 말씀을 보고 이렇게 말씀을 주셨네요.   ^^</p>
>  <p class="jwtitle"> 1. 디버깅이 활성화한 커널을 사용 중?</p>
>  <p>    jffs2_reserve_space_gc 함수는 커널 소스상에서   보면 플래쉬 erase 처리 시에 나오는데..<br />
>    그 작업을 위해서 필요로 하는 메모리 할당을 요청하는작업으로 이건 디버깅 메세지니깐 <br />
>  아마도 디버깅 부분을 활성화 한 커널을 사용하는 것으로 생각됩니다.</p>
>  <p class="jwtitle"> 2. 파일이 커지는 것에 대한   예상</p>
>  <p> 파일이 커지는 것은 결국 정상적인 jffs2 처리에 실패했다는 의미인데,<br />
>    그렇다는 것은 메모리 할당이 지속적으로 늦어   지고 있다고 생각됩니다.<br />
>    <br />
>  즉, 파일이 커지는 이유는 파일관리에 실패로 인한 깨지는 현상으로 생각됩니다.</p>
>  <p class="jwtitle"> 3. system() 함수 사용 보다는 직접 복사루틴 구현 </p>
>  <p> 결론적으로 메모리 할당 받는 것에 문제가 있는 것으로 생각되며,<br />
>    <br />
>    **** system()은 많은 메모리를   사용하므로<br />
>    **** system()을 사용하여 파일을 복사하는 것 보다는<br />
>  **** 직접 파일 복사하는 루틴을 작성하여 복사하는 것을   권하고 싶습니다.</p>
>  <p class="jwtitle"> 4. 부팅이 안 되는 문제</p>
>  <p> 더구나 NOR 플래쉬일 경우에는 플래쉬 라이트 하다가 패닉나   버리면<br />
>    즉, 플래쉬 롬이 리드상태로 종료가 되지 않은 상태에서 <br />
>  리부팅 해 버리면 부팅이 안 되는 경우가 생기게   됩니다.</p><hr />
>  <p>    이상입니다.   이 분의 도움글을 정리해 보면,</p>
>  <ol>
>    <li>      그렇지 않아도 메모리 여유가 없는 상황이므로 메모리 소모가 많은   system()을<br />
>      사용하시는 것 보다는 직접 파일 복사 루틴을 작성하시는 것이고<br />
>      <br />
>    </li>
>    <li>      하드웨어적으로는   파일 시스템에 할당되는 메모리말고 시스템에서 사용할 수 있는<br />
>    메모리 용량을 충분히 확장하는 것이 어떨까   합니다.</li>
>  </ol>
>  <p><br />
>>MCU : s3c44b0x<br />
>>Flash :   AMD29LV320DB(4Mbyte)<br />
>>RAM : K4S281632<br />
>><br />
>>#cat   /proc/mtd<br />
>>dev:        size        erasesize        name<br />
>>mtd0:        00100000        00010000        “kernel”<br />
>>mtd1:        00300000        00010000        “rootfs”<br />
>><br />
>><br />
>>#df<br />
>>Filesystem        1k-blocks        Used        Available        Use%        Mounted   on<br />
>>/dev/rom1        3072        1152        1920        40%        /<br />
>>/dev/ram0        1979        7        1972        0%        /var<br />
>><br />
>>현재   상황<br />
>>1. 사용하는 영역은 Flash 영역입니다. 파일이 업데이트 될때마다 기존에 파일을 지우고 다시 업데이트된 파일을 써야   합니다.<br />
>>2. file_a 파일의 크기는 100 ~ 300kbyte 입니다.<br />
>>3. /var/tmp 는 ram 영역이고   /usr 영역은 flash 영역 입니다.<br />
>>4. 업데이트 될 파일은 /var/tmp 에 copy 했다가 /usr/ 로 다시 copy   됩니다.<br />
>>5. copy 는 저희가 동작시키는 Application 파일에서 system 함수를   사용하여<br />
>>system(“/bin/cp   /var/tmp/file_a   /usr/file_a”) 이런 식으로 동작   합니다.<br />
>>6. copy 가 끝난후에는 보드를 reboot 하도록 되어 있습니다.<br />
>><br />
>><br />
>>테스트   방식(현재 디렉토리는 /var/tmp 입니다.)<br />
>>1. cp ./file_a /usr/file_a 파일의 copy 가 완료되면 명령어   재실행(10번정도하면 보드먹통되고 메시지도 안뜨고 전원리셋후 부팅가능)<br />
>>2. cp –dpR ./file_a   /usr/file_a(실패)<br />
>>3. rm /usr/file_a; cp ./file_a /usr/file_a(실패)<br />
>>4.   cp ./file_a /usr/file_a; cp ./file_a /usr/file_a; cp ./file_a   /usr/file_a….10번반복(문제점 3의 메시지가 가장 많이뜸)<br />
>>5. 생각이 몇가지 않나는데 이 외에도 여러가지 방법을 다   해보았습니다. <br />
>>* 모든 테스트 방식은 파일사이즈가 커지거나 커지지 않으면 보드가 먹통이 되어 죽어   버립니다.<br />
>><br />
>><br />
>><br />
>>문제점<br />
>>1. 랜덤하게 /var/tmp 에서 /usr/ 로 copy   를 할 때 /usr/ 로 옮긴 파일의 사이즈가 무한정 커집니다. 아래의 상황을 참조해 주시기 바랍니다. <br />
>>#df<br />
>>Filesystem        1k-blocks        Used        Available        Use%        Mounted   on<br />
>>/dev/rom1        3072        1152        1920        100%        /<br />
>>/dev/ram0        1979        7        1972        0%        /var<br />
>><br />
>>2.   사이즈를 확인해보면 일반적으로 랜덤 하지만 최대 400Mbyte 까지 커져있는 것을 확인 하였습니다.<br />
>>#ls –l   /usr/file_a<br />
>>-r-xr-xr-x        1        0        0        413126313        file_a<br />
>><br />
>>3.   아래와 같은 메시지가 뜨면서 보드가 죽을때도 있습니다.<br />
>>jffs2_reserve_space_gc of 196 bytes for   garbage_collect_dnode failed: 203653120<br />
>></p>
>