'Embedded'에 해당되는 글 7건

  1. 2013.01.16 NTFS MFT까지의 접근 by 똘이 임덕규
  2. 2013.01.08 파일 시스템 요소들 by 똘이 임덕규
  3. 2013.01.08 FAT File System의 구조 by 똘이 임덕규
  4. 2013.01.04 FAT 파일 시스템 by 똘이 임덕규
  5. 2012.12.31 파티션 by 똘이 임덕규
  6. 2012.12.28 레지스터 주소, 스펙보고 직접 등록하기 by 똘이 임덕규
  7. 2012.04.05 풀다운 저항과 풀업 저항은 무엇인가? by 똘이 임덕규








위의 그림은 MBR부터 읽어서 MFT의 Attribute 까지의 접근에 대한 그림이다. 실제 접근까지는 총 세번의 Dump가 이루어지며 Dump시 절대주소를 적어주어야만 원하는 곳의 데이터를 얻을 수 있다.

아래는 위 그림을 설명할 소스코드의 일부분이다.

int main(void)
{
	char dumpData[512];
	U8*  ucP;
	
	HDD_read(1, 0, 1, dumpData); 
	HexDump(dumpData, 512);
	HDD_read(1, *((U32 *)(dumpData + 446 + 8)), 1, dumpData);	// Boot Code + LBA Starting Address
	HexDump(dumpData, 512);
	HDD_read(1, (*((U32*)(dumpData+48))) *8 +63, 1, dumpData); // MFT Entry
	
	ucP = test((dumpData+(*((U16*)(dumpData+20))))); /* Attribute 의 시작 부분 */

 	test(ucP);
	
	return 0;
}

해당 소스의 전체 파일(소스가 제대로 동작하지는 않고 있다.)

hdd_NTFS_MFT_Entry_Attribute.c


저작자 표시
신고

'Embedded > File System' 카테고리의 다른 글

NTFS MFT까지의 접근  (0) 2013.01.16
파일 시스템 요소들  (0) 2013.01.08
FAT File System의 구조  (0) 2013.01.08
FAT 파일 시스템  (0) 2013.01.04
파티션  (0) 2012.12.31

파일 시스템을 이루고 있는 몇 가지 요소

  • 클러스터
    1. 운영체제가 저장장치에 있는 데이터를 읽고 쓰는 논리적인 기본단위
    2. 리눅스에서는 아이노드라고도 불린다.
    3. 크기가 작은 파일을 저장장치에 쓰고자 하는 경우 파일이 클러스터의 크기보다 작아 서 남는 용량은 버려지게 된다.
    4. 상대적으로 느린 저장 매체인 하드디스크의 속도를 고려하여 1KB 파일을 불러올때 1 KB짜리 클러스트를 열번 불러들이는 것보단 4KB짜리 클러스트를 I/O로 불러들이는 편이 빠르다.
    5. 단 1Byte라도 사용한다면 1개의 클러스터 영역이 사용된다.

하드디스크의 주요 구성 요소

  • 트랙
    1. 디스크의 중심으로 도는 원. 반지름이 커질 수록 원이 커지는 만큼 디스크의 가장자리 영역에 데이터를 많이 보관할 수 있다.
  • 섹터
    1. 각각의 섹터는 571 Byte의 공간을 차지
    2. 그중 59 Byte는 각각의 섹터에서 고유 번호 등을 저장하는 용도로 사용
    3. 나머지 512 Byte가 사용자들이 사용할 수 있는 데이터 영역
  • 실린더
    1. 여러장 겹겹이 있는 플래터 구조를 가지는 하드 디스크에서의 개념으로 수직으로 같은 위치에 있는 섹터들을 실린더라 부른다.


저작자 표시
신고

'Embedded > File System' 카테고리의 다른 글

NTFS MFT까지의 접근  (0) 2013.01.16
파일 시스템 요소들  (0) 2013.01.08
FAT File System의 구조  (0) 2013.01.08
FAT 파일 시스템  (0) 2013.01.04
파티션  (0) 2012.12.31


FAT File System의 구조는 아래와 같이 정리할 수 있다.

  • 부트 레코드(BR)
    1. 크기가 1섹터밖에 안되는 작은 영역
    2. Windows가 FAT 파일시스템을 인식하는 가장 중요한 역할 담당
    3. 이곳이 지워지면 윈도우는 해당 볼륨 인식 불가
  • 예약된(Reserved) 영역
    1. FAT16인 경우에는 1섹터, FAT32 경우에는 32섹터 할당.
  • FAT #1 과 FAT #2
    1. FAT 영역은 클러스트들을 관리하는 테이블이 모여 있는 공간
    2. 이곳에 손상이 가면 심각한 문제가 온다.
    3. FAT #1과 #2는 완전히 똑같은 내용을 가지고 있으며 #2 이상 부터는 만약을 대비해서 만들어둔 백업본이다.
  • 루트 디렉토리 영역(FAT16 에서만 존재)
    1. 위치는 항상 FAT #2 영역 뒤쪽에 고정
    2. 위치는 고정적이지만 크기는 가변적일 수 있다.
  • 데이터 영역
    1. 실제 데이터인 파일과 디렉토리가 클러스트 단위로 저장되어있다.
    2. 섹터 단위가 아닌 클러스터(Cluster)라 불리는 논리적 단위로 읽기 쓰기를 한다.
  • 사용하지 않는 영역
    • FAT File System 볼륨 구조화 과정중 생긴 잉여 영역


저작자 표시
신고

'Embedded > File System' 카테고리의 다른 글

NTFS MFT까지의 접근  (0) 2013.01.16
파일 시스템 요소들  (0) 2013.01.08
FAT File System의 구조  (0) 2013.01.08
FAT 파일 시스템  (0) 2013.01.04
파티션  (0) 2012.12.31
FAT 파일 시스템의 탄생
  • FAT파일 시스템은 1976년 MicroSoftware의 제품인 Basic에서 플로피 디스크 관리를 위해 빌게이츠에 의해서 최초 구현됨

FAT 파일 시스템 종류

  • FAT12
    • 1984년에 발표된 DOS 3.0에서 이용하였으며 5.25inch 1.2mb 양면 플로피 디스크를 사용할 수 있도록 했다.
  • FAT16
    • HDD기술의 발달로 요구된 대용량의 파일을 수용할 수 있는 파일 시스템.
    • 클러스터 크기를 32kb로 할 경우 최대 2GB까지 표현
  • VFAT
    • Windows95에서 채택
    • 32bit 보호모드에 적합하게 코드를 재작성
    • 독점모드 추가로 여러 프로그램이 동시에 파일에 접근할 경우를 대비
    • 최대 255자까지의 긴 파일이름 가능
    • 여전히 2GB까지의 용량 한계 문제점
  • FAT32
    • VFAT기반으로 수정
    • 총 28bit를 이용해서 클러스트를 표현
    • 클러스트 크기를 16kb로 한다면 이론상 최대 4TB까지 표현이 가능하지만 여러 이유로 32GB의 최대 용량을 가진다.
    • FAT의 마지막 버전.
구분 FAT12 FAT16 FAT32
사용 용도 플로피 디스크용 저용량 하드디스크 고용량 하드디스크
클러스터 표현 비트 수 12bit 16bit 32bit(28bit만 사용)
최대 클러스터 개수 4,084 65,524 약 2^28
최대 볼륨 크기 16MB 2GB 2TB
파일의 최대 크기 볼륨 크기만큼 볼륨 크기만큼 4GB

요약

  • FAT 파일시스템 중에서는 FAT32가 가장 무난한 선택
  • FAT32는 MS-DOS, Windows95와는 호환되지 않는다.
  • 용량이 32MB 이하의 CF카드나 USB Memory Stick에서는 FAT16외엔 방법이 없다.


저작자 표시
신고

'Embedded > File System' 카테고리의 다른 글

NTFS MFT까지의 접근  (0) 2013.01.16
파일 시스템 요소들  (0) 2013.01.08
FAT File System의 구조  (0) 2013.01.08
FAT 파일 시스템  (0) 2013.01.04
파티션  (0) 2012.12.31

파티션

Embedded/File System 2012.12.31 14:54

파티션이란

파티션은 연속된 저장 공간을 하나 이상의 연속되고 독립된 영역으로 나누어서 사용할 수 있도록 정의한 규약이다.


파티션의 가장 큰 의미는 저장장치의 구역 나눔이다.

파티션의 사용 용도

  • 하나의 물리적인 디스크를 여러 논리 영역으로 나누어 관리를 용이하게 하기 위해
  • OS 영역과 DATA 영역으로 나누어 OS 영역만 따로 포맷 및 관리하기 위해
  • 여러 OS를 설치하기 위해
  • 하드디스크의 물리적인 배드 섹터로 특정 영역을 잘라서 사용하기 위해




저작자 표시
신고

'Embedded > File System' 카테고리의 다른 글

NTFS MFT까지의 접근  (0) 2013.01.16
파일 시스템 요소들  (0) 2013.01.08
FAT File System의 구조  (0) 2013.01.08
FAT 파일 시스템  (0) 2013.01.04
파티션  (0) 2012.12.31
기본 제공해주는 avr.h를 사용해도 되지만 필요한 레지스터만 define하여 사용할 수 있다.

최종모습은 아래와 같다.
#define DDRF *((volatile unsigned char *)0x61)
위 코드는 보다시피 스펙에 나와있는 DDRF의 주소를 Register Summary에서 직접 찾아서 적을 수 있다.


이해하기 쉽게 순서대로 적어보겠다.
  1. 사용할 레지스터의 주소를 Spec 에서 찾아 적는다. 이때 주소는 ATmel사의 스펙북이라면 뒷쪽에서 찾을 수 있다.
  2. 예제로 사용할 레지스터인 DDRF의 주소를 찾는다.
  3. 헤더 파일에 아래와 같이 기본적인 명시(define)를 한다.

    #define DDRF 0x61
    
  4. 주소의 타입은 unsigned char * 이기 때문에 캐스팅을 해주고 다시 한번 괄호로 싸준다..
    #define DDRF ((unsigned char*)0x61)
    
  5. 주소가 가리키는 곳을 사용해야 하기 때문에 괄호 앞에 포인터를 찍어준다.
    #define DDRF *((unsigned char*)0x61)
    
  6. 컴파일러에 의해 의도적이지 않게 변경되는 것을 막기 위해 volatile을 붙여 준다.
    #define DDRF *((volatile unsigned char*)0x61)
    
  7. 완성
저작자 표시
신고

'Embedded > Atmega128' 카테고리의 다른 글

레지스터 주소, 스펙보고 직접 등록하기  (0) 2012.12.28

풀 업·다운 저항은 무엇인가?

 기본적으로 스위치를 가지고 있는 전자회도 등이 받게 되는 값은 5V의 값을 받는 High 상태인 “1”이 거나 GND에 연결되어 “0”의 값을 가지고 있어야만 정상적인 작동이 가능하다. 일반적으로 생각하기에 GND에 연결이 아니라 선을 때어 놨을 경우 그것이 바로 전기가 들어가지 않는 “0”의 상태, 즉 Low가 아닌가 할 수도 있겠지만 그 상태는 High 도 Low도 아닌 플로팅(Floating) 상태라 부른다. 

* 플로팅 : 허공에 뜨다, 아무것도 연결을 하지 않는 상태, 또는 서로 절연되어 있는 상태를 말한다. 전자적으로는 아무것도 연결을 하지 않으면 각종 노이즈나 주위 환경에 따라서 H의 입력이 될 수도 있고 L도 될 수도 있다. 소자특성마다 주위환경과 노이즈에 따라 H, L상태가 수시로 변하기 때문에 정확한 디지털 소자의 입출력에 방해를 준다.

 이것을 간단한 저항의 연결로 해결 할 수 있는데, 경우에 따라 두가지 방법이 존재한다.

  • 풀 업 저항

항상 High 상태를 유지해야 하는 전자회로일 경우 사용하며, 스위치를 눌렀을 경우 Low 입력값을 넣게 된다.

<풀 업 저항>

왼쪽 그림은 풀업 저항이 들어가지 않은 저항인 동시에 “플로팅” 상태인 회로이다. 이것을 '풀 업 저항'을 넣은 회로도로 바꾸어 놓으면 오른쪽 그림처럼 만들 수 가 있는데 작동은 아래와 같다.

    • 스위치를 Off : 입력상태가 High, 즉 '1'이 들어간다.
    • 스위치를 On : 입력상태가 GND에서 값을 받아 Low, 즉 '0'이 된다.

풀업 저항의 주목적은 바로 스위치가 OFF 될 때가 된다. 오른쪽 그림을 보면 왼쪽 그림과는 다르게 풀업 저항을 통해서 전원 +5V로 연결이 되어 있기 때문에 스위치가 OFF되더라도 입력 값의 혼동이 없다. 즉, 이른바 알려진 입력 상태가 되는 것이다. 그리고 풀업 저항이 없으면 스위칭 시 과도한 전류가 흐를 개연성이 많기 때문에, 디바이스에 안 좋은 영향을 끼칠 수가 있다. 이런 문제도 풀업(또는 풀다운)저항으로 해결할 수가 있다.

  • 풀 다운 저항

논리적인 Low 상태를 유지 시키기 위해선 '풀 다운' 저항을 사용할 필요가 있다.


<풀 다운 저항>

풀 다운 저항이 없는 왼쪽의 회로에서는 스위치가 Off인 상태에서는 플로팅 상태에 있게 된다. 왼쪽 그림 처럼 '풀 다운 저항'을 설치해 주었을 때는 스위치가 Off일때 입력값은 GND에 물려 있으므로 Low상태, 즉 0이 된다.

이 처럼 스위치가 들어가는 곳에서는 '풀 다운·업 저항' 을 사용하여 논리적 입력값을 줄 수 있으므로 오동작을 피할 수 있다.



신고

'Embedded > 전자회로' 카테고리의 다른 글

풀다운 저항과 풀업 저항은 무엇인가?  (0) 2012.04.05