컴퓨터 튜토리얼 문제 해결 DMA Windows 드라이버용 소스 코드가 있습니까?

DMA Windows 드라이버용 소스 코드가 있습니까?

Jan 18, 2024 am 08:30 AM

dma windows驱动源码吗?

DMA 관련 작업은 "리눅스 커널 심층 이해" 545페이지에 소개되어 있습니다. DMA에 관해 이야기할 때 캐시 문제를 언급해야 합니다. 이 책에서는 캐시 일관성 문제를 설명하기 위해 다음 예를 인용합니다.

장치 드라이버가 일부 데이터를 메모리 버퍼에 채운 다음 즉시 하드웨어 장치에 DMA 전송을 사용하여 데이터를 읽도록 명령한다고 가정합니다. DMA가 이러한 물리적 RAM 메모리 셀에 액세스하고 해당 하드웨어 캐시 라인의 내용이 아직 RAM에 기록되지 않은 경우 하드웨어 장치는 메모리 버퍼에서 이전 값만 읽습니다.

이제 DMA 버퍼를 처리하는 두 가지 방법이 있습니다.

일관적인 DMA 매핑:

이 책은 더 추상적입니다. 일반인의 용어로 말하면 DMA 버퍼를 다시 작성하면 메모리에 직접 업데이트됩니다. 동기화된 토지 또는 일관성이 있는 토지.

스트리밍 DMA 매핑:

개인적인 이해에 따르면 여기의 스트림은 입력 및 출력 스트림입니다. 버퍼를 읽을지, 쓸지 등 DMA 버퍼의 방향을 미리 지정해야 합니다. 비동기식 또는 비일관성이라고도 합니다. 자세한 내용은 아래를 참조하세요.

x86 아키텍처에서는 하드웨어 장치 드라이버 자체가 액세스된 하드웨어 캐시를 스누핑하므로 x86 아키텍처에서는 DMA 일관성 문제가 없습니다. MIPS, SPARC 및 POWERPC(ARM 포함)와 같은 다른 아키텍처의 경우 소프트웨어에서 DMA 일관성을 보장해야 합니다.

위 두 가지 중 하나를 선택하는 방법에 대해 책에 적절한 제안이 있습니다. CPU와 DMA 프로세서가 예측할 수 없는 방식으로 버퍼에 액세스하는 경우 일관된 DMA 매핑 방법을 사용해야 합니다(여기서는 제가 이야기하고 있습니다). 버퍼에 액세스하는 시기를 판단하는 것이 불가능하다는 점을 이해하세요.) 어떤 경우에는 스트리밍 DMA 매핑 방법이 더 좋습니다. 일부 아키텍처에서는 일관된 DMA 매핑을 처리하는 것이 번거롭고 시스템 성능이 저하될 수 있기 때문입니다.

스트리밍 DMA에 대한 자세한 소개는 다음과 같습니다.

액세스해야 하는 버퍼는 데이터 전송 전에 매핑되어야 합니다(여기서 매핑은 버퍼가 스트리밍된다는 것을 커널에 알리기 위해 일부 함수를 호출해야 함을 의미합니다). 전송 후 취소됩니다.

스트리밍 DMA 데이터 전송 시작은 다음 단계로 구분됩니다.

1. DMA 버퍼를 할당합니다.

DMA 장치가 S/G(분산/수집) 모드를 사용하지 않는 경우 버퍼가 물리적으로 연속적인지 확인해야 합니다. Linux 커널에는 연속 메모리를 할당하는 두 가지 기능인 kmalloc() 및 __get_free_pages( )가 있습니다. 두 함수 모두 연속 메모리 할당에 대한 최대값을 가지고 있습니다. kmalloc은 바이트를 단위로 할당하며, 최대값은 약 64KB이며, __get_free_pages()는 페이지를 단위로 할당하며 최대 2^order 수의 페이지를 할당할 수 있습니다. include/linux/Mmzone.h 파일의 MAX_ORDER 매크로에 의해 결정되는 순서 매개변수(기본 2.6.18 커널 버전에서 이 매크로는 10으로 정의됩니다. 즉, 이론적으로 __get_free_pages 함수는 최대

DMA 버퍼에 대한 액세스를 읽고 쓴 후 DMA 장치 전송을 시작하기 전에 dma_map_single() 함수를 활성화하여 스트리밍 DMA 매핑을 설정합니다.

3. 스트리밍 매핑을 해제합니다.

DMA 전송이 완료되면 dma_unmap_single() 함수를 해제해야 합니다.

(1) 일관성 문제를 피하기 위해 드라이버는 필요한 경우 DMA 버퍼에 해당하는 캐시 라인을 새로 고치기 위해 dma_sync_single_for_device()를 호출해야 합니다. 장치 드라이버는 이를 수행할 수 없습니다. DMA 데이터 전송이 완료되기 전에 메모리 버퍼에 액세스하지만 필요한 경우 드라이버는 버퍼를 읽기 전에 dma_sync_single_for_cpu() 함수를 호출하여 해당 하드웨어 캐시 라인을 무효화해야 합니다.

(3). 또한 __get_free_pages를 사용하여 구현되며 kmalloc에 ​​해당하는 릴리스 버퍼 함수는 kfree이고 __get_free_pages에 해당하는 릴리스 버퍼 함수는 free_pages입니다. __get_free_pages와 관련된 구체적인 응용 프로그램 및 릴리스 함수는 다음과 같습니다.

응용 기능:

alloc_pages(gfp_mask) ,order)는 할당된 첫 번째 페이지 프레임 설명자의 주소를 반환하고, 할당이 실패하면 NULL을 반환합니다. __get_free_pages(gfp_mask,order)는 alloc_pages()와 유사하지만 할당된 페이지의 선형 주소를 반환합니다. 선형 주소에 해당하는 페이지 프레임 번호를 얻으려면 virt_to_page(addr) 매크로를 호출하여 선형 주소를 생성해야 합니다. 여기서 해제 함수: __free_pages(page, order)는 주로 페이지가 다음을 수행해야 한다는 점을 강조합니다. 버퍼를 해제합니다. 선형 첫 번째 주소가 있는 페이지 프레임 번호 free_pages(page, order) 이 함수는 __free_pages(page, order)와 유사하지만 받는 매개변수는 첫 번째 페이지 프레임의 선형 주소 addr입니다. 출시

위 내용은 DMA Windows 드라이버용 소스 코드가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법 Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법 Apr 03, 2025 pm 06:01 PM

Windows 11 KB5054979 업데이트 : 설치 안내서 및 문제 해결 Windows 11 24H2 버전의 경우 Microsoft는 몇 가지 개선 사항 및 버그 수정이 포함 된 누적 업데이트 KB5054979를 출시했습니다. 이 기사에서는이 업데이트를 설치하는 방법을 안내하고 설치 실패에 대한 솔루션을 제공합니다. Windows 11 24H2 KB5054979 정보 KB5054979는 2025 년 3 월 27 일에 출시되었으며 Windows 11 24H2 버전에 대한 보안 업데이트입니다. 3.5 및 4.8.1. 이 업데이트는 보안을 향상시킵니다

KB5053602를 수정하는 방법 Windows 11에 설치되지 않습니까? KB5053602를 수정하는 방법 Windows 11에 설치되지 않습니까? Mar 13, 2025 am 10:00 AM

2025 년 3 월 11 일에 출시 된 KB5053602 패치는 Windows 11 Editions 22H2 및 23H2를 대상으로 OS를 OS로 향상시킵니다. 22621.5039 및 22631.5039

KB5053606의 스포트라이트 Windows 10 용으로 설치되지 않음, 정확한 단계 KB5053606의 스포트라이트 Windows 10 용으로 설치되지 않음, 정확한 단계 Mar 13, 2025 pm 08:02 PM

Windows 10 KB5053606 업데이트 설치가 실패 했습니까? 이 안내서는 효과적인 솔루션을 제공합니다! 많은 사용자들이 SSH Connectruption, DWM.EXE 비 응답 성 또는 입력 메소드 편집기 (IME) 문제와 같은 2025 년 3 월 패치 화요일에 발표 된 Windows 10 KB5053606 업데이트를 설치하는 데 문제가 있습니다. 다운로드 또는 설치 중에 업데이트가 고정 될 수 있거나 0x800F0922, 0xD000034, 0x80070437 및 0x80072EFE와 같은 오류 코드가 나타날 수 있습니다. KB5053606 설치 실패는 일반적으로 Windows 업데이트 구성 요소 실패, 시스템 파일 손상 및 디스크를 포함한 다양한 이유로 인해 발생합니다.

Microsoft Office에서 'Something Orth Orth'오류 태그 7Q6CH를 고치는 방법은 무엇입니까? Microsoft Office에서 'Something Orth Orth'오류 태그 7Q6CH를 고치는 방법은 무엇입니까? Mar 15, 2025 am 02:00 AM

Microsoft Office의 "Something Orth Ord"오류 태그 7Q6CH는 문서 작성 또는 이메일 처리와 같은 필수 작업 중에 워크 플로를 방해합니다.

KB5053598이 Windows 11에 설치되지 않으면 어떻게됩니까? 여기에서 수정 KB5053598이 Windows 11에 설치되지 않으면 어떻게됩니까? 여기에서 수정 Mar 13, 2025 pm 08:03 PM

Microsoft의 2025 년 3 월 11 일 업데이트 인 KB5053598은 Windows 11 24H2 (OS 빌드 26100.3476)의 중요한 패치입니다. 이 Minitool 가이드는 설치 문제 문제를 포함하여 알아야 할 모든 내용을 다룹니다. KB5053598의 새로운 기능은 무엇입니까? 출시

GTA V 향상된 ERR_GFX_D3D_NOD3D12, 4 가지 방법으로 빠른 수정 GTA V 향상된 ERR_GFX_D3D_NOD3D12, 4 가지 방법으로 빠른 수정 Mar 14, 2025 pm 08:04 PM

GTA 5 향상된 ERR_GFX_D3D_NOD3D12 오류 수정 안내서 Grand Theft Auto V Enhanced (GTA 5 Enhanced)는 업그레이드 된 게임이지만 일부 플레이어는 시작시 "ERR_GFX_D3D_NOD3D12 : DIRECTX 12 어댑터 또는 러너"오류를 만납니다. 이 기사는 몇 가지 해결책을 제공합니다. 오류의 원인 :이 오류는 일반적으로 시스템이 DirectX 12 런타임 라이브러리 또는 호환 DirectX 12 그래픽 카드가 없음을 나타냅니다. 해결책: 방법 1 : DirectX 런타임 라이브러리를 설치하십시오 점검

AI 제한 파일 위치 및 저장 파일 보호 전달 안내서 AI 제한 파일 위치 및 저장 파일 보호 전달 안내서 Mar 17, 2025 pm 10:05 PM

AI Limit 마스터 링 파일 위치 및 보호 : 포괄적 인 가이드 2025 년 3 월 27 일에 액션으로 가득 찬 공상 과학 RPG, AI Limit에 뛰어들 계획이 있습니까? 파일 저장 위치 이해 및 강력한 보호 방법 구현은 다음과 같습니다.

KB5053598을 수정하는 방법 Windows 11에 설치되지 않습니까? KB5053598을 수정하는 방법 Windows 11에 설치되지 않습니까? Mar 13, 2025 am 10:01 AM

Windows 11은 보안을 향상시키고 버그를 수정하며 새로운 기능을 소개하기위한 정기적 인 업데이트를받습니다. 이 업데이트 프로세스의 한 측면은 화요일 패치입니다.

See all articles