지난 몇년간 nand자만 들어도 지겹다.
nand 파일 시스템은 남이 구현해 놓은 것을 볼 기회도 있었지만,
아무리 보고 또 봐도 이해할 수가 없어서,
가져다 쓰고 고치는 것은 좋아해도 스스로짜는 것은 무지 싫어하는 성격이라지만
이번만은 할 수 없이 이론만을 가지고 구현을 해 왔다.

cpu를 바꿔서도 구현을 해보았는데 늘 새로 짜는 기분이 든다.

nand 파일시스템의 기본은 logical address를 phycical address로 바꾸어주는
테이블이 필요하다.
테이블이 있으면 속도는 빠르지만,
최대 short (type) X 4(plane) X 1024(block) = 8kbytes나 잡아 먹는다.

애초 atmega에서 구현을 생각할때 이 부분을 어찌할까 고민을 많이 했는데
atmega128이 4k ram, 도저히 안되는 것이 아닐까?
페이지를 r/w할때 매번 spare area에서 LSN(logical sector address)을 읽어오는 방식으로 변경하였다.
테이블이 필요없어지지만 속도는 많이 느릴것이다.

또 문제가있다.
nand large page type은 page size가 2k bytes나 된다.@.@
512 interface방식으로 바꾸어야한다.

그리고 ecc관련해서 보통 돌아다니는 소스가 256byte 테이블을 가지고 있다.
ecc 알고리즘을 이해하면 테이블을 없앨것도 같은데 이해하기 어렵다.

지금은 ecc 구현중...

tskit