STM32H7 Inter-processor communication (4) - Using STM32H7hardware resources

경량 프로세서 간 통신 채널은 STM32H745/755 또는 STM32H747/757 장치에 내장된 사용 가능한 주변 장치를 사용하여 구현할 수 있습니다. 예를 들어, 인터럽트 라인은 이벤트를 알리거나 데이터 가용성을 전달하는 데 사용할 수 있습니다.

DMA 채널과 같은 다른 주변 장치를 사용하여 데이터를 전송하고 한쪽에서 다른 쪽으로 전송 종료 알림을 생성할 수 있습니다. 이 솔루션은 맞춤형 솔루션이며 OpenAMP 또는 FreeRTOS™ 원격 메시징 구현만큼 일반적이지 않습니다.

Hardware semaphore

STM32 마이크로컨트롤러에 구현된 하드웨어 세마포어 주변 장치를 사용하면 두 CPU 간에 알림 및 이벤트 교환을 구현할 수 있습니다(아래 그림 참조). HSEM 주변 장치에서 CPU1 및 CPU2 인터럽트 컨트롤러까지 두 개의 인터럽트 라인을 사용할 수 있습니다. HSEM 알림 기능을 통해 소프트웨어 개발자는 코어 간의 이벤트 교환을 구현할 수 있습니다.

HSEM 주변 장치는 STM32H7 시리즈 제품의 EXTI 컨트롤러에도 연결되며, 이 연결을 통해 CPUy가 저전력 모드에 있는 동안 CPUx에서 CPUy로의 알림을 관리할 수도 있습니다.

HSEM을 사용하여 CPU 간에 간단한 알림 이벤트를 전달하거나 펌웨어 개발자가 공유 메모리 구조에서 새 데이터를 사용할 수 있음을 다른 CPU에서 실행 중인 작업에 표시하는 데 사용할 수 있습니다.

EXTI controller and send-event instruction

STM32H745/755 및 STM32H747/757 라인 장치 아키텍처 및 내부 연결을 통해 소프트웨어 개발자는 알림 메커니즘을 구현할 수 있습니다. CPU1 이벤트 출력 신호(TXEV)는 EXTI 컨트롤러에 연결되어 CPU2에서 인터럽트 또는 이벤트를 트리거할 수 있습니다.

이 연결은 양방향으로 사용할 수 있습니다. 아래 그림과 같이 CPU1에서 CPU2로, CPU2에서 CPU1로. 이벤트 출력 신호는 단순히 펌웨어에서 SEV(send-event instruction)를 실행함으로써 트리거될 수 있습니다. EXTI는 애플리케이션 요구 사항에 따라 TXEV 신호에서 이벤트와 인터럽트를 마스킹 및 마스킹 해제하는 기능을 제공합니다.

참고: CPU1 펄스 지속 시간의 TXEV는 512 AHB 주기와 같으며, 이 지속 시간은 CPU2에서 실행되는 펌웨어에서 고려해야 합니다. 512 AHB 사이클 펄스 지속 시간을 통해 CPU2는 두 CPU 간의 클록 비율에 관계없이 이벤트를 올바르게 래치할 수 있습니다.

DMAs and MDMA

하드웨어 세마포어 주변 장치 및 이벤트 아웃 상호 연결 외에도 DMA 또는 MDMA는 CPU1에서 실행되는 작업과 CPU2에서 실행되는 작업 간의 통신을 구현하는 데 도움이 될 수 있습니다. DMA 메모리 대 메모리 모드는 하나의 CPU SRAM 버퍼에서 공유 버퍼(CPU2용)로 데이터를 복사하는 전송 채널로 작동하고 전송 완료 인터럽트를 사용하여 새 데이터가 공유 버퍼에 기록되었음을 CPU2에 알릴 수 있습니다.

이 방법에서 DMA를 사용하는 이점은 데이터 복사가 DMA에 의해 수행되어 CPU의 부담을 덜어준다는 것입니다. 제품에서 2개 이상의 DMA 컨트롤러를 사용할 수 있으므로 애플리케이션 리소스 분할 중에 프로세서 간 통신을 수행하기 위해 전용 채널을 정의할 수 있습니다.

<계속>