상위 수준 애플리케이션과 통신

RTApps(실시간 지원 애플리케이션)는 메모리의 공유 영역에 매핑되는 링 버퍼를 통해 상위 수준 애플리케이션과 통신합니다.

IntercoreComms 샘플은 RTApps가 상위 수준 애플리케이션과 통신하는 방법을 보여 줍니다. 사용자 고유의 RTApp 통신 코드를 개발하기 위한 시작점으로 IntercoreComms_RTApp_MT3620_BareMetal 샘플을 사용합니다. 상위 수준 애플리케이션에 필요한 코드에 대한 자세한 내용은 실시간 지원 애플리케이션과 통신 을 참조하세요.

중요

레지스터 주소 및 기타 하드웨어 관련 세부 정보에 대한 자세한 내용은 이메일을 보내 "MT3620 M4 프로그래머 가이드"를 요청하세요 Azure.Sphere@avnet.com.

작업

RTApp의 관점에서 볼 때 상위 수준 애플리케이션과의 통신에는 다음과 같은 기본 작업이 포함됩니다.

  • MT3620의 상위 수준 코어와 공유하는 사서함에서 설정 정보 읽기
  • 공유 메모리에 데이터 읽기 및 쓰기

버퍼 크기 및 포인터 초기화

RTApp은 실시간 및 상위 수준 코어가 공유하는 사서함의 세 가지 메시지를 통해 링 버퍼에 대한 정보를 받습니다. 각 메시지에는 명령과 데이터가 포함됩니다. 처음 두 메시지는 애플리케이션이 통신하는 데 사용할 읽기 및 쓰기 버퍼의 기본 주소를 제공합니다. 세 번째 메시지는 버퍼에 대한 설정 정보의 전송이 완료되었음을 나타냅니다.

명령 값 데이터
0xba5e0001 RTApp에 대한 아웃바운드(쓰기) 버퍼 설명자
0xba5e0002 RTApp에 대한 인바운드(읽기) 버퍼 설명자
0xba5e0003 설치 종료

RTApp은 읽기 및 쓰기 버퍼의 크기를 계산하고 버퍼 설명자의 데이터를 기반으로 각 버퍼의 초기 위치에 대한 포인터를 설정합니다.

사서함을 사용하는 방법에 대한 자세한 내용은 IntercoreComms_RTApp_MT3620_BareMetal 샘플을 참조하세요.

버퍼에서 읽고 버퍼에 쓰기

초기화 후 RTApp은 버퍼에서 읽고 버퍼에 쓸 수 있습니다. 통신은 링 버퍼를 사용하여 구현되므로 읽기와 쓰기가 모두 버퍼의 시작 부분으로 래핑될 수 있습니다.

버퍼에서 쓰거나 읽은 메시지는 다음과 같은 구조를 갖습니다.

메시지 헤더 메시지 콘텐츠
구성 요소 ID 예약
16바이트 4바이트
데이터
0-1KB
  • 메시지 헤더의 첫 번째 필드(16바이트)에는 상위 수준 앱의 구성 요소 ID가 포함됩니다.

    RTApp이 상위 수준 앱과의 통신을 시작하는 경우 구성 요소 ID의 처음 3개 세그먼트 각각에서 바이트 순서가 little-endian(가장 중요하지 않은 바이트 먼저)인지 확인합니다. 나머지 두 세그먼트의 바이트 순서는 big-endian이어야 합니다.

    RTApp이 상위 수준 앱의 메시지에 응답하는 경우 원본 메시지의 구성 요소 ID를 응답 메시지의 헤더에 복사하기만 하면 됩니다.

  • 메시지 헤더의 두 번째 필드(4바이트)는 현재 예약되어 있으며 0을 포함해야 합니다.

  • 메시지 헤더는 항상 16 바이트 경계에 정렬됩니다.

  • 현재 메시지 콘텐츠의 크기는 최대 1KB일 수 있습니다.

버퍼에 대한 각 읽기 또는 쓰기 작업 후에 RTApp은 공유 사서함을 사용하여 상위 수준 앱에 메시지를 받거나 전송했음을 알립니다.

애플리케이션 매니페스트 설정

RTApp 및 상위 수준 앱 모두에 대한 애플리케이션 매니페스트는 통신하는 애플리케이션의 구성 요소 ID를 나열해야 합니다. 이 설정을 구성하려면 애플리케이션 매니페스트에 기능을 추가 AllowedApplicationConnections 한 다음 각 구성 요소 ID를 기능에 추가합니다. Azure Sphere 애플리케이션 매니페스트 에는 자세한 내용이 있습니다. 다음은 다른 애플리케이션과 통신하도록 RTApp을 구성하는 애플리케이션 매니페스트에서 발췌한 내용입니다.

"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

파트너 애플리케이션

Azure Sphere 디바이스에 애플리케이션을 로드하는 경우 Azure Sphere 배포 도구는 기본적으로 모든 기존 애플리케이션을 삭제합니다. 서로 통신하는 애플리케이션을 개발할 때 이런 일이 발생하지 않도록 하려면 애플리케이션을 파트너로 표시해야 합니다. 애플리케이션 중 하나를 배포하는 경우 해당 파트너는 삭제되지 않습니다. 자세한 내용은 애플리케이션을 파트너로 표시 를 참조하세요.