호스트
- USB 호스트 컨트롤러와 루트허브 내장: 이를 통해 OS는 버스상의 디바이스와 통신
- USB 호스트 컨트롤러
- 데이터를 정해진 형태로 바꿔서 버스로 전송
- 수신된 데이터를 변환
- 루트허브 내장
- 디바이스 추가와 제거를 감지
- 호스트 컨트롤러의 리퀘스트 수행
- 디바이스와 호스트 컨트롤러 간 데이터 교환
- 버스관장: 여러 디바이스가 하나의 버스를 공유하므로 이것을 관리할 필요가 있음.
- 버스에 연결된 디바이스와 그 디바이스의 기능을 파악
- 디바이스 감지
- 전원이 켜질 때 USB 디바이스를 감시
- 추가된 디바이스에게 디바이스 주소 할당
- 각 디바이스에게 추가 정보 요청
- 분리된 디바이스는 디바이스 목록에서 삭제
- 데이터 흐름 감지
- 여러 디바이스가 동시에 데이터를 전송하려 할 때 frame/μframe단위로 사용 가능한 시간을 할당.
- 디바이스는 호스트에게 대역폭을 요청하고 호스트가 할당. (할당이 되지 않으면 기다리거나 더 작은 대역폭을 요청)
- 에러 확인: 에러 확인 비트와 ACK 사용
- 전원공급
- USB 디바이스와 데이터 교환
USB 디바이스
- 호스트의 요청에 의해 동작
- 각 디바이스는 디바이스 주소를 가지고 있어 디바이스 주소가 같으면 수신버퍼에 저장하고 interrupt를 발생. 다르면 무시
- 호스트의 표준 request에 응답
- 표준 request: 처음 디바이스의 열거를 위해 호스트가 보내는 request로 기능이나 상태를 묻는다.
- 에러확인: 에러 확인 비트, ACK 감지
- 전원관리
- 버스활동이 없으면 전류 사용 제한
- 3ms 동안 버스 활동이 없으면 디바이스는 suspend 상태로 전환, 버스활동이 감지되면 깨어남.
- 주요기능
- 호스트와 데이터 교환
- 호스트가 데이터를 보내면 신호로 응답 (잘 받았다 / 지금 바쁘다)
댓글 없음:
댓글 쓰기