이미 소장하고 있다면 판매해 보세요.
|
1장 대용량 저장장치 기초 1
저장장치의 필요성 2 장점 2 그밖의 고려사항 3 요구사항 4 디바이스 4 임베디드 호스트 6 매체 선택 7 구동부 8 어드레싱 방법 10 읽기 쓰기에 대한 고려사항 10 제거 가능 매체와 디바이스 12 하드웨어 인터페이스 12 하드 드라이브 13 기술 13 인터페이스 13 플래시 메모리 14 기술 14 플래시 메모리 선택사항 15 멀티미디어카드 16 SD 메모리 카드 20 컴팩트플래시 22 2장 USB 지원 25 인터페이스 개요 26 호스트와 디바이스 26 호스트의 역할 27 디바이스의 역할 29 버스 속도 31 엔드포인트 32 전송방식 32 트랜잭션 33 데이터 토글 33 디스크립터 34 대용량 저장 요구사항 35 디바이스 컨트롤러 선택 38 플래시 메모리를 지원하는 컨트롤러 38 ATA/ATAPI를 지원하는 컨트롤러 38 펌웨어 선택 39 마이크로칩 PIC18F4550 39 구조 40 펌웨어 지원 40 USB 컨트롤러 40 3장 USB 대용량 저장 클래스 45 요구사항 45 명세 45 논리 블록 어드레싱 46 대용량 저장 리퀘스트 46 디스크립터 46 디바이스 디스크립터 47 컨피규레이션 디스크립터 49 인터페이스 디스크립터 51 엔드포인트 디스크립터 53 문자열 디스크립터 54 명령에 대한 응답 56 명령 블록 래퍼 57 명령 상태 래퍼 60 벌크 엔드포인트 상의 통신 관리 62 STALL 세부사항 72 13가지 경우 73 PC 지원 76 윈도우 76 리눅스 77 4장 플래시 메모리 카드 접근 79 인터페이스 79 신호와 전원 80 예제 회로 80 호스트 프로그래밍 83 설정 83 하드웨어 포트 85 펌웨어가 제어하는 포트 86 데이터 전송 86 디폴트 상태 86 PIC18F4550상의 SPI 86 포트 설정 88 바이트 쓰기 89 바이트 읽기 91 5장 멀티미디어카드 프로토콜 93 명령과 응답 형식 93 명령 94 응답 타입 94 토큰 형식 98 명령 99 클래스 99 대용량 저장 장치가 사용하는 명령 101 레지스터 101 명령 전송 102 타이밍 고려사항 102 데이터 전송이 없는 명령 105 저장매체로부터 데이터를 읽는 명령 105 저장매체에 데이터를 기록하는 명령 106 애플리케이션 예제 107 카드 감지 및 선택 107 명령 전송 109 섹터 읽기 118 섹터 쓰기 121 통신 초기화 123 6장 SCSI 명령 131 명령 131 명세 131 구현해야 할 명령 132 센스데이터 135 고정 형식 센스데이터 137 기본값 설정 138 주요 명령 139 INQUIRY 139 MODE SELECT 143 MODE SENSE 143 PREVENT ALLOW MEDIUM REMOVAL 145 REPORT LUNS 146 REQUEST SENSE 146 SEND DIAGNOSTIC 147 TEST UNIT READY 147 블록 명령 148 FORMAT UNIT 148 READ 149 READ CAPACITY 152 START STOP UNIT 154 SYNCHRONIZE CACHE 154 VERIFY 155 WRITE 155 멀티미디어 명령 159 READ FORMAT CAPACITIES 159 READ TOC/PMA/ATIP 159 명령과 이벤트 처리 159 명령 해석 160 UNIT ATTENTION 상태 161 호스트에게 매체 변경 통지 162 리셋 동작 163 7장 매체 구조 165 내부 들여다보기 165 포맷된 매체의 컴포넌트 166 MBR 섹터가 없는 드라이브 168 바이트 정렬 168 마스터 부트 레코드 섹터 168 실행가능 코드 169 파티션 테이블 169 확장 파티션 170 부트 시그니처 172 8장 FAT 파일 시스템 175 FAT16 볼륨 내부 175 예약 영역 176 파일 할당 테이블 영역 180 루트 디렉토리 영역 180 파일과 디렉토리 데이터 영역 180 FAT32 볼륨 내부 181 예약된 영역 181 파일 할당 테이블 영역 184 파일 및 디렉토리 데이터 영역 185 파일 시스템 선택 185 클러스터 크기 186 하드웨어 해결책 187 파일 할당 테이블 188 첫 2개의 엔트리 188 데이터 클러스터 188 FAT에 접근하기 190 볼륨 정보 190 파일 정보 191 클러스터의 논리 블록 주소 얻어내기 192 FAT로부터 읽어내기 193 FAT에 쓰기 194 파일의 다음 클러스터 찾기 195 순차적 읽기 수행 197 빈 클러스터 찾기 198 9장 디렉토리 201 엔트리의 내용 201 파일 엔트리 202 디렉토리 엔트리 205 볼륨 레이블 엔트리 206 하위디렉토리 엔트리 207 긴 파일명 다루기 207 LFN 엔트리 207 체크섬 209 짧은 파일명 생성 210 디렉토리 사용 211 엔트리 저장 211 엔트리 읽기 212 주 엔트리 얻기 217 엔트리 갱신 219 시간과 날짜 갱신 220 10장 파일 오퍼레이션 223 클러스터 오퍼레이션 224 클러스터 삭제 224 사용 가능한 클러스터 예약 225 파일의 첫 클러스터 할당 226 클러스터 추가 할당 226 파일 관리 228 파일 정보 얻기 228 파일 찾기 231 디렉토리 엔트리 생성 234 사용 가능한 엔트리 찾기 235 파일 생성 238 파일 삭제 239 파일 열기 243 파일로부터 읽기 246 작업 246 읽기 오퍼레이션 수행 247 파일에 쓰기 250 작업 250 쓰기 오퍼레이션 수행 251 파일 닫기 257 11장 임베디드 호스트 259 임베디드 호스트 내부 259 OTG 디바이스와 전통적인 호스트 260 일반적인 호스트 기능 260 대용량 저장 기능 261 USB 명세에 따르지 않는 디바이스 263 호스트 옵션 266 사이프레스 EZ-HOST 266 호스트 소프트웨어 267 대용량 저장 호스트 모듈 268 |
|
요즈음 주변을 살펴보면 임베디드시스템에서 제거 가능한 저장매체를 사용하는 예가 아주 흔해졌다. 제거 가능한 저장매체의 대표적인 예는 SD 카드와 컴팩트플래시 카드를 들 수 있다. 지금까지는 주로 디지털카메라, PDA, MP3 플레이어, 휴대용 멀티미디어 재생기(PMP) 등 주로 멀티미디어와 관련 있는 디바이스에서 이런 예를 볼 수 있었지만 앞으로 저장매체로부터 파일을 읽고 쓰는 방법이 필요한 분야는 더욱 다양해 질 것이다.
저장매체에 파일을 기록하고 읽는 기술, 그리고 저장매체가 들어 있는 디바이스를 PC에 USB로 연결해서 이동식 디스크로 동작하게 하는 기술은 대부분 임베디드 소프트웨어 엔지니어에게 매우 흥미로운 분야다. 현재 자신이 개발하고 있는 디바이스에 이런 기술을 적용할 수 있다면 많은 장점을 얻을 수 있기 때문이다. 하지만 기반 지식이 없는 상태에서 이런 기술을 적용하는 일은 그리 쉽지 않다. USB 통신, FAT 파일시스템, SD카드나 컴팩트플래시 카드 같은 저장매체에 데이터를 쓰고 읽는 방법을 모두 통합해야 하기 때문이다. 이 책은 『USB 완전정복』의 저자 Jan Alexson이 집필한 또 하나의 USB 서적이다. 『USB 완전정복』은 USB의 전체적인 개념을 파악하는 데 더할 나위 없이 좋은 책이지만 구체적인 적용 예가 없다는 아쉬움이 있었다. 하지만 이 책은 USB 대용량 저장(Mass storage)에 초점을 맞춰 실제 구현을 설명하고 있다. 게다가 FAT 파일시스템 구현을 위한 기본적인 개념과 실제 코드를 함께 설명하기 때문에 USB 대용량 저장에 관심이 있었지만 접근방법을 찾지 못하던 엔지니어와 학생들에게 많은 도움이 될 것이다. 앞으로 USB는 PC의 외부 인터페이스 버스로서의 입지를 더욱 굳혀 나갈 것이다. 이를 증명하듯이 요즘 나오는 노트북 컴퓨터는 임베디드 개발자에게는 너무나도 필수적인 시리얼포트가 없는 경우가 대부분이며 심지어는 병렬포트마저 사라지는 추세다. 대신 대부분의 외장 장치가 모두 USB로 연결되고 있다. 임베디드 개발자라면 시리얼 통신을 반드시 알아야 했듯이 앞으로는 USB를 반드시 정복해야 할 것이다. 더 구체적인 예를 담고 있는 이 책과 USB 완전정복을 통해 USB 이해에 많은 도움이 되기를 바란다. --- 역자 서문 |
|
대용량 저장장치를 사용하면 다양한 애플리케이션에 데이터 접근 방법을 제공할 수 있다. PC 상에서 애플리케이션을 로드하거나 파일을 저장할 때마다 여러분은 대용량 저장장치를 사용하고 있는 것이다. 컴퓨터의 하드 드라이브는 플래시, CD, DVD 드라이브처럼 대용량 저장장치의 한 종류다. 데이터 수집장치(data logger), 로봇, 그 밖의 임베디드 시스템 같은 특수목적 시스템 역시 대용량 저장장치를 사용할 수 있다. 대부분의 대용량 저장장치는 저장매체에 접근해서 데이터를 읽고 쓰는 방법이 구현돼있는 마이크로 컨트롤러, 마이크로 프로세서 또는 다양한 지능적인 하드웨어 컨트롤러를 포함한다.
USB 디바이스 컨트롤러는 대용량 저장장치가 다른 컴퓨터와 데이터를 공유하는 것을 가능하게 해준다. 예를 들어 데이터 수집장치로 현장에서 데이터를 수집해서 PC에 연결한다. 애플리케이션은 수집장치의 저장 매체로부터 데이터를 읽는다. 또는 로봇은 자신의 작업에 사용할 설정 데이터를 수신하기 위해 PC에 접근할 수 있다. 플래시 메모리 카드는 소형 시스템에 편리함을 제공한다. USB 호스트는 기존의 USB 플래시 드라이브와 하드 드라이브에 파일 접근을 수행할 수 있는 기능을 제공한다. 그 밖의 시스템은 기존에 제품으로 나와 있는 USB 플래시 드라이브와 USB 하드 드라이브상의 파일에 접근할 수 있는 USB 호스트로서 동작한다. USB 대용량 저장장치 또는 호스트 인터페이스를 통합하는 디바이스를 설계하거나 프로그래밍하는 일에 종사하고 있는 개발자라면, 이 책을 읽고 프로젝트를 한 단계 업그레이드하고 원활하게 진행하는 데 큰 도움을 받을 것이다. 또한 USB 인터페이스의 유무에 상관 없이, 데이터 저장을 목적으로 플래시 메모리 카드를 사용하는 디바이스를 설계하거나 프로그래밍을 하더라도 이 책에서 유용한 정보를 찾을 수 있을 것이다. 또 USB 대용량 저장장치에서 이러한 인터페이스와 프로토콜, 구조들을 어떻게 처리해야 하는지 보여줄 것이다. 이 책에서는 독자가 마이크로 컨트롤러 프로그래밍과 인터페이스를 기본적으로 알고 있다고 가정한다. USB에 대해 더 자세히 알고 싶다면 『USB 완전정복: 임베디드 USB 장치 개발을 위한』을 먼저 읽어보기 바란다. ★ 이 책에서 다루는 내용 ★ 적절한 저장 매체와 USB 컨트롤러를 선택하는 방법 업계 표준 SCSI 명령을 데이터 전송에 사용하는 방법 4개의 포트 핀만으로 플래시 메모리 카드에 접근하는 방법 저장매체의 정보에 접근하기 위한 파일시스템 지원 대용량 저장장치 설계와 프로그래밍 시 흔히 발생하는 실수 예제 코드, 실용적인 팁, 더 많은 유용한 정보 |