1

저는 임베디드 시스템 용 AHCI 인터페이스를 만드는 하드웨어 개발자입니다. PRD DMA 데이터가 생성되어 PRD에 할당 된 위치를 알고 싶습니다. SATA는 DWORDS를 사용하기 때문에 데이터가 4 바이트의 배수로 정렬됩니다. 나는 리눅스에 대한 많은 경험이 없기 때문에 누군가가 올바른 방향으로 나를 가리킬 수 있다면 감사 할 것이다.Linux AHCI PRD 할당

감사합니다.

답변

1

컨트롤러는 시스템 메모리와 SATA 장치 간의 데이터 이동 엔진 역할을합니다. 예를 들어 읽기 작업 타고 거친 순서는 다음과 같다 :

  • 소프트웨어, 포트 등록 PxCI을 구성하여 메모리에 명령 (명령 헤더, 명령 테이블 및 해당 PRDs)
  • 소프트웨어 문제이 명령을 "구축" (그리고 PxSACT NCQ 경우)
  • AHCI 컨트롤러
  • 소프트웨어가 디바이스 콘텐츠
  • 을 얻을 PRDs 읽기 명령 완료를 처리하기 위해 호출되는
  • 소프트웨어 인터럽트 서비스 (... 데이터 전송을 포함 함)이 명령을 페치 및 처리

PRD 항목 소프트웨어 (드라이버)에 의해 할당/생성되고/위치 커맨드 테이블을 통해 검색 될 수있다, 즉, 하드웨어는 다음 커맨드 테이블을 찾아 PRD 모든 항목을 검색 할 수있다. 게다가, ahci 사양은 PRD 주소와 바이트 수를 WORD 정렬 (최소)으로 정의합니다.

관련 문제