3.1 AHB-to-APBH Bridge with DMA (APBH-Bridge-DMA)
3.1.1 Overview
AHB-to-APBH 브리지는 AHB의 HCLK로 실행되는 저렴한 주변 디바이스 연결 버스를 프로세서에 제공한다. APBH의 H는 APBH가 HCLK와 동기화된 것을 나타낸다.
AHB-to APBH 브리지에는 APB 디바이스에 메모리 맵 I/O를 위한 AHB-to-APB PIO 브리지와 이 버스의 디바이스를 위한 중앙 집중 DMA 시설과 Arm core를 위한 벡터 인터럽트 컨트롤러를 포함한다. 벡터 인터럽트 컨트롤러를 포함하는 각 APB 주변 디바이스는 이 문서의 다른 부분에 있는 해당하는 장에 설명되어 있다.
이러한 디바이스에는 별도의 DMA 버스가 없다. DMA에서 APBH 버스 사용과 AHB-to-APB 브리지 기능에서 APBH 사용 간의 경합은 내부 중재 로직에 의해 중재된다. 두 유닛 사이에 경합의 경우, DMA가 우선되며 AHB 슬레이브는 브리지 전송이 완료될 때까지 HREADY 출력을 통해 "no ready"를 보고한다. 중재자(arbiter)는 APB에서 네 번째 전송마다 반복되는 잠금을 추적하고 우선 순위를 반전하여 Arm 플랫폼을 보장한다.
3.1.1.1 Hardware Operation
SDMA 컨트롤러는 MCU 메모리 공간과 주변 디바이스 간의 데이터 전송을 담당하며 아래의 기능을 포함한다.
- 멀티채널 DMA는 최대 32개의 시분할(time-division) 멀티플렉스 DMA 채널을 지원한다.
- 16-bit Instruction-Set micro-RISC 엔진으로 구동한다.
- 각 채널은 특정 스크립트를 실행한다.
- 2단계 우선 순위 기반 선점형 멀티태스킹으로 매우 빠르게 컨텍스트를 전환한다.
- 4KB ROM에는 startup scripts(즉 부트코드)와 RAM에 위치한 스크립트에서 참조할 수 있는 기타 일반 유틸리티를 포함한다.
- 8KB RAM 영역은 시스템 메모리에서 다운로드한 채널 스크립트를 저장하는 데 사용되는 프로세서 컨텍스트 영역과 코드 공간 영역으로 구분된다.
3.1.1.2 Software Operation
DMA는 아래 테이블과 같이 16개의 DMA 서비스 채널을 지원한다. 공유 DMA 리소스는 각 독립 채널이 심플한 연결(chained) 명령어 목록을 따를 수 있도록 한다. 명령어 체인은 일반적인 구조를 사용하여 만들어진다.
Table 24. APBH DMA Channel Assignments
APBH DMA CHANNEL # | USAGE |
0 | GPMI0 |
1 | GPMI1 |
2 | GPMI2 |
3 | GPMI3 |
4 | GPMI4 |
5 | GPMI5 |
6 | GPMI6 |
7 | GPMI7 |
8 | EMPTY |
9 | EMPTY |
10 | EMPTY |
11 | EMPTY |
12 | EMPTY |
13 | EMPTY |
14 | EMPTY |
15 | EMPTY |
3.1.1.3 Source Code Structure
아래 테이블은 drivers/dma/ 에서 사용 가능한 소스 파일을 보여준다.
Table 25. APBH DMA Source Files
File | Description |
mxs-dma.c | APBH DMA 구현 드라이버 |
3.1.1.4 Menu Configuration Options
menu configuration에서 아래 모듈을 활성화한다 :
- Device Drivers > DMA Engine support > MXS DMA support
3.1.1.5 Programming Interface
모듈은 표준 DMA API를 구현한다. GPMI NAND 드라이버와 같이 드라이버에서 구현된 기능에 대한 자세한 내용은 Linux 설명서 패키지에 있는 API 문서를 참조한다.
'NXP i.MX SoC Family > i.MX Linux Reference Manual' 카테고리의 다른 글
i.MX Linux Reference Manual - Storage - NAND GPMI Flash (0) | 2022.07.15 |
---|---|
i.MX Linux Reference Manual - Storage - EIM NOR (0) | 2022.07.12 |
i.MX Linux Reference Manual - Storage (0) | 2022.07.12 |
i.MX Linux Reference Manual (0) | 2022.06.28 |
i.MX Linux Reference Manual - Graphics - X Windows Acceleration (0) | 2022.06.27 |