MTD 서브시스템은 플래시 메모리 IC아 같은 다양한 메모리 형태의 장치를 지원하기 위해 만들어진 기술이다.

MTD 계층 구조는 메모리 장치가 사용하는 상위 레벨의 데이터 구조와 저장 형식을 하위 레벨의 장치와 관련된

복잡한 구조와 분리시킬 수 있다.

 

                                                   < MTD system Organization >

 

1. MTD 서비스 활성화하기

 

MTD 서비스를 이용하기 위해서는 커널이 MTD를 사용할 수 있도록 구성되어 있어야 한다.

 

.config 파일의 MTD 기본 구성 옵션

 

 1) CONFIG_MTD=y

 2) CONFIG_MTD_CHAR=y

 3) CONFIG_MTD_BLOCK=y

 4) CONFIG_MTD_MTDRAM=m

 5) CONFIG_MTDRAM_TOTAL_SIZE=8192

 6) CONFIG_MTDRAM_ERASE_SIZE=128

 

1) MTD 활성화

2) char device 모드에서 접근 활성화 (순차적으로 한 바이트씩 read/write)

3) block device 모드에서 접근 활성화 (블럭단위로 data를 read/write)

4) MTD device가 없더라도 MTD 서브시스템을 테스트해 볼 수 있는 special test driver

5) 4) driver의 전체 크기 = 8192 KB

6) 4) driver의 삭제 크기 = 128 KB

 

2. MTD 기초

 

1 장에서 언급한 test driver를 통해 MTD 장치를 용해서 JFFS2 이미지를 mount 할 수 있다.

리눅스 커널은 ext2 나 다른 파일 시스템 이미지는 loopback device에서 직접 mount 할 수 있지만 JFFS2

파일 시스템을 직접 mount 하는 기능은 지원하지 않는다. 이때 test driver를 이용한다.

 

 1) #modprobe jffs2

 2) #modprobe mtdblock

 3) #modprobe mtdram

 4) #dd if=jffs2.bin of=/dev/mtdblock0

 5) #mkdir /mnt/flash

 6) #mount -t jffs2 /dev/mtdblock0 /mnt/flash

 7) #ls -l /mnt/flash

 

1) jffs2 모듈을 커널에 로드

2,3) mtdblock과 mtdram 모듈을 적재

4) 리눅스 dd 명령으로 jffs2 파일 시스템 이미지를 mtdblock 장치를 이용해서 MTD RAM 테스트 드라이버에 복사

6) jffs2 파일 시스템 이미지를 MTD block device 에 복사한 후에 mount 한다.

   

MTD pseudo-device가 mount 되면 jffs2 파일 시스템 이미지를 원하는대로 이용할 수 있다.

만약 변경된 내용을 저장하고 싶으면 그 파일 시스템 내용을 다시 다른 파일로 백업해야 한다.

 

 #dd if=/dev/mtdblock0 of=./your-modified-fs-image.bin

 

이 명령어는 커널 구성시에 지정한 mtdblock0 장치와 같은 크기의 파일 your-modified-fs-image.bin을 만든다.

 

이처럼 진짜 플래시 메모리가 없는 개발 시스템에서 MTD 서브시스템에 대한 기본 개념을 확인해 볼 수 있다.

 

2.1 MTD 구성하기

  • 플래시 장치의 파티션 지정하기
  • 플래시 메모리의 종류와 주소 영역 지정하기
  • 플래시 IC에 대한 올바른 플래시 드라이버 구성하기
  • 알맞는 드라이버를 커널에 포함하도록 구성하기

3. MTD 파티션

플래시 메모리는 파티션이라고 부르는 몇 개의 부분들로 나누어져 MTD 서브시스템은 이런 플래시 파티션을

지원해 주는데 이를 위해 MTD partitioning support 이라는 항목이 활성화되어 있어야 한다.





WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,