우선 이전의 내용인 MBR섹터와 부트레코드 섹터에 대해 좀 더 자세히 살펴보려고 합니다.^^
MBR과 부트레코드(Volume ID 영역)만 알아도 FAT32 파일시스템의 60%는 이해했다고 보면 될 것 같습니다. (저만의 생각인가요.^^;)
아래의 그림처럼 마스터 부트 레코드에는 Boot Code와 4개의 파티션 테이블, 그리고 매직 코드가 있습니다.
그럼 파티션 테이블에 대해서 알아보도록 하겠습니다. (MBR에서는 파티션 테이블이 가장 중요한 부분이라고 봅니다.^^)
파티션 테이블은 총 4개로서 각각 16 바이트 길이를 가지고 있습니다. 즉, Partition1, Partition2, Partition3, Partition4 이렇게 4개의 파티션 테이블이 존재하고 각각 16 바이트 입니다. 64MB 또는 128MB를 가진 저용량의 SD메모리 카드일 경우, 파티션 테이블은 한 개만 사용이 됩니다. 즉, 파티션이 하나이면 Partition1만 사용된다는 개념입니다. 예를 들어, PC에서 사용하는 하드디스크의 용량이 200GB 일 경우에, 파티션을 2개로 나눈다고 가정하면, 이 때에는 파티션 테이블이 2개 쓰입니다. 즉, Parttion1과 Partition2 가 사용됩니다.^^
MP3 플레이어 제작에는 저용량의 SD메모리를 사용하므로 파티션 테이블 - Partition1만 파악하면 될 것 같습니다.^^
파티션 테이블 구조 - Partition 1 (Partition1,2,3,4 모두 같은 구조입니다.^^)
위의 그림에서 5번째 항목인 LBA Begin 에는 파티션 시작 주소값이 들어 있습니다. 이 주소값을 참고하면 부트레코드 섹터를 찾아갈 수 있습니다. 즉, 이 주소값에 해당하는 곳이 부트레코드 섹터입니다. 부트레코드 섹터는 MBR과 크기는 512바이트로 같지만 다른 섹터입니다.
---------------------------------------------------------------------------------------------------
FAT32 파일시스템 구조를 자세히 나타내면, 아래의 그림과 같습니다.
우선 FAT32 구조를 알아야 하는 이유는 SD메모리 카드를 읽기 위해서 입니다. 혹자는 SD메모리를 그냥 0번섹터부터 1번섹터, 2번섹터..... 이렇게 끝까지 쭉~ 읽으면 되지 않느냐고 하시는 분이 있습니다.(저입니다.^^;) 이렇게 읽어도 되지만 MP3 파일이 SD메모리안의 0번섹터 부터 순서대로 저장되어 있는 것이 아니기 때문에, 읽어도 제대로된 MP3 파일이 아닐 것입니다.^^
즉, SD메모리 카드를 0섹터부터...1섹터, 2섹터....끝가지 쭉~ 읽는 것은 쉽습니다. 하지만 MP3 파일이 SD 카드안에 FAT32 형식으로 저장되어 있기 때문에 FAT32 형식대로 읽어야 옳바른 MP3 파일을 추출할 수 있다는 의미입니다.
FAT32의 동작 과정은, 아래의 그림처럼
MBR에서 파티션 테이블(Partition 1)을 찾아 파티션 테이블 안에 있는 LBA Begin 값을 참조해서 부트레코드 섹터로 진입하는 것으로 요약이 됩니다. 부트레코드 섹터를 찾았으면 이제 부트레코드 섹터에 들어있는 (7개 정도의 항목인) Volume ID 값을 읽어야 합니다.^^
좀 복잡한 것 같기도 한데요, 이 다음의 순서가 FAT #1, FAT #2의 이해와 Clusters(디렉토리와 파일)를 찾는 과정이 되겠습니다.^^
--------------------------------------------------------------------------------------------
지금까지의 내용을 간추려 보면,
1. MBR 섹터에서 파티션 테이블(Partition 1)을 읽는다.
2. 파티션 테이블에서 LBA Begin 값을 읽는다.
3. LBA Begin 값을 참조해서 부트레코드 섹터로 이동한다.
4. 부트레코드(PBR) 섹터에 들어 있는 Volume ID 정보를 참고해서 Clusters(파일과 디렉토리)를 읽는다.
이렇게 4가지 절차로 정리가 되네요.^^
---------------------------------------------------------------------------------------------
다시 한 번 용어를 정리하면,
MBR(Master Boot Record) = 마스터 부트 레코드 (크기: 512 바이트)
PBR(Partition Boot Record) = 파티션 부트 레코드 = 부트 레코드 = 부트 섹터 (크기: 512 바이트)
Volume ID = PBR의 일부분
이렇게 정리가 됩니다.^^ 이 정도는 알고 넘어가야겠죠?^^