Azure Sphere 애플리케이션 개요
Azure Sphere 디바이스는 다음 두 가지 유형의 애플리케이션을 실행할 수 있습니다.
- Azure Sphere OS에서 컨테이너화된 상위 수준 애플리케이션 실행
- 실시간 지원 애플리케이션(RTApps)은 운영 체제 미설치 또는 실시간 코어의 RTOS(실시간 운영 체제)에서 실행됩니다.
모든 Azure Sphere 디바이스에 상위 수준 애플리케이션이 필요합니다. RTApps는 선택 사항입니다.
상위 수준 애플리케이션
모든 Azure Sphere 디바이스에는 Azure Sphere OS에서 실행되고 애플리케이션 라이브러리를 사용할 수 있는 상위 수준 애플리케이션이 있습니다. 상위 수준 애플리케이션은 다음을 수행할 수 있습니다.
GPIO(범용 입력/출력) 핀, UART(유니버설 비동기 수신기/송신기) 및 기타 인터페이스와 같은 Azure Sphere 주변 장치 구성 및 상호 작용
RTApps와 통신
인터넷 및 클라우드 기반 서비스와 통신
인증서 기반 인증을 통해 다른 디바이스 및 서비스와의 트러스트 관계 브로커
Azure Sphere란?에 설명된 대로 상위 수준 애플리케이션은 Normal World 사용자 모드의 컨테이너에서 실행됩니다. 애플리케이션 컨테이너는 POSIX 환경의 하위 집합과 Azure Sphere OS와 관련된 Applibs(애플리케이션 라이브러리) 집합을 지원합니다. 상위 수준 애플리케이션에서 사용할 수 있는 라이브러리 및 함수는 플랫폼이 안전하게 유지되고 쉽게 업데이트될 수 있도록 제한됩니다. 애플리케이션은 Microsoft에서 제공하는 라이브러리 및 런타임 서비스에만 액세스할 수 있습니다. 다른 제약 조건 중에서도 직접 파일 I/O 또는 셸 액세스를 사용할 수 없습니다. 개발 환경 은 기본 API 집합을 설명하고 디바이스별 기능을 지원하는 Azure Sphere 애플리케이션 라이브러리를 소개합니다.
상위 수준 애플리케이션은 지속적으로 실행되어야 하며 중지 또는 실패할 경우 자동으로 다시 시작됩니다.
고급 애플리케이션 만들기는 기능에 대한 자세한 정보를 제공합니다.
실시간 지원 애플리케이션
또한 Azure Sphere 디바이스에는 상위 수준 애플리케이션 외에도 하나 이상의 실시간 지원 애플리케이션이 있을 수 있습니다. RTApp은 다음을 수행할 수 있습니다.
- GPIO 핀 및 UART와 같은 Azure Sphere MCU에 통합된 주변 장치 구성 및 상호 작용
- 상위 수준 애플리케이션과 통신
RTApps는 운영 체제 미설치 또는 RTOS(실시간 운영 체제)에서 실행할 수 있습니다. GitHub의 Azure Sphere 샘플 리포지토리에는 운영 체제 미설치 HelloWorld 샘플 과 상위 수준 및 RTApps 간의 코어 간 통신 을 보여 주는 샘플이 포함되어 있습니다. GitHub의 Azure 샘플 리포지토리에는 Azure RTOS에서 Azure Sphere를 사용하는 방법을 보여 주는 샘플이 포함되어 있습니다.
MT3620 칩의 M4 실시간 코어를 대상으로 하는 RTApps에 대한 추가 드라이버 및 샘플은 Azure Sphere 파트너 MediaTek 및 Codethink의 GitHub에서 사용할 수 있습니다.
각 RTApp은 특정 I/O 코어에서 격리되어 실행되며 상위 수준 애플리케이션과만 통신할 수 있습니다. 인터넷, Azure Sphere applibs 또는 Azure Sphere OS의 다른 기능을 사용할 수 없습니다.
실시간 지원 애플리케이션 만들기 는 RTApps의 기능 및 개발 프로세스에 대한 자세한 정보를 제공합니다.
모든 애플리케이션에 공통적인 기능
상위 수준 앱과 RTApps 간의 상당한 차이점에도 불구하고 모든 Azure Sphere 애플리케이션에는 몇 가지 공통점이 있습니다. Visual Studio 또는 Visual Studio Code 사용하거나 CLI를 사용하여 CMake 및 Ninja를 호출하여 두 유형의 애플리케이션을 개발, 빌드 및 디버그할 수 있습니다.
또한 다음 보안 기능은 상위 수준 및 RTApps 모두에 적용됩니다.
애플리케이션 기능
실행 위치에 관계없이 모든 Azure Sphere 애플리케이션은 무단 또는 예기치 않은 사용을 방지하기 위해 필요한 외부 서비스 및 인터페이스(예: I/O 및 네트워크 요구 사항)를 지정해야 합니다.
애플리케이션 기능은 애플리케이션 에 필요한 리소스입니다. 애플리케이션 기능에는 애플리케이션에서 사용하는 주변 장치, 상위 수준 애플리케이션이 연결하는 인터넷 호스트 및 네트워크 구성을 변경할 수 있는 권한이 포함됩니다. 모든 애플리케이션에는 이러한 리소스를 식별하는 애플리케이션 매니페스트 가 있어야 합니다.
디바이스 기능
디바이스 기능을 사용하면 디바이스별 작업을 수행할 수 있습니다. 디바이스 기능은 Azure Sphere Security Service에서 부여합니다. 기본적으로 Azure Sphere 칩에는 디바이스 기능이 없습니다. 디바이스 기능의 두 가지 기본 유형은 appDevelopment 디바이스 기능 및 fieldServicing 디바이스 기능입니다.
appDevelopment 디바이스 기능은 디바이스가 신뢰하는 서명 유형을 변경합니다. 기본적으로 Azure Sphere 디바이스는 프로덕션 서명된 이미지 패키지를 신뢰하지만 SDK 서명된 이미지 패키지를 신뢰하지 않습니다. 따라서 이 기능이 없는 Azure Sphere 디바이스에 SDK 서명 이미지 패키지를 사이드로드할 수 없습니다. 그러나 appDevelopment 기능이 있으면 디바이스는 SDK 서명된 이미지 패키지를 신뢰합니다. 또한 디바이스에서 애플리케이션을 시작, 중지, 디버그 또는 제거할 수 있습니다. 요약하자면, 애플리케이션 개발 기능은 디바이스에 있어야 다음을 수행할 수 있습니다.
- Visual Studio 또는 azsphere image-package 명령을 통해 빌드된 이미지 패키지를 테스트용으로 로드합니다.
- 이미지 패키지 서명 방법에 관계없이 Azure Sphere 디바이스에서 이미지 패키지를 시작, 중지, 디버그 또는 제거합니다.
az sphere device enable-development 명령은 appDevelopment 기능을 만들고 적용하며 디바이스가 클라우드 애플리케이션 업데이트를 받지 못하도록 합니다.
fieldServicing 기능은 DeviceComplete 제조 상태에 있는 디바이스에서 디바이스-컴퓨터 통신을 허용합니다. 이 기능을 사용하면 프로덕션 서명된 이미지를 테스트용으로 로드할 수 있지만 삭제할 수는 없습니다. 애플리케이션을 시작하고 중지할 수 있지만 디버그할 수는 없습니다. Wi-Fi 구성과 같은 일상적인 유지 관리 작업을 수행할 수도 있습니다. 서비스 세션 중에 단기적으로 사용하기 위한 것으로, 작업별로 디바이스에 대한 액세스 권한이 부여되는 제한된 기간입니다.
서명 및 배포 요구 사항
Azure Sphere 디바이스에 배포된 모든 이미지 패키지에 서명해야 합니다. Azure Sphere SDK 및 az sphere image-package 명령은 SDK 서명 키를 사용하여 테스트할 이미지 패키지에 서명합니다. Azure Sphere 디바이스는 appDevelopment 디바이스 기능도 있는 경우에만 이 키를 신뢰합니다.
Azure Sphere Security Service 프로덕션은 이미지 패키지를 클라우드에 업로드할 때 이미지 패키지에 서명합니다. 프로덕션 서명된 이미지 패키지는 클라우드에서 테스트용으로 로드하거나 로드할 수 있습니다.
악성 소프트웨어의 설치를 방지하기 위해 애플리케이션은 다음 두 가지 방법으로 Azure Sphere 디바이스에 로드할 수 있습니다.
테스트 및 소프트웨어 개발 및 디바이스의 현장 서비스에 모두 사용할 수 있는 사이드로드입니다. 소프트웨어 개발 및 테스트를 위한 사이드로드에는 appDevelopment 디바이스 기능이 필요합니다. 필드 서비스를 위해 사이드로드하려면 fieldServicing 디바이스 기능 및 프로덕션 서명 이미지 패키지가 필요합니다. Visual Studio와 Visual Studio Code 개발 및 디버깅 중에 애플리케이션을 테스트용으로 로드합니다. Azure CLI를 사용하여 수동으로 테스트용으로 로드할 수도 있습니다.
클라우드 업데이트는 Azure Sphere Security Service에서만 수행할 수 있습니다. Azure CLI를 사용하여 클라우드 배포를 만들고 관리합니다.
파트너 애플리케이션
함께 작동하는 애플리케이션은 파트너 애플리케이션 으로 간주한 다음 별도로 테스트용으로 로드할 수 있습니다. 파트너가 있는 애플리케이션을 테스트용으로 로드하는 경우 파트너 애플리케이션이 이미 배포된 경우 Azure Sphere 디바이스에 남아 있습니다. 각 애플리케이션은 프로젝트 구성에서 파트너 목록을 선언합니다.
CMake 프로젝트 구성에 파트너를 추가하려면 launch.vs.json 또는 .vscode/launch.json 파일의 구성 섹션에 있는 partnerComponents 필드에서 파트너 앱의 구성 요소 ID를 지정합니다.
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
서로 통신하는 상위 수준 앱 및 RTApps는 파트너로 식별되어야 합니다. Azure Sphere는 상위 수준 앱 쌍 또는 RTApps 쌍 간의 통신을 지원하지 않습니다.