고급 애플리케이션과 통신
Important
Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.
RTApp(실시간 지원 애플리케이션)은 메모리의 공유 영역에 매핑되는 링 버퍼를 통해 상위 수준 애플리케이션과 통신합니다.
IntercoreComms 샘플은 RTApp이 상위 수준 애플리케이션과 통신하는 방법을 보여줍니다. IntercoreComms_RTApp_MT3620_BareMetal 샘플을 고유한 RTApp 통신 코드를 개발하기 위한 시작점으로 사용합니다. 상위 수준 애플리케이션에 필요한 코드에 대한 정보는 실시간 지원 애플리케이션과 통신을 참조하세요.
Important
레지스터 주소 및 기타 하드웨어 관련 세부 정보에 대한 자세한 내용은 이메일로 "MT3620 M4 프로그래머 가이드"를 요청하세요 Azure.Sphere@avnet.com.
연산
RTApp의 관점에서 볼 때 상위 수준 애플리케이션과의 통신에는 다음과 같은 기본 작업이 포함됩니다.
- MT3620의 상위 수준 코어와 공유하는 사서함에서 설정 정보 읽기
- 공유 메모리에 데이터 읽기 및 쓰기
버퍼 크기 및 포인터 초기화
RTApp은 실시간 및 상위 수준 코어가 공유하는 사서함의 세 가지 메시지를 통해 링 버퍼에 대한 정보를 받습니다. 각 메시지에는 명령과 데이터가 포함되어 있습니다. 처음 두 메시지는 애플리케이션이 통신하는 데 사용할 읽기 및 쓰기 버퍼의 기본 주소를 제공합니다. 세 번째 메시지는 버퍼에 대한 설치 정보의 전송이 완료되었음을 나타냅니다.
명령 값 | 데이터 |
---|---|
0xba5e0001 | RTApp에 대한 아웃바운드(쓰기) 버퍼 설명자 |
0xba5e0002 | RTApp에 대한 인바운드(읽기) 버퍼 설명자 |
0xba5e0003 | 설치 종료 |
RTApp은 읽기 및 쓰기 버퍼의 크기를 계산하고 버퍼 설명자의 데이터를 기반으로 각 버퍼의 초기 위치에 대한 포인터를 설정합니다.
사서함을 사용하는 방법에 대한 자세한 내용은 IntercoreComms_RTApp_MT3620_BareMetal 샘플을 참조하세요.
버퍼에서 읽고 버퍼에 쓰기
초기화 후 RTApp은 버퍼에서 읽고 쓸 수 있습니다. 통신이 링 버퍼를 사용하여 구현되므로 읽기 및 쓰기가 모두 버퍼의 시작 부분으로 래핑될 수 있습니다.
버퍼에 쓰거나 버퍼에서 읽은 메시지는 다음과 같은 구조를 갖습니다.
메시지 헤더 | 메시지 콘텐츠 | ||||||
---|---|---|---|---|---|---|---|
|
|
메시지 헤더의 첫 번째 필드(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 배포 도구는 기본적으로 기존 애플리케이션을 모두 삭제합니다. 서로 통신하는 애플리케이션을 개발할 때 이러한 문제가 발생하지 않도록 하려면 애플리케이션을 파트너로 표시해야 합니다. 애플리케이션 중 하나를 배포하는 경우 해당 파트너는 삭제되지 않습니다. 자세한 내용은 애플리케이션을 파트너로 표시를 참조하세요.