FAT를 임베디드에, 펌웨어에 내장하려고 할 때,
인터넷 뒤지면 참 다양한 것들이 나온다.
보통은 칩 사면 줄줄이 알사탕으로 초경량 OS에 쫓아오곤 하지만..
http://efsl.be/
General purpose Embedded Filesystem library
이걸 좀 이리저리 좌우까고 고쳐서 SD카드 용도로 사용 중...
잘된다.
메모리는 전역변수 하나 씀.. 즉 코드 빼고 스택 빼고 메모리를 4바이트만 쓴단 말씀. 그마저 에러처리라.. 뭐 제거해도 되고..
파일시스템 디스크립터, 파일 디스크립터 구조체만 메모리를 먹는다.
생각없이 잡은 지역 변수 배열이 없어서 스택 마진 100바이트면 충분한 것 같다.
사용례)
ret = file_fopen(&efs_fd, &efs.myFs, "eeewe.txt" ,'w');
// ret = file_read(&fd, 5, (unsigned char *)a);
ret = file_write(&efs_fd, 4, (unsigned char *)a);
ret = file_fclose(&efs_fd);
fs_flushFs(&efs.myFs);
플러싱을 안 하니까 즉시 기록이 안 되는데..
버퍼 잡은 것도 아니고 왜 그런지는 더 추적해봐야겠다.