2009년 8월 12일 수요일

호스트와 USB 디바이스


호스트
  • USB 호스트 컨트롤러와 루트허브 내장: 이를 통해 OS는 버스상의 디바이스와 통신
    • USB 호스트 컨트롤러
      • 데이터를 정해진 형태로 바꿔서 버스로 전송
      • 수신된 데이터를 변환
    • 루트허브 내장
      • 디바이스 추가와 제거를 감지
      • 호스트 컨트롤러의 리퀘스트 수행
      • 디바이스와 호스트 컨트롤러 간 데이터 교환
  • 버스관장: 여러 디바이스가 하나의 버스를 공유하므로 이것을 관리할 필요가 있음.
    • 버스에 연결된 디바이스와 그 디바이스의 기능을 파악
  • 디바이스 감지
    • 전원이 켜질 때 USB 디바이스를 감시
    • 추가된 디바이스에게 디바이스 주소 할당
    • 각 디바이스에게 추가 정보 요청
    • 분리된 디바이스는 디바이스 목록에서 삭제
  • 데이터 흐름 감지
    • 여러 디바이스가 동시에 데이터를 전송하려 할 때 frame/μframe단위로 사용 가능한 시간을 할당.
    • 디바이스는 호스트에게 대역폭을 요청하고 호스트가 할당. (할당이 되지 않으면 기다리거나 더 작은 대역폭을 요청)
  • 에러 확인: 에러 확인 비트와 ACK 사용
  • 전원공급
  • USB 디바이스와 데이터 교환


USB 디바이스

  • 호스트의 요청에 의해 동작
  • 각 디바이스는 디바이스 주소를 가지고 있어 디바이스 주소가 같으면 수신버퍼에 저장하고 interrupt를 발생. 다르면 무시
  • 호스트의 표준 request에 응답
    • 표준 request: 처음 디바이스의 열거를 위해 호스트가 보내는 request로 기능이나 상태를 묻는다.
  • 에러확인: 에러 확인 비트, ACK 감지
  • 전원관리
    • 버스활동이 없으면 전류 사용 제한
    • 3ms 동안 버스 활동이 없으면 디바이스는 suspend 상태로 전환, 버스활동이 감지되면 깨어남.
  • 주요기능
    • 호스트와 데이터 교환
    • 호스트가 데이터를 보내면 신호로 응답 (잘 받았다 / 지금 바쁘다)

댓글 없음:

댓글 쓰기