USB 장치가 포트에 끼워지면 어떤일이 일어날까 -꼐속
어제
우리의 디바이스가 이력서(디바이스 디스크립터, Device Descriptor)를 제출하고
막이 내렸었다.

지금부터 1막2장 이다.
디바이스 디스크립터의 맨 마지막 항목이
0x01 Number of configurations
였다.

이 말은 컨피규레이션 디스크립터(Configuration Descriptor)가 하나 있다는 말이다.
이 컨피규레이션 디스크립터가 모냐 하면
(아 한글로 쓰니 댑따 이상하당. 담부턴 기냥 영어로 써야쥐.)
비유를 하자면
디바이스 디스크립터가 사람이라고 하면
Configuration descriptor는 옷 이라고 비유 할 수 있다.
행자들이 날마다 옷을 바꿔 입듯이
디바이스도 배트맨 옷을 입을 수도 있고,
슈퍼맨 옷을 입을 수도 있고
투명 망토도 입을 수 있다.
그런 옷을 갈아 입을 때마다 배트맨도 되고, 슈퍼맨도 되고, 해리포터도 된다는 말쌈이다.

근데 보통은 배트맨은 배트맨 옷만 입고, 슈퍼맨은 슈퍼맨 옷만 입듯이
이 Configuration Descriptor도 보통 디바이스들은 하나씩만 가진다.

이 Configuration 디스크립터도 디바이스 디스크립터처럼 여러 개의 항목을 가지지만,
다 쓸데 없고
주 용도는 파워는 어떻게 공급받으며, 얼마를 소모하는가를 호스트에게 알려주기 위함이다.

보통의 USB 장치는 포트를 통해 전원을 공급받지만,
USB 하드디스크처럼 500mA(앞에서 언급했다.)만 가지고는 배가 고픈 식충이들은
외부에서 전원을 공급해주어야 한다.
또, USB 포트를 통해 전원을 공급받는 경우는 자신이 얼마만큼의 전원을 소비하는지를
알려주어야 호스트가 적절하게 대응할 수 있다.

어떤 때는 포트전원만 쓰다가, 어떤 때는 외부전원을 쓰는 디바이스는
당삼 Configuration 디스크립터를 두 개 가진다.
근데, 그런 장치가 있나?
얼렁 생각이 안 나는걸 보니 흔치는 않은 모냥이닷.

이제 우리는 Device Desscriptor와 Configuration Descriptor를 알았다.
그게 다인 것 같은가?
ㅋㅋㅋ
더 있다.
(그림을 클릭해서 휜색 바탕에서 보시라. 배경색땜에 깜장선이 잘 안보인닷.)




보라
두개 외에
Interface Descriptors
Endpoint Descriptors
(String Descriptors)
가 더 있다.

인터페이스 디스크립터(Interface Descriptor)를 설렁 설명하고
오늘의 하이라이뚜 엔드포인트 디스크립터(Endpoint Descriptor)로 넘어가자

인터페이스 디스크립터도 여러 개의 항목을 가지지만
뺄껀 빼고 요점만 설명하면
자기의 직업은 뭔지, 또 자기가 가진 연장은 몇 개인지를 호스트에게 알린다.

디바이스가 Mass Storage Class(저장장치)인지, Human Input Device(입력장치인지) 등등등이
디바이스의 직업이 되겠꼬
연장이라 함은 그 직업을 수행하기 위해 필요한 Endpoint가 되겠따.

쪼기 위의 그림에서 알 수 있듯이
하나의 Configuration Descriptor아래에는 여러 개의 Interface Descriptor가
딸려 있을 수 있다.
이 말은 슈퍼맨이 어떤 때는 신문기자 클라크일 수도 있꼬,
어떤때는 슈퍼맨이 되었다가
크립토나이트 광선을 맞으면 비실이가 되는 것과 같은 이치이다.

USB 디바이스를 하나 만들었는데
이넘이 어떤 때는 이동식 저장장치로, 어떤 때는 USB 카메라로 동작하게끔 하려면
Interface Descriptor를 두 개 써넣어야 하것따.

쫌 더 자세하고 덜 친절한 설명을 보려면 http://www.beyondlogic.org/usbnutshell/usb5.htm#InterfaceDescriptors를 참조하시라.



엔드포인트 디스크립터(Endpoint Descriptor)
이거를 설명할라고
봄부터 소쩍새가 졸라 울었떤 거시다.

엔드포인트 이것은 호스트와 디바이스간의 통신이 이루어지는 실제 통로이다.
당삼 엔드포인트 디스크립터는 이 엔드포인트를 설명한 설명서가 되겠꼬.

벌써 눈치 챘겟지만 이 엔드포인트도 여러 개가 있을 수 있다.
또, USB 장치라면 최소한 하나는 있어야 한다. 이름하야 엔드뽀인뚜 0번

이 0번 엔드포인트(Endpoint)는 디폴트 컨트롤 엔드포인트라고 불리기도 한다.
바로 전 강좌에서 언급했듯이
디바이스가 포트에 끼워지면 호스트가 맨 처음 이 0번 엔드포인트를 통해 디바이스에게 말을 건다.

넌 누구냐?

















두번 우려먹으니 썰렁한가? 흠.

이 0번(디폴트 컨트롤) 엔드포인트는 호스트가 디바이스에게 이래라 저래라 명령을 내리는 통로다.
따라서 호스트 말을 듣기 싫으면 이 0번 엔드포인트에서 오는 명령을 생까버리면 된다.
그럼 행자도 짐싸서 회사를 떠나야 할 것이다. ㅋㅋㅋ
짐싸기 싫으면 0번 엔드포인트에서 오는 명령을 재깍재깍 수행하도록
펌웨어를 작성하자. 알~겠느냐~?

엔드포인트의 종류가 네개가 있는데,
하나는 이미 설명한 컨트롤 엔드포인트이고,
나머지는 인터럽트(Interrupt), 벌크(Bulk), 아이소크로너스(Isochronous) 엔드포인트이다.

간단히 설명하자면
컨트롤 엔드포인트는 다른 엔드포인트와는 달리 양방향 통신을 한다.

인터럽트(Interrupt) 엔드포인트는
통신이 도착하면 인터럽트가 걸려서 알려주는
그 인터럽트랑 상관없는
기냥 일정시간 마다 비교적 적은 데이터 량의 통신이 이루어지는 엔드포인트 이다.
USB 키보드, 마우스 이딴거 만들 때 쓰인다.

벌크(Bulk) 엔드포인트는
허벌나게 많은 양의 데이터를 시간구애 받지 않고 정확히 전달하고자 할 때 쓰이는
엔드포인트이다.
대표적으로 USB 저장장치에 활용한다.

아이소크로너스(Isochronous) 엔드포인트는
많은 양의 데이터를 정해진 시간 안에 전달하기 위한 엔드포인트이다.
대신 데이터의 무결성은 보장하지 않는다.
USB 캠, USB 스피커 이딴데 쓴다.
생각해 봐라 USB 캠에서 호스트로 동영상 이미지 전송하는데 한 두 픽셀 깨졌다고 표시나 나겠는가?

더 자세한 것은 필요할 때, 그때 그때 배우도록 하자

사족을 붙이자면 Enpoint를 파이프(Pipe)라 부르기도 한다.

오늘도 역시나 뜬구름 잡는 소리였따만
다음엔 펌웨어 코드로 들어가 보도록 하자.
다들 미리 요걸 따운 받아 설치해 놓자.

링크가 안열리는 행자는 여기로 직접가서 “SETUP_FX2LP_DVK_1004.exe
”를 다운받으시라.

그리고, 다운받아서 설치할 때, Keil Complier가 안 설치되 있는 행자들은 그것도 같이 설치하시라.
by 바람처럼날다 | 2005/03/31 22:26 | FX2 펌웨어 강좌 | 트랙백 | 핑백(1) | 덧글(7)
트랙백 주소 : http://muosys.egloos.com/tb/54013
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at 친절한 임베디드 시스템 개발자.. at 2009/08/29 00:25

... sp; ⓐ USB 장치가 포트에 끼워지면 어떤일이 일어날까 ⓑ USB descriptor의 내용은 무엇인가 8) Embedded Linux System ⓐ Embedded Linux System9) Developm ... more

Commented by 나선랑 at 2005/04/01 19:04
^^;; 먼저 감솨드리구요.. 몇일동안 애타게 찾던 얘기들이 여기에 있으니 쩝.. 넘 넘 기쁘군요... 좀 더 많은 야기들을 듣고싶지만 작가(?)님의 체력을 고려하여.. 좀만 더 길게 올려주시면 무지무지 캄솨를.. ㅋㅋ 여튼 정말 잘 보고 있습니다. 그럼 저같은 무지랭들을 위해 오늘도 열심히.. 항상 행복하세요.
Commented by 바람처럼날다 at 2005/04/02 01:24
잘봐 주시니 본좌 고마울 따름이요.
본좌도 길게 올리고프나
독수리타 신공을 연마중이라 그러기가 힘드오
아울러 입에 풀칠도하고,
정기적으로 에틸알코올도 섭취해주어야 하는 신병이 있는지라.
쿨럭;;;
Commented by 오리날다 at 2005/04/11 15:27
혹시라도 주화입마에 빠지 신다면..저의 내공이라도..^^;
일사명쾌로다..
Commented by 똘똘이 at 2005/10/04 11:14
지금 열심히 글을 읽고 있는중입니다.
잘 정리를 해 놓으신 거 같아서 도움이 많이 될 것 같습니다.
Commented by 구경모 at 2006/03/13 11:50
어디 전문 강사로 뛰어도 되겠는데요~ ^^ 강좌 고맙게 잘 보고
있습니다
Commented by LazyStyle at 2006/11/14 09:28
정말 잘 읽고 있습니다. 감사합니다.ㅠ _ㅠ)b
Commented by at 2006/11/21 16:56
Keil Complier가 어떤건지 모르겠는데 알려주심 안되나요?
createforce@naver.com여기루 ㅠㅠ
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
< 이전페이지 다음페이지 >