Flash Memory Map
Conceptual Model
|
Actual Model
| ||||||||
|
Boot Loader - BLOB
BLOB은 직렬 통신으로 커널 이미지와 램디스크 다운로드하기, 플래시 굽기, 커널에 인수 전달하기와 같은 기본 기능을 제공한다. BLOB는 2부분으로 나누어져 있다.
start 부분 : flash 메모리상 에서 수행되는 부분
reset 부분 : flash 메모리에서 SDRAM으로 복사된 후 SDRAM 상에서 수행되는 부분
BLOB의 프로그램이 모두 flash 메모리에서 수행되지 않고 reset 부분이 SDRAM으로 복사되어 SDRAM 상에서 수행되는 이유 : flash 메모리상 에서 수행되면서 flash 명령을 수행할 수 없기 때문이다. SDRAM에서 수행하는 것이 flash 메모리에서 수행하는 것 보다 더 효율적이다.
start부분
flash 메모리 0x00000000 번지부터 저장된다.
프로그램은 ARM 어셈블리 언어로 작성된다.
하드웨어 초기화 작업을 수행한다.
Xscale, GPIO, SDRAM 등을 초기화 한다.
BLOB의 reset 부분을 SDRAM에 있는 0xa0400400 번지로 복사한다.
BLOB_START(rest 부분)로 jump한다.
|
reset부분
flash 메모리 0x00000400 번지부터 저장한다.
flash 메모리상 에서 수행되지 않고 SDRAM을 복사되어 SDRAM 상에서 수행한다.
blob, kernel, ramdisk를 flash 메모리에서 SDRAM으로 복사한다.
이더넷 초기화 : 직렬 포트에서 입력이 없으면 SDRAM의 kernel 부분으로 jump하고 그렇지 않으면 명령어 모드로 수행한다.
|
Linux Kernel - Embedded Linux 2.4 Kernel
커널은 운영체제의 핵심 부분이다.
세부적인 기능
- 프로세스 관리(Process Management)
- 메모리 관리(Memory Management)
- 파일 시스템 관리(File System Management)
- 디바이스 관리(Device Management)
- 네트워크 관리(Network Management)
Ramdisk - EXT2 File System
램 디스크 이미지는 Ext2 파일시스템으로 이루어져 있다.
Root File System
압축된 이미지 형태이다.
JFFS2 - Journaling Flash File System 2
플래시 메모리 장치에 쓰이는 리눅스 로그 구조파일 시스템이다.
MTD(Memory Technology Device)
Support for NAND flash devices
NAND 플래시 메모리 장치를 지원한다. 일반적인 NAND 장치는 순차적 입출력 인터페이스를 통해 동작한다. JFFS2는 플래시 메모리가 골고루 닳아서 수명이 연장되게 하기 위해 Garbage Collector를 수행한다.
Garbage Collector
쓰레기 수집 알고리즘은 백그라운드로 수행된다. 이 작업은 dirty블록들을 빈 블록들로 전환시킨다. 블록 내의 valid노드들만을 새로운 블록으로 옮기고, 블록 내의 쓸모없는 블록들은 그냥 놓아둔다. 마지막으로 dirty블록들을 삭제한다. 또한, 그 블록에 빈 블록이라는 것을 나타내는 특별한 마커를 지정해주는 태그를 달아준다. (지우기 동작 중 전원이 갑자기 나갔을 경우의 혼란을 없애준다.)
User’s Files → /mnt/mtd
댓글 없음:
댓글 쓰기