Embedded : : Arm Architecture/: : Peripheral

PCIe Interrupt

Jay.P Morgan 2024. 11. 12. 02:26

 

  1. PCIe Interrupt

 

PCIe는 RC를 통해 EP에서 발생하는 인터럽트를 전달하는데 다음 두가지 방법을 사용한다.

 

  1.  Legacy PCI Interrupt

System host에서 제어함, Pci bus는 physical layer로 정의 되어있다. (INTA#, INTB#, INTC#, INTD#)

 

 

  2.  Message Signal Interrupt (MSI)

메모리에 바로 TLP를 쓰기 때문에 미리 메모리 위치를 결정하고 쓴다.

 

 

 

 

  2.  Legacy Interrupt와  MSI 발생 프로세스

 

만약 PCI device#3이 인터럽트를 생성하는 디바이스라고 가정하고 device#1과 같은 IRQ를 공유한다면

 

 

 

  2.1  Legacy Interrupt (pin based interrupts)

1. 장치는 INTx# 핀 중 하나를 지정해 레거시 인터럽트를 생성한다.

2. CPU는 인터럽트를 인지하고 ISR을 호출하여 장치 1을 폴링한다.

3. CPU는 ISR을 호출하여 장치#3을 폴링한다. ISR은 장치가 중단되는 것을 확인한다.

4. ISR은 장치 서비스를 위해 다른 조치를 한다.

 

 

 

  2.2  MSI (memory write access)

1. Device는 memory write upstream에 interrupt를 보내기 위해 신호를 생성한다.

2. CPU는 인터럽트를 확인하고 device#3에 ISR을 호출한다. 핸들러는 MSI 벡터를 이용하여 장치가 중단 된 이유를 알고 있다.

3. ISR은 장치 서비스를 위해 조치를 한다.

MSI handling driver function : pci_alloc_irq_vectors(struct pci_dev *dev~~)

 

 

Irq interrupt > 00h~ffh 총 256개 인터럽트 정의 가능

PCIe 주소와 interrupt-map-mask와 비트 마스크 연산하여 IRQ번호를 알 수 있다.

이런 인터럽트들은 PCI 디바이스들이 트리거 할 수 있는 인터럽트와 혼합하면 안된다.

'Embedded : : Arm Architecture > : : Peripheral' 카테고리의 다른 글

PCIe 용어와 특징  (0) 2024.11.12
PCIe states  (0) 2024.11.12
DSI / CSI  (0) 2024.11.07
MCU : DIE, PAD, Drive Strength, Pad Level, Hysteresis  (0) 2024.05.04
UART / I2C / SPI  (0) 2023.11.13