임베디드 시스템
- 부피/전력이 큰 하드디스크 대신 플래시 메모리 사용
- 하드디스크를 가상으로 구현하고 파일시스템을 만든것 -> 플래시 파일시시스템
플래시 시스템
- 플래시 메모리 특성에 최적화
- 데이터 읽기는 블록과 관계없이 바이트 단위로 자유롭게 읽음
- 데이터 변경시 블록 단위로 처리
- 쓰기 수명이 있어 메모리 수명고려
- 모든 블럭에 골고루 쓰기하여 수명을 최대한 늘여야한다.
(1) 플래시 파일 시스템
1) 플래시 메모리 구조
2) 플래시 파일 시스템
3) JFFS
4) YAFFS
1) 플래시 메모리 구조
플래시 메모리
- 저비용 불활성 메모리
- In-system rewritable eprom
- nor형 : 셀 크기가 크지만, 고속 랜덤 액세스 가능
- nand 형 :셀 크기가 작고, 고속의 burst 액세스 가능
NOR형 NAND형
- 프로그램 속도 느림 빠름
- 직접도 낮음 높음
- 액세스 단위 속도 높음 낮음
x 임베디드시스템에서 주로사용
* 데이터 액세스 속도가 느리므로 대부분 프로그램은 플래시메모리 내용을 메인메모리에 복사하여 실행
2) 플래시 파일 시스템
플래시 파일 시스템
- 플래시 메모리상에 구현된 전용파일 시스템
- 아래의 이유로 ext2 파일 시스템 구현 힘듬
->블록 크기차이 : 플래시 메모리 - 64k ~256k / ext2 - 1 ~ 8k
-> 플래시 메모리 삭제 및 횟수 제한
- 비용부담 -> 파일 시스템 크기 축소하기위해 파일시스템 이미지 합축
- 파일시스템 신뢰도향상 -> 저널링 사용
플래시 메모리의 XIP(Excutable in place) 기능
- 플래시 메모리에 저장된 내용을 RAM에 복사하지 않고 플래시 상에 직접 실행하는 독작모드
- 파일시스템 압축 -> XIP 구현힘듬
- XIP 기능 사용 -> writabe 파일시스템 구현 힘듬
MTD(Memory technology device)
- 리눅스에서 제공하는 플래시 메모리 추상화 계층
- 다양한 플래시 메모리에 대해 동일한 API 사용
- MMC, SD, CF 지원하지 않음
- /dev/mtd0, /dev/mtd1 를 통해 데이터 입출력
- ioctl() 함수를 사용하여 MTD 정보 참조
FTL(Flash Translation Layer)
- 플래시 메모리를 블록 디바이스로 추상화
- 리눅스에서 플래시 메모리를 블록디바이스로 처리가능 -> 파일시스템 구현 가능
3)JFFS
JFFS
- Journaling Flash File System
- 디스크 없는 임베디드 시스템에서 NOR 플래시 메모리를 사용한 저널링 파일 시스템
- MTD 통해접근, 순환로그를 사용해 플래시 메모리 수명 늘림
JFFS2
- JFFS의 NAND 플래시용 파일 시스템
- 압축을 통한 성능향상
- 하드링크 지원
(2)임베디드 시스템의 플래시 메모리 활용
1) 플래시 메모리 활용
2) 플래시 메모리 맵
3) 플래시 메모리 퓨징
4) 플래시 메모리 퓨징 실시 예
1) 플래시 메모리 활용
임베디드 시스템의 플래시 메모리 활용
1. 부트로더, 커널이미지, 램디스크 이미지 저장공간으로 사용
- 초기 부팅과정에서 모두 메인메모리로 압축해제된 형태로 복사되어 실행
- 응용프로그램 실행과정에서 데이터 저장이 필요한 경우 플래시 메모리 특정공간을 할당해서 직접 써넣음
2.. JFFS, YAFFS 플래시 파일 시스템을 사용하여 하드처럼 사용
2) 플래시 메모리 맵
- 플래시 메모리의 분할 구조
- 플래시 메모리를 블록단위로 나누어 그 용도를 사전에 정의
- 임베디드 소프트웨어 컴포넌트들이 저장되는 위치들로 맵을 구성
플래시 메모리 맵 예시
- 램디스크들의 물리적 위치가 사전에 정의
3) 플래시 메모리 퓨징
- 퓨징 : 프로그램 또는 데이터를 플래시 메모리 맵에 따라 써넣는것
->퓨징의 주체에따라 호스트 컴퓨터 퓨징, 타겟보드 퓨징
호스트 컴퓨터 퓨징
-호스트 컴퓨터에서 타겟 보드 플래시 메모리를 직접 퓨징
- 호스트 병렬 프린텉 포트와 타겟보드의 JTAG 인터페이스 연결하여 퓨징
- 타겟 보드에 초기화 프로그램(부트로더)가 설치안된경우 초기화 프로그램을 퓨징할때 사용
타겟보드 퓨징
- 초기화 프로그램(부트로더)에서 TFTP를사용
- 소프트웨어 컴포넌트를 타겟보드의 RAM에 다운로드
- 부트로더의 퓨징 명령어 사용
- 플래시 메모리 퓨징
-> 초기화 프로그램을 제외한 나머지 컴포넌트를 퓨징할때 사용
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
ARM을 활용한 임베디드 시스템 설계 24 - 모듈 프로그래밍 (0) | 2020.05.05 |
---|---|
ARM을 활용한 임베디드 시스템 설계 23 - 입출력 디바이스 제어 (0) | 2020.05.05 |
ARM을 활용한 임베디드 시스템 설계 21 - 램디스크 (0) | 2020.05.05 |
ARM을 활용한 임베디드 시스템 설계 20 - 리눅스 파일 시스템 (0) | 2020.05.05 |
ARM을 활용한 임베디드 시스템 설계 19 - 커널 재구성 (0) | 2020.05.05 |