주요 내용으로 건너뛰기

Driver

드라이버 섹션에서는 개발자가 TouchGFX AL의 다양한 책임에 대한 드라이버를 선택할 수 있습니다.

TouchGFX Generator Driver 설정

Application Tick Source

애플리케이션을 발전시킬 수 있는 방법을 정의합니다. 개발자에게는 다음과 같은 옵션이 제공됩니다.

  • LTDC - "Display" 그룹에서 인터페이스로 LTDC가 선택된 경우에는 Application Tick Source가 "LTDC"가 될 수 있습니다. 즉, TouchGFX Generator는 OSWrappers::signalVSync()를 호출하여 애플리케이션을 구동하는 TouchGFXGeneratedHAL 클래스에서 드라이버 함수(LTDC 인터럽트 핸들러)를 생성하게 됩니다.
  • Custom and FMC - 이 경우, 개발자는 OSWrappers::signalVSync()를 반복적으로 호출하여 애플리케이션을 구동하는 핸들러를 구현해야 합니다.
Further reading
맞춤형 애플리케이션 틱 소스를 구현하는 방법에 대한 자세한 내용은 FMC 및 SPI 디스플레이 인터페이스 시나리오를 참조하십시오.

DMA2D Accelerator(ChromART)

DMA2D 그래픽 가속과 관련해 개발자에게 세 가지 옵션이 제공됩니다.

  • No - 애플리케이션이 CPU만 사용해서 렌더링을 합니다.
  • Yes - 애플리케이션이 가능한 경우에 ChromART 칩을 사용해서 픽셀을 이동시켜서 CPU 주기를 확보합니다. 드라이버는 TouchGFX Generator에서 생성되기 때문에 개발자는 어떤 조치도 취할 필요가 없습니다.
  • Custom - TouchGFX Generator는 개발자가 맞춤형 그래픽 가속기에 대해 구현해야 하는 멤버 함수와 함께 TouchGFX Engine의 DMA 인터페이스에서 상속되는 일반 TouchGFX DMA 클래스를 생성합니다.

TouchGFX Generator에서 DMA2D 가속기를 선택할 수 있으려면 STM32CubeMX의 Multimedia 범주에서 이를 활성화해야 합니다.

DMA2D는 이를 지원하는 MCU에 대해 STM32CubeMX의 Multimedia 범주에서 활성화가 되어 있습니다.

TouchGFX Generator에서 생성되는 DMA2D(ChromART) 드라이버는 TransferCompleteInterrupt를 수신하는 두 가지 방법을 지원합니다.

  1. 콜백 함수를 dma2d 핸들 hdma2d.XferCpltCallback에 등록하는 STM32Cube HAL 드라이버를 사용합니다.
  2. DMA2D_IRQHandler() 인터럽트 핸들러를 직접 사용합니다.

DMA2D IP에 대해 STM32CubeMX의 NVIC 설정에서 DMA2D 전역 인터럽트를 활성화 또는 비활성화하는 방법으로 두 방법 간의 전환이 가능합니다.

DMA2D 전역 인터럽트는 STM32CubeMX의 System Core 범주 아래 NVIC 설정에서 활성화/비활성화

전역 인터럽트를 활성화하면 옵션 1)에 대한 코드가 생성되고, 전역 인터럽트를 비활성화하면 옵션 2)에 대한 코드가 생성됩니다.

Note
  • DMA2D에서 전역 인터럽트를 사용할 때는 "IRQ handler"가"DMA2D HAL handler"를 호출하는지 확인합니다. 이것은 기본 동작입니다.
  • 전역 인터럽트가 활성화된 상태에서 DMA2D에 대해 "IRQ handler" 및 "Call HAL handler"를 비활성화하면 등록된 콜백이 호출되지 않습니다..
  • GPU2D Accelerator(NeoChrom)

    GPU2D(NeoChrom)는 텍스처 매핑 및 벡터 렌더링.을 포함해 TouchGFX에서 다수의 그리기 작업을 가속화할 수 있는 그래픽 가속기입니다. RGB565, RGB888 및 ARGB8888 형식의 프레임 버퍼를 지원합니다.

    GPU2D 그래픽 가속과 관련해 개발자에게 두 가지 옵션이 제공됩니다.

    • No - 애플리케이션이 CPU만 사용해서 그리기 작업을 수행합니다.
    • Yes - 애플리케이션이 가능한 경우에 NeoChrom 칩을 사용해서 TouchGFX에서 수행되는 많은 그리기 작업을 가속화합니다. 드라이버는 TouchGFX Generator에서 생성되기 때문에 개발자는 어떤 조치도 취할 필요가 없습니다.

    TouchGFX Generator에서 GPU2D 가속기를 선택할 수 있으려면 STM32CubeMX의 Multimedia 범주에서 이를 활성화해야 합니다.

    GPU2D는 이를 지원하는 MCU에 대해 CubeMX의 Multimedia 범주에서 활성화가 되어 있습니다.

    Note
    GPU2D 옵션은 STM32CubeMX에서 프로젝트의 Multimedia 섹션에 GPU2D가 활성화되어 있는 경우에만 표시됩니다. STM32U599 장치에서만 사용할 수 있으며, Middlewares 섹션에서 ThreadX RTOS가 활성화되어 있거나 베어 메탈 애플리케이션(No OS)을 실행 중인 경우에 TouchGFX에서 사용하는 용도로만 활성화가 가능합니다.

    활성화가 되면 TouchGFX Generator에 새 섹션 (GPU2D Driver)이 나타납니다.

    GPU2D Driver 설정

    GPU2D Command List Size 설정은 GPU2D에서 사용되는 명령 목록의 크기를 바이트 단위로 설정합니다.

    GPU2D Memory Pool Location 설정을 통해 사용자는 GPU2D에서 사용되는 메모리 풀의 위치를 구성할 수 있습니다. 버퍼는 메모리에서 8바이트로 정렬되어야 합니다. 다음 옵션을 사용할 수 있습니다.

    • By Allocation - 링커가 메모리 풀을 8바이트 정렬 주소에 배치하도록 합니다.
    • By Address - 사용자가 메모리 풀의 시작 주소를 정의할 수 있습니다. 입력한 주소가 8바이트로 정렬되지 않은 경우에는 TouchGFX Generator에 오류가 표시됩니다.
    Note
    TouchGFX Generator에서 생성되는 메모리 풀의 총 크기는 Vector Rendering 구성에 따라 다릅니다.
    • Vector Rendering이 Disabled로 설정된 경우, 메모리 풀의 총 크기는 1kb 링 버퍼 + GPU2D 명령 목록 크기 + 5kb 추가 여유 공간이 됩니다.
    • Vector Rendering이 Enabled로 설정된 경우, 메모리 풀의 총 크기는 1kb 링 버퍼 + GPU2D 명령 목록 크기 + (Display Width * Display Height 바이트) + 256바이트 LUT + 512바이드 그래디언트 + 5kb 추가 여유 공간이 됩니다.

    실시간 운영 체제

    개발자는 TouchGFX에서 어떤든 RTOS든 사용할 수 있습니다(심지어 No OS까지도). Abstraction Layer Architecture에서 설명했던 바와 같이, TouchGFX Engine은 OSWrappers 인터페이스를 사용하여 메인 이벤트 루프와 프레임 버퍼(들)를 사용자가 선택한 RTOS와 동기화합니다. 개발자가 TouchGFX Generator에서 운영 체제를 선택하면 선택한 OS의 프리미티브를 통해 내부적으로 동기화를 수행하기 위한 코드가 생성됩니다. 특히 스택 크기를 결정하려면 다른 무엇보다 이전과 마찬가지로 STM32CubeMX를 통해 운영 체제를 구성해야 합니다.

    FreeRTOS(CMSIS OS V1 및 V2) 및 ThreadX(네이티브 미들웨어 또는 Azure RTOS 소프트웨어 팩)는 STM32CubeMX 내부에서 직접 구성이 가능하고, TouchGFX Generator는 작업 정의 및 TouchGFX RTOS 드라이버 모두를 위해 생성된 코드를 사용자에게 제공합니다. TouchGFX Generator는 어떤 CMSIS 호환 RTOS에서든 작동하는 CMSIS V1 및 CMSIS V2 호환 RTOS, ThreadX용 드라이버 및 운영 체제 없이 베어 메탈을 실행하기 위한 드라이버(No OS)를 생성할 수 있습니다.

    No OS

    운영 체제 없이 TouchGFX를 실행하려는 경우에 Middleware and Software Packs 범주에 활성화된 운영 체제가 없거나 STM32CubeMX에서 X-CUBE로 선택된 운영 체제가 없으면 TouchGFX Generator에서 No OS 옵션을 사용할 수 있습니다.

    Further reading
    베어 메탈 애플리케이션을 실행할 때 TouchGFX Generator에서 생성되는 코드에 대한 자세한 내용은 실시간 운영 체제 시나리오를 참조하십시오.

    FreeRTOS

    TouchGFX Generator에서 CMSIS_RTOS_V1 또는 CMSIS_RTOS_V2 가속기를 선택할 수 있으려면 STM32CubeMX의 Middleware and Software Packs 범주에서 FreeRTOS를 활성화해야 합니다.

    STM32CubeMX 프로젝트에서 FreeRTOS가 활성화

    몇몇 TouchGFX Board Setups은 기본적으로 FreeRTOS 미들웨어가 아니라 ThreadX 또는 NoOS를 사용하도록 구성되어 있습니다(예: STM32U599). 이러한 TouchGFX Board Setups에서 여전히 FreeRTOS를 사용하고 싶다면 STM32CubeMX의 Software Packs Components Selector에서 X-CUBE-FreeRTOS 팩을 다운로드하고 이를 활성화해야 합니다.

    Software Packs Components Selector에서 FreeRTOS가 활성화

    Further reading
    TouchGFX 애플리케이션에서 FreeRTOS(MSIS_RTOS_V1 및 CMSIS_RTOS_V2)를 구성하는 방법에 대한 자세한 내용은 실시간 운영 체제 시나리오를 참조하십시오.

    ThreadX

    X-CUBE 소프트웨어 팩을 선택하거나 STM32CubeMX에서 기본 ThreadX 미들웨어를 활성화(선택한 MCU 장치에서 사용 가능한 경우)하는 방법으로 ThreadX를 활성화할 수 있습니다.

    개발자는 ThreadX가 X-CUBE 소프트웨어 팩이나 특정 MCU 제품군을 위한 네이티브 ThreadX 미들웨어로 구성되어 있는지 확인해야 합니다.

    Note
  • 모든 새로운 STM32 MCU 장치는 기본적으로 추가 팩을 다운로드 하지 않고도 STM32CubeMX Middleware 범주에서 직접 ThreadX를 지원합니다. TouchGFX Board Support 패키지는 ThreadX 미들웨어(출시되어 있는 경우) 또는 X-CUBE-AZRTOS 소프트웨어 팩을 사용하는 방향으로 서서히 나아가고 있습니다.
  • ThreadX 지원을 제공하는 X-CUBE-AZRTOS-XX 소프트웨어 패키지는 광범위한 STM32 MCU 제품군을 위해 이미 출시가 되어 있으며, STM32CubeMX의 Embedded Software Packages Manager에서 찾을 수 있습니다.
  • 이후 섹션에서는 애플리케이션의 Middleware 또는 AZRTOS Software Pack으로 ThreadX를 활성화하는 방법을 보여줍니다.

    Middleware and Software Packs 범주에서 ThreadX 활성화

    TouchGFX Generator에서 ThreadX를 선택할 수 있으려면 STM32CubeMX의 Middleware and Software Packs 범주에서 ThreadX를 활성화해야 합니다.

    STM32CubeMX 프로젝트에서 활성화된 Middleware and Software Packs 범주의 ThreadX

    일단 활성화가 되면 TouchGFX Generator에서 ThreadX 옵션을 사용할 수 있게 됩니다.

    Further reading
    ThreadX를 TouchGFX 애플리케이션의 네이티브 미들웨어로서 구성하는 방법에 대한 자세한 내용은 Real Time Operating System 시나리오를 참조하십시오.

    X-CUBE 소프트웨어 팩에서 ThreadX 활성화

    TouchGFX Generator에서 ThreadX를 선택하려면 STM32CubeMX의 Software Packs Component Selector에서 AZRTOS 소프트웨어 팩을 활성화해야 합니다. 프로젝트에서 STM32CubeMX의 프로젝트 메뉴에서 "Select Components" 버튼 또는 Alt + o를 클릭합니다.

    STM32CubeMX에서 추가 소프트웨어 선택

    다음 그림은 프로젝트에서 AZRTOS Software Pack을 활성화하는 방법을 보여줍니다. RTOS ThreadX를 선택하고 Core 확인란을 선택해서 ThreadX를 활성화하십시오. 패키지를 다운로드 및 설치(아직 완료되지 않은 경우)

    X-CUBE-AZRTOS Software Pack에서 ThreadX 활성화

    프로젝트에 ThreadX 소프트웨어 팩을 추가하면 STM32CubeMX의 프로젝트 메뉴 왼쪽에 있는 Middleware and Software Packs 범주 아래에 X-CUBE가 표시됩니다.

    X-CUBE-AZRTOS의 ThreadX가 STM32CubeMX 프로젝트에서 활성화

    ThreadX가 활성화되면 TouchGFX Generator에서도 사용 가능한 옵션이 되고, 이 옵션을 선택하고 나면 Memory Pool SizeMemory Stack Size 값이 나타납니다.

    TouchGFX Generator에서 ThreadX 선택

    이러한 값들은 스레드 리소스를 포함할 수 있을 만큼 충분히 커야 합니다.

    Further reading
    TouchGFX 애플리케이션에서 X-CUBE로 ThreadX를 구성하는 방법에 대한 자세한 내용은 Real Time Operating System 시나리오를 참조하십시오.

    기타 CMSIS 호환 OS

    개발자가 STM32CubeMX가 제공할 수 있는 것과 다른 CMSIS 호환 OS를 요구하는 경우(FreeRTOS 및 ThreadX), RTOS 구성 및 작업 정의를 수동으로 수행해야 합니다. TouchGFX Generator는 개발자가 구현해야 하는 빈 OSWrappers 인터페이스를 생성합니다. 일반적으로 다음과 같은 수동 단계가 필요합니다.

    1. RTOS 구성
    2. OSWrappers 인터페이스 구현
    3. TouchGFX를 실행할 작업 정의(MX_TouchGFX_Process)
    4. 스케줄러 시작

    MX_TouchGFX_Process를 호출하여 작업 핸들러 내에서 TouchGFX Engine 메인 루프 시작

    void MX_TouchGFX_Process(void);