파트너 애플리케이션 빌드 및 배포
이 섹션에서는 Azure Sphere 파트너 애플리케이션을 빌드, 패키지 및 배포하는 방법을 설명합니다.
이러한 지침에서는 IntercoreComms 샘플 애플리케이션을 예로 사용합니다.
필수 구성 요소
- 컴퓨터에 Azure Sphere 디바이스 연결
- Azure Sphere 설치
- Visual Studio Code 또는 CLI를 사용하는 경우 GNU Arm Embedded 도구 체인을 설치합니다.
- 아직 수행하지 않은 경우 전용 UART의 출력을 표시하도록 하드웨어 설정
개발 및 디버깅 사용
Azure Sphere 디바이스에서 샘플 애플리케이션을 빌드하거나 새 애플리케이션을 개발하려면 먼저 개발 및 디버깅을 사용하도록 설정해야 합니다. 기본적으로 Azure Sphere 디바이스는 "잠김"입니다. 즉, 개발 중인 애플리케이션이 PC에서 로드되는 것을 허용하지 않으며 애플리케이션의 디버깅을 허용하지 않습니다. 디버깅을 위해 디바이스를 준비하면 이 제한이 제거되고 디버깅에 필요한 소프트웨어가 로드되고 디바이스 기능이 잠금 해제됩니다 .
실시간 코어를 디버그하려면 az sphere device enable-development 명령을 사용합니다. 이 명령은 디버깅을 위해 PC의 애플리케이션을 허용하도록 디바이스를 구성하고 클라우드 애플리케이션 업데이트를 허용하지 않는 개발 디바이스 그룹에 디바이스를 할당합니다. 애플리케이션 개발 및 디버깅 중에는 클라우드 애플리케이션 업데이트가 개발 중인 애플리케이션을 덮어쓰지 않도록 디바이스를 이 그룹에 남겨 두어야 합니다.
Windows에서는 디버깅 서버와 각 코어 유형에 필요한 드라이버를 디바이스에 로드하는 매개 변수를 추가 --enable-rt-core-debugging
해야 합니다.
아직 로그인하지 않은 경우 Azure Sphere에 로그인합니다.
az login
관리자 권한으로 PowerShell 또는 Windows 명령 프롬프트를 사용하여 명령줄 인터페이스를 엽니다. 매개 변수는
--enable-rt-core-debugging
디버거용 USB 드라이버를 설치하기 때문에 관리자 권한이 필요합니다.다음 명령을 입력합니다.
az sphere device enable-development --enable-rt-core-debugging --catalog <CatalogName> --resource-group <ResourceGroupName>
관리자 권한이 더 이상 필요하지 않으므로 명령이 완료된 후 창을 닫습니다. 모범 사례로 항상 작업을 수행할 수 있는 가장 낮은 권한을 사용해야 합니다.
az sphere device enable-development 명령이 실패하는 경우 도움말은 Azure Sphere 문제 해결을 참조하세요.
개발 및 디버깅 사용
Azure Sphere 디바이스에서 샘플 애플리케이션을 빌드하거나 새 애플리케이션을 개발하려면 먼저 개발 및 디버깅을 사용하도록 설정해야 합니다. 기본적으로 Azure Sphere 디바이스는 "잠김"입니다. 즉, 개발 중인 애플리케이션이 PC에서 로드되는 것을 허용하지 않으며 애플리케이션의 디버깅을 허용하지 않습니다. 디버깅을 위해 디바이스를 준비하면 이 제한이 제거되고 디버깅에 필요한 소프트웨어가 로드되고 디바이스 기능 및 통신에 설명된 대로 디바이스 기능이 잠금 해제됩니다.
실시간 코어를 디버그하려면 az sphere device enable-development 명령을 사용합니다. 이 명령은 디버깅을 위해 PC의 애플리케이션을 허용하도록 디바이스를 구성하고 클라우드 애플리케이션 업데이트를 허용하지 않는 개발 디바이스 그룹에 디바이스를 할당합니다. 애플리케이션 개발 및 디버깅 중에는 클라우드 애플리케이션 업데이트가 개발 중인 애플리케이션을 덮어쓰지 않도록 디바이스를 이 그룹에 남겨 두어야 합니다.
Windows에서는 디버깅 서버와 각 코어 유형에 필요한 드라이버를 디바이스에 로드하는 매개 변수를 추가 --enable-rt-core-debugging
해야 합니다.
아직 로그인하지 않은 경우 Azure에 로그인합니다.
az login
관리자 권한이 있는 PowerShell, Windows 명령 프롬프트 또는 Linux 명령 셸을 사용하여 명령줄 인터페이스를 엽니다. 매개 변수는
--enable-rt-core-debugging
디버거용 USB 드라이버를 설치하기 때문에 관리자 권한이 필요합니다.다음 명령을 입력합니다.
az sphere device enable-development --enable-rt-core-debugging
관리자 권한이 더 이상 필요하지 않으므로 명령이 완료된 후 창을 닫습니다. 모범 사례로 항상 작업을 수행할 수 있는 가장 낮은 권한을 사용해야 합니다.
다음 오류 메시지와 함께 az sphere device enable-development 명령이 실패하는 경우 Azure Sphere 문제 해결 을 참조하세요.
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.
Visual Studio를 사용하여 파트너 앱 빌드
장치가 USB로 PC에 연결되어 있는지 확인합니다. 시작 항목 설정 메뉴에서 Azure Sphere 앱(모든 코어)을 선택합니다. 여기서 Azure Sphere 앱은 최상위 프로젝트의 이름이거나 F5 키를 누릅니다.
프로젝트를 빌드하라는 메시지가 표시되면 예를 선택합니다. Visual Studio는 파트너 애플리케이션을 컴파일하고, 이미지 패키지를 만들고, 보드에 사이드로드 하고, 디버그 모드에서 시작합니다. 테스트용 로드 는 애플리케이션이 클라우드를 통해 전달되지 않고 유선 연결을 통해 PC에서 직접 전달됨을 의미합니다.
출력>표시 출력 보기>: 빌드 출력의 경로를 확인합니다. 이 경로는 PC의 출력 이미지 패키지 위치를 나타냅니다. 배포를 만들 준비가 되면 이미지 패키지의 경로를 알아야 합니다.
기본적으로 출력 창에는 디바이스 출력의 출력 이 표시됩니다. 디버거의 메시지를 보려면 출력 표시: 드롭다운 메뉴에서 디버그를 선택합니다. Windows 디버그>메뉴를 통해 프로그램 디스어셈블리, 레지스터 또는 메모리를 검사할 수도 있습니다.
Visual Studio Code 사용하여 파트너 앱 빌드
파트너 애플리케이션이 포함된 폴더를 엽니다. Visual Studio Code 작업 영역 파일을 검색하고 작업 영역을 열 것인지 묻습니다. 작업 영역 열기를 선택하여 실시간 애플리케이션과 상위 수준 애플리케이션을 한 번에 모두 엽니다.
두 CMakeLists.txt 파일 중 하나를 마우스 오른쪽 단추로 클릭하고 모든 프로젝트 빌드를 선택합니다.
Visual Studio Code 작업 표시줄에서 실행 아이콘을 클릭합니다.
화면 왼쪽 창 맨 위에 표시되는 풀다운 메뉴에서 Azure Sphere Apps(gdb)(작업 영역) 시작을 선택합니다.
F5 키를 눌러 프로젝트를 빌드하고 디버그합니다. 프로젝트가 이전에 빌드되지 않았거나 파일이 변경되고 다시 빌드가 필요한 경우 디버깅이 시작되기 전에 Visual Studio Code 프로젝트를 빌드합니다.
Visual Studio Code 애플리케이션을 빌드하고, 이미지 패키지를 만들고, 보드에 배포하고, 디버그 모드에서 시작할 때까지 몇 초 정도 기다립니다. 출력 창에 상태 업데이트가 표시됩니다.
먼저 CMake는 애플리케이션을 빌드해야 하는지 여부를 결정합니다. 이 경우 CMake/Build의 출력을 표시하는 출력 창으로 포커스가 이동합니다.
다음으로, 출력 창에는 이미지 패키지를 디바이스에 배포할 때 출력이 표시됩니다. 마지막으로 디버그 콘솔은 포커스를 받고 gdb 출력을 표시합니다.
애플리케이션 컴파일 및 빌드
CLI를 사용하여 애플리케이션을 빌드하려면 컴퓨터에서 올바른 컴파일 도구, 헤더 및 라이브러리(전체적으로 sysroot라고 함)를 찾아야 합니다. Azure Sphere SDK는 애플리케이션 런타임 버전, sysroots 및 베타 API에 설명된 대로 애플리케이션이 다른 API 집합을 대상으로 할 수 있도록 여러 sysroots와 함께 제공됩니다. sysroots는 Sysroots 아래의 Azure Sphere SDK 설치 폴더에 설치됩니다.
CLI를 사용하여 빌드할 때 먼저 실시간 지원 애플리케이션을 빌드하고 배포한 다음, 상위 수준 애플리케이션을 빌드하고 배포합니다.
실시간 지원 애플리케이션 빌드 및 배포
실시간 지원 애플리케이션이 포함된 폴더로 이동합니다.
app_manifest.json 파일을 열고 상위 수준 앱의 구성 요소 ID가 AllowedApplicationConnections 기능에 표시되는지 확인합니다.
PowerShell, Windows 명령 프롬프트 또는 Linux 명령 셸을 사용하여 명령줄 인터페이스를 엽니다. 프로젝트 빌드 디렉터리로 이동합니다.
프로젝트 빌드 디렉터리의 명령 프롬프트에서 다음 매개 변수를 사용하여 CMake를 실행합니다.
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.json 정의된 빌드 구성 사전 설정 이름입니다.
--build <cmake-path>
CMake 캐시를 포함하는 이진 디렉터리입니다. 예를 들어 Azure Sphere 샘플에서 CMake를 실행하는 경우 빌드 명령은 입니다
cmake --build out/ARM-Debug
.<source-path>
샘플 애플리케이션에 대한 원본 파일이 포함된 디렉터리의 경로입니다. 이 예제에서 Azure Sphere 샘플 리포지토리는 AzSphere라는 디렉터리에 다운로드되었습니다.
CMake 매개 변수는 공백으로 구분됩니다. 줄 연속 문자(Windows 명령줄의 경우^ , Linux 명령줄의 경우 \ 또는 PowerShell의 경우 ')는 가독성을 위해 사용할 수 있지만 필수는 아닙니다.
다음 예제에서는 IntercoreComms RTApp에 대한 CMake 명령을 보여 줍니다.
Windows 명령 프롬프트
cmake ^ --preset "ARM-Debug" ^ "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
Windows PowerShell
cmake ` --preset "ARM-Debug" ` "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
프로젝트 빌드 디렉터리의 명령 프롬프트에서 Ninja를 실행하여 애플리케이션을 빌드하고 이미지 패키지 파일을 만듭니다.
ninja -C out/ARM-Debug
Ninja는 결과 애플리케이션 및 .imagepackage 파일을 지정된 디렉터리에 배치합니다.
다음 명령을 사용하여 CMake를 통해 Ninja를 호출할 수도 있습니다.
cmake --build out/<binary-dir>
CMake 캐시를 포함하는 이진 디렉터리로 설정합니다
<binary-dir>
. 예를 들어 Azure Sphere 샘플에서 CMake를 실행하는 경우 빌드 명령은 입니다cmake --build out/ARM-Debug
.특히 CMake 명령을 변경한 후 문제를 해결할 때 전체 빌드를 삭제하고 다시 시도합니다.
디바이스에 이미 배포된 애플리케이션을 삭제합니다.
az sphere device sideload delete
프로젝트 빌드 디렉터리의 명령 프롬프트에서 Ninja가 만든 이미지 패키지를 로드합니다.
az sphere device sideload deploy --image-package <path-to-imagepackage>
애플리케이션이 로드된 직후에 실행되기 시작합니다.
이미지의 구성 요소 ID를 가져옵니다.
az sphere image-package show --image-package <path-to-imagepackage>
명령은 이미지 패키지에 대한 모든 메타데이터를 반환합니다. 애플리케이션의 구성 요소 ID는 애플리케이션 이미지 형식의 ID 섹션에 표시됩니다. 예를 들어:
... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...
상위 수준 애플리케이션 빌드 및 배포
상위 수준 애플리케이션이 포함된 폴더로 이동합니다.
app_manifest.json 파일을 열고 RTApp의 구성 요소 ID가 AllowedApplicationConnections 기능에 표시되는지 확인합니다.
PowerShell, Windows 명령 프롬프트 또는 Linux 명령 셸을 사용하여 명령줄 인터페이스를 엽니다. 프로젝트 빌드 디렉터리로 이동합니다.
프로젝트 빌드 디렉터리의 명령 프롬프트에서 다음 매개 변수를 사용하여 CMake를 실행합니다.
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.json 정의된 빌드 구성 사전 설정 이름입니다.
--build <cmake-path>
CMake 캐시를 포함하는 이진 디렉터리입니다. 예를 들어 Azure Sphere 샘플에서 CMake를 실행하는 경우 빌드 명령은 입니다
cmake --build out/ARM-Debug
.<source-path>
샘플 애플리케이션에 대한 원본 파일이 포함된 디렉터리의 경로입니다. 이 예제에서 Azure Sphere 샘플 리포지토리는 AzSphere라는 디렉터리에 다운로드되었습니다.
CMake 매개 변수는 공백으로 구분됩니다. 줄 연속 문자(Windows 명령줄의 경우^ , Linux 명령줄의 경우 \ 또는 PowerShell의 경우 ')는 가독성을 위해 사용할 수 있지만 필수는 아닙니다.
다음 예제에서는 IntercoreComms 상위 수준 애플리케이션에 대한 CMake 명령을 보여 줍니다.
프로젝트 빌드 디렉터리의 명령 프롬프트에서 Ninja를 실행하여 애플리케이션을 빌드하고 이미지 패키지 파일을 만듭니다.
ninja -C out/ARM-Debug
Ninja는 결과 애플리케이션 및 .imagepackage 파일을 지정된 디렉터리에 배치합니다.
다음 명령을 사용하여 CMake를 통해 Ninja를 호출할 수도 있습니다.
cmake --build out/<binary-dir>
CMake 캐시를 포함하는 이진 디렉터리로 설정합니다
<binary-dir>
. 예를 들어 Azure Sphere 샘플에서 CMake를 실행하는 경우 빌드 명령은 입니다cmake --build out/ARM-Debug
.특히 CMake 명령을 변경한 후 문제를 해결할 때 전체 빌드를 삭제하고 다시 시도합니다.
프로젝트 빌드 디렉터리의 명령 프롬프트에서 Ninja가 만든 이미지 패키지를 로드합니다.
az sphere device sideload deploy --image-package <package-name>
애플리케이션이 로드된 직후에 실행되기 시작합니다.
이미지의 구성 요소 ID를 가져옵니다.
az sphere image-package show --image-package <path-to-imagepackage>
명령은 이미지 패키지에 대한 모든 메타데이터를 반환합니다. 애플리케이션의 구성 요소 ID는 애플리케이션 이미지 형식의 ID 섹션에 표시됩니다. 예를 들어:
"ComponentId": "<component-ID>", ... "Identity": { "ComponentId": "<component-id>", "ImageId": "<image-id>", "ImageType": "Application" }, ...