다음을 통해 공유


디바이스 기능 및 통신

디바이스 기능은service-UART 통신에 대한 디바이스별 OS 정책을 결정합니다. 호스트 컴퓨터와 연결된 디바이스 간의 모든 통신은 서비스 UART를 통해 진행됩니다. 호스트 컴퓨터는 연결된 디바이스와 통신하여 디바이스에서 작업을 수행합니다. 제조업체, 소프트웨어 개발자 및 현장 서비스 기술자는 기능을 사용하여 디바이스가 악의적인 사용자로부터 보호되도록 하면서 필요한 작업에 대한 service-UART 통신의 잠금을 해제합니다.

디바이스 제조업체 및 OEM은 디바이스에 물리적으로 액세스할 수 있는 사용자의 무단 사용을 방지하기 위해 service-UART 통신을 잠글 수 있습니다. 이러한 통신을 잠그는 것은 디바이스 종료의 일부입니다. 종료 후 사용자는 디바이스의 ID를 가져올 수 있지만 그 이상은 가져올 수 없습니다. 다른 모든 작업에는 디바이스 기능이 필요합니다. 최종화는 일반적으로 제조업체가 디바이스를 고객 사이트로 배송하기 전에 공장 현장에서 수행됩니다.

디바이스 기능 파일에는 단일 디바이스에 대해서만 0개 이상의 기능이 포함되어 있습니다. 기능 파일이 의도된 디바이스가 아닌 디바이스에 적용된 경우 작동하지 않습니다. 디바이스에는 다음 기능이 있을 수 있으며, 각 기능은 이 항목의 뒷부분에 설명되어 있습니다.

참고

디바이스 기능은 애플리케이션 기능과 관련이 없습니다. 애플리케이션 기능은 런타임에 애플리케이션에 필요한 리소스를 지정합니다. 애플리케이션 기능에 대한 자세한 내용은 애플리케이션 매니페스트 를 참조하세요.

디바이스 기능 또는 제조 상태를 확인하는 방법

연결된 디바이스에 저장된 기능 구성을 확인하려면 azsphere device capability show-attached 명령을 사용합니다. 명령은 기능 파일을 사용하여 구성된 기능과 보드에 기본적으로 존재하는 일부 기능을 표시하지만 전부는 아닙니다. 디바이스 기능이 필요한 azsphere 명령의 전체 목록은 CLI 개요의 표를 참조하세요.

디바이스 기능은 디바이스의 제조 상태에 영향을 받을 수 있습니다. 디바이스의 제조 상태를 확인하려면 azsphere device manufacturing-state show 명령을 사용합니다. 명령에서 디바이스가 DeviceComplete 제조 상태에 있거나 를 반환 Device access is forbidden하는 경우 service-UART 통신이 잠겨 있으며 컴퓨터에서 디바이스와 통신하려면 디바이스 기능이 필요합니다. 디바이스가 DeviceComplete 제조 상태에 있는 경우 디바이스가 기능 파일을 통해 잠금 해제된 경우에만 제조 작업이 허용됩니다.

참고

고객 사이트에 디바이스를 설치하는 경우 설치 전에 디바이스가 DeviceComplete 제조 상태로 완료되었는지 확인해야 합니다. Azure Sphere 디바이스 완료를 참조하세요.

DeviceComplete manufacuring 상태는 일반적으로 개발 키트에 적합하지 않습니다. 제조 엔지니어가 개발 중인 제조 작업의 테스트를 사용하도록 설정하려면 개발 키트가 제조 상태 또는 Module1Complete 제조 상태에 있어야 합니다.

디바이스가 기능을 획득하는 방법

디바이스는 다음 세 가지 방법 중 하나로 기능을 획득할 수 있습니다.

  • 기본적으로 열립니다. 비어 있는 제조 상태 또는 Module1Complete 제조 상태에 있는 디바이스에는 기본적으로 열려 있는 몇 가지 기능이 있습니다. 이 작업은 디바이스 기능 파일을 사용하여 기능 잠금을 해제하는 프로세스에서 요구하는 대로 제조 단계에 있는 디바이스를 클라우드에 연결하거나 테넌트로 클레임할 필요가 없도록 수행됩니다. 제조가 진행됨에 따라 제조업체는 공장 현장 작업에 설명된 대로 더 이상 적절하지 않은 기능을 잠그도록 디바이스의 제조 상태를 변경할 수 있습니다.

  • 디바이스에 사이드로드됩니다. 디바이스에는 호스트 컴퓨터에서 디바이스에 테스트용으로 로드된 기능 파일이 있을 수 있습니다. azsphere device capability download 명령을 사용하여 기능 파일을 검색합니다. 이 테스트용으로 로드된 기능 집합은 새 기능 파일(기능이 없는 빈 파일일 수 있음)이 사이드로드될 때까지 유지됩니다. 예를 들어 azsphere device enable-development 명령이 실행되는 경우와 같이 애플리케이션 개발 중에 일반적인 상황입니다. 애플리케이션 개발은 개발자가 디버깅과 같은 작업을 수행하고 테스트용으로 로드된 버전의 애플리케이션을 쉽게 삭제하고 배포할 수 있는 잠금 해제된 상태로 디바이스를 설정하여 지원됩니다.

  • 각 작업을 사용하여 디바이스에 전달됩니다. 디바이스는 작업별로 로컬로 선택한 기능을 적용할 수 있습니다. azsphere device capability select 명령은 호스트 컴퓨터에 로컬로 저장된 기능 파일을 선택합니다. 이 명령을 실행하면 선택한 기능이 각 후속 명령을 사용하여 컴퓨터에서 디바이스로 전달됩니다. 기능이 디바이스가 아닌 컴퓨터에 저장되므로 필드에 있는 디바이스에 기능을 사용하는 것이 좋습니다. 기능을 제거하는 것을 잊어버리고 실수로 디바이스를 안전하지 않은 상태로 남겨두는 현장 엔지니어의 위험은 피할 수 있습니다.

기능 파일을 디바이스에 사이드로드하거나 작업을 통해 디바이스에 전달하려면 제조 후 디바이스 변경에 설명된 대로 AS3(Azure Sphere Security Service)에서 다운로드해야 합니다. 다운로드한 기능 파일은 디바이스별로 다릅니다. 다운로드한 후에는 연결된 디바이스에서 기능 파일을 반복적으로 사용할 수 있습니다.

enableRfTestMode 기능

enableRfTestMode 기능은 디바이스의 제조 상태가 비어 있는 경우 기본적으로 디바이스에 있습니다. 이 기능을 사용하면 e-fuses를 프로그래밍하고 RF 작업의 구성 및 테스트를 수행할 수 있습니다. 테넌트 소유자가 이 기능을 호스트 컴퓨터에 다운로드할 수 없습니다. 이 기능이 필요한 경우 Microsoft 담당자에게 문의하세요.

디바이스의 제조 상태가 비어 있는 경우 azsphere device capability show-attached 명령은 enableRfTestMode 기능을 표시합니다.

appDevelopment 기능

appDevelopment 디바이스 기능은 service-UART 통신의 잠금을 해제하고 디바이스가 신뢰하는 서명 유형을 변경합니다. 애플리케이션 개발 중에 사용하기 위한 것입니다.

기본적으로 Azure Sphere 디바이스는 Azure Sphere Security Service에서 다운로드한 프로덕션 서명 이미지 패키지를 신뢰하지만 SDK 서명된 이미지 패키지를 신뢰하지 않습니다. 따라서 디바이스에 appDevelopment 기능이 없는 한 SDK를 사용하여 이미지 패키지를 만들고 디버깅을 위해 Azure Sphere 디바이스에 사이드로드할 수 없습니다. appDevelopment 기능을 사용하면 디바이스에서 이미지 패키지를 신뢰하고 디바이스에서 애플리케이션을 시작, 중지, 디버그 또는 제거할 수 있습니다.

요약하면 appDevelopment 기능은 service-UART 통신의 잠금을 해제하여 다음 작업을 허용합니다.

  • Visual Studio, Visual Studio Code, CLI 또는 azsphere image-package 명령을 사용하여 빌드된 이미지 패키지를 테스트용으로 로드합니다.

  • 이미지 패키지 서명 방법에 관계없이 Azure Sphere 디바이스에서 이미지 패키지를 시작, 중지, 디버깅 또는 제거합니다.

appDevelopment 기능을 추가하려면 azsphere device enable-development 명령을 사용합니다. 이 명령은 연결된 디바이스에 대한 appDevelopment 기능을 다운로드하고, 기능을 디바이스에 사이드로드하고, 디바이스를 기본 개발 디바이스 그룹으로 이동합니다. 다른 디바이스 그룹을 지정하려면 매개 변수를 --device-group 포함합니다.

azsphere device enable-development를 사용하는 경우 명시적으로 잠글 때까지 디바이스가 잠금 해제된 상태로 유지됩니다. 디바이스를 다시 차단하려면 azsphere device enable-cloud-test 명령을 사용합니다. 이 명령은 제공된 명령줄 매개 변수에 따라 기능을 제거하고 디바이스 그룹을 변경합니다.

azsphere device enable-developmentazsphere device enable-cloud-test 명령은 각각 개발 및 디버깅을 위해 또는 클라우드 배포를 위해 디바이스를 준비하는 일련의 작업을 수행합니다. 이러한 명령을 사용하는 대신 azsphere device capability 명령을 사용하여 디바이스 기능을 다운로드하거나 업데이트하거나 디바이스에 현재 있는 기능을 확인할 수 있습니다.

fieldServicing 기능

fieldServicing 기능은 디바이스에 비어 있거나Module1Complete의 제조 상태가 있는 경우 기본적으로 디바이스에 있습니다. 디바이스가 DeviceComplete 제조 상태에 있는 경우 fieldServicing 기능을 사이드로드할 수 있지만 일반적으로 서비스 세션 중에 각 작업을 사용하여 디바이스에 전달됩니다. 서비스 세션을 시작하는 방법에 대한 자세한 내용은 제조 후 디바이스 변경 을 참조하세요.

디바이스의 제조 상태에 관계없이 fieldServicing 기능은 service-UART 통신을 잠금 해제하여 다음 작업을 허용합니다.

  • 프로덕션 서명된 이미지 패키지를 테스트용으로 로드합니다.
  • 임시로 표시된 프로덕션 서명 이미지 패키지를 시작, 중지 및 삭제합니다.
  • Wi-Fi 구성과 같은 일상적인 유지 관리 작업을 수행합니다.

디바이스의 제조 상태가 Blank 또는 Module1Complete인 경우 fieldServicing 기능은 기본적으로 디바이스에 있지만 azsphere device capability show-attached 명령은 fieldServicing 기능을 표시하지 않습니다.

최신 신뢰할 수 있는 키 저장소에 대한 종속성

AS3에서 기능 파일을 만들면 현재 이미지 서명 키를 사용하여 서명됩니다. 각 디바이스에는 해당 키가 유지되는 OS의 일부로 신뢰할 수 있는 키 저장소가 있습니다. 그러나 디바이스가 인터넷에 연결되어 있지 않은 경우 해당 디바이스의 신뢰할 수 있는 키 저장소가 만료된 경우 대상으로 하는 디바이스에서 기능을 신뢰할 수 없습니다.

이 문제를 해결하기 위해 한 가지 방법은 디바이스가 신뢰할 수 있는 키 저장소를 업데이트하도록 인터넷에 연결할 수 있도록 하는 것입니다. 디바이스를 인터넷에 연결 하고 Reset 키를 눌러 OS 업데이트를 트리거합니다.

이것이 불가능한 경우 업데이트된 신뢰할 수 있는 키 저장소를 테스트용으로 로드할 수 있습니다. 이렇게 하려면 사용 조건에 동의한 다음 최신 OS 복구 이미지를 다운로드하고 이 zip 파일에서 "trusted-keystore.bin" 파일만 추출합니다. 그런 다음 azsphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> 명령을 사용하여 신뢰할 수 있는 키 저장소를 테스트용으로 로드할 수 있으며 이제 디바이스에서 기능을 신뢰할 수 있어야 합니다.

세 번째 방법은 최신 신뢰할 수 있는 키 저장소를 포함하여 Azure Sphere OS를 최신 릴리스 버전으로 업데이트하는 시스템 소프트웨어 복구 입니다.