자습서: 고급 애플리케이션 빌드
Important
Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.
고급 애플리케이션은 Azure Sphere OS에서 실행되고, Azure Sphere 애플리케이션 라이브러리를 사용하며, 인터넷 및 클라우드 기반 서비스와 통신할 수 있습니다. 상위 수준 애플리케이션에 대한 기본 정보는 Azure Sphere 애플리케이션 개요를 참조하세요.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 개발 및 디버깅을 위해 디바이스 준비
- 상위 수준 애플리케이션 빌드, 실행 및 디버그
필수 조건
- Windows 또는 Linux용 CMake 및 Ninja를 설치합니다.
- Windows 또는 Linux용 Visual Studio Code를 설치합니다.
- Windows 또는 Linux용 CMake 및 Ninja를 설치합니다.
- Windows 또는 Linux용 SDK 설치
- 테넌트 선택 및 디바이스 클레임
- 네트워킹 구성 및 디바이스 OS 업데이트
개발 및 디버깅을 위해 디바이스 준비
Azure Sphere 디바이스에서 샘플 애플리케이션을 빌드하거나 새 애플리케이션을 개발하려면 먼저 개발 및 테스트용 로드를 사용하도록 설정해야 합니다. 기본적으로 Azure Sphere 디바이스는 "잠김"입니다. 즉, 개발 중인 애플리케이션을 컴퓨터에서 로드할 수 없으며 애플리케이션의 디버깅을 허용하지 않습니다. 사이드로드를 위해 디바이스를 준비하면 이 제한이 제거됩니다.
azsphere device enable-development 명령은 디버깅을 위해 애플리케이션을 수락하도록 디바이스를 구성하고, 디버깅 서버를 디바이스에 로드하고, 클라우드 애플리케이션 업데이트를 허용하지 않는 디바이스 그룹에 디바이스를 할당합니다. 애플리케이션 개발 및 디버깅 중에 클라우드 애플리케이션 업데이트가 개발 중인 애플리케이션을 덮어쓰지 않도록 디바이스를 이 그룹에 남겨 두어야 합니다.
Azure Sphere 디바이스가 컴퓨터에 연결되어 있고 컴퓨터가 인터넷에 연결되어 있는지 확인합니다.
PowerShell, Windows 명령 프롬프트 또는 Linux 명령 셸을 사용하여 명령줄 인터페이스를 엽니다.
다음 명령을 입력합니다.
azsphere device enable-development
다음과 비슷한 결과가 나타나야 합니다.
Getting device capability configuration for application development. Downloading device capability configuration for device ID '<device ID>'. Successfully downloaded device capability configuration. Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'. Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'. Successfully disabled over-the-air updates. Enabling application development capability on attached device. Applying device capability configuration to device. Successfully applied device capability configuration to device. The device is rebooting. Installing debugging server to device. Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device. Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device. Application development capability enabled. Successfully set up device '<device ID>' for application development, and disabled over-the-air updates. Command completed successfully in 00:00:38.3299276.
azsphere device enable-development 명령이 실패하면 Azure Sphere 문제 해결을 참조하세요.
Visual Studio Code를 사용하여 상위 수준 애플리케이션 빌드 및 실행
이 자습서에서는 Visual Studio Code용 Azure Sphere 확장의 일부인 Azure Sphere Blink 템플릿을 사용합니다. Blink 템플릿이 LED를 깜박이면 Azure Sphere 디바이스 및 도구가 설치되어 있고 올바르게 설정되었는지 확인할 수 있습니다.
Visual Studio Code 시작 보기>명령 팔레트를 선택한 다음, Azure Sphere: 새 프로젝트 생성을 입력합니다.
템플릿 메뉴에서 Blink를 선택합니다.
그런 다음 Visual Studio Code에서 파일 탐색기 창을 표시합니다. Blink 애플리케이션을 배치할 폴더로 이동합니다. Visual Studio Code는 선택한 위치에 Blink 폴더를 만들고 Blink 애플리케이션에 대한 빌드 파일을 생성합니다. CMake의 메시지가 표시되어야 합니다.
CMakeLists.txt 파일을 열고 TARGET_DIRECTORY 설정을 변경하여 사용 중인 하드웨어에 대한 정의가 포함된 폴더를 지정합니다. 기본적으로 TARGET_DIRECTORY Seeed Azure Sphere MT3620 개발 키트와 일치하는 HardwareDefinitions/mt3620_rbd 지정합니다.
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
템플릿과 함께 몇 가지 하드웨어 정의가 제공됩니다. 예를 들어 SEEED MT3620 미니 개발 보드를 사용하는 경우 대신 HardwareDefinitions/seeed_mt3620_mdb 지정합니다.
F5 키를 눌러 프로젝트를 빌드하고 디버그합니다. 프로젝트가 이전에 빌드되지 않았거나 파일이 변경되고 다시 빌드가 필요한 경우 Visual Studio Code는 디버깅을 시작하기 전에 프로젝트를 빌드합니다.
Visual Studio Code가 애플리케이션을 빌드하고, 이미지 패키지를 만들고, 보드에 배포하고, 디버그 모드에서 시작할 때까지 몇 초 정도 기다립니다. 그 과정에서 출력 창에 상태 업데이트가 표시됩니다.
먼저 CMake는 애플리케이션을 빌드해야 하는지 여부를 결정합니다. 이 경우 CMake/Build의 출력을 표시하는 출력 창으로 포커스가 이동합니다.
다음으로, 이미지 패키지를 디바이스에 배포할 때 Azure Sphere의 출력이 출력 창에 표시됩니다. 마지막으로, 디버그 콘솔에서 포커스를 받고 gdb 출력을 표시합니다.
팁
배포를 만들 때 필요하므로 이미지 패키지의 위치를 기록해 둡다. 출력 창에 "경로>에 기록된 <파일 빌드"와 같은 메시지가 표시됩니다. 여기서 <경로>는 Blink 애플리케이션의 빌드 폴더에 대한 전체 경로이며 일반적으로 "out\ARM-Debug" 또는 "out/ARM-Debug"로 끝납니다.
잠시 지연된 후에 LED가 깜박입니다.
main.c의 어딘가에 중단점을 설정하고 애플리케이션을 이동하여 Azure Sphere에 대한 Visual Studio Code 디버깅 기능을 탐색할 수 있도록 합니다.
Visual Studio를 사용하여 고급 애플리케이션 빌드 및 실행
이 자습서에서는 Visual Studio용 Azure Sphere 확장의 일부인 Azure Sphere Blink 템플릿을 사용합니다. Blink 템플릿이 LED를 깜박이면 Azure Sphere 디바이스 및 도구가 설치되어 있고 올바르게 설정되었는지 확인할 수 있습니다.
Visual Studio를 처음 접하는 경우 빠른 시작 또는 가이드 투어를 사용하여 탐색 및 사용에 대해 알아보세요.
Visual Studio를 열고 새 프로젝트 만들기를 선택합니다. 검색 상자에 'azure sphere'를 입력하여 Azure Sphere 템플릿 목록을 가져옵니다. 목록에서 Azure Sphere Blink를 선택합니다.
프로젝트의 이름과 위치를 입력한 다음 만들기를 선택합니다.
CMakeLists.txt 파일을 열고 TARGET_DIRECTORY 설정을 변경하여 사용 중인 하드웨어에 대한 정의가 포함된 폴더를 지정합니다. 기본적으로 TARGET_DIRECTORY Seeed Azure Sphere MT3620 개발 키트와 일치하는 HardwareDefinitions/mt3620_rbd 지정합니다.
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
템플릿과 함께 몇 가지 하드웨어 정의가 제공됩니다. 예를 들어 SEEED MT3620 미니 개발 보드를 사용하는 경우 대신 HardwareDefinitions/seeed_mt3620_mdb 지정합니다.
Visual Studio에서 출력 보기를>선택하여 출력 창을 표시합니다.
장치가 USB로 PC에 연결되어 있는지 확인합니다. 시작 항목 설정 메뉴에서 Azure Sphere 앱이 현재 상위 수준 애플리케이션의 이름인 Azure SPHERE 앱(HLCore)을 선택하거나 F5 키를 누릅니다.
프로젝트를 빌드하라는 메시지가 표시되면 예를 선택합니다. Visual Studio는 애플리케이션을 컴파일하고, 이미지 패키지를 만들고, 보드에 테스트용으로 로드하고, 디버그 모드에서 시작합니다. 테스트용 로드 는 애플리케이션이 클라우드를 통해 전달되지 않고 유선 연결을 통해 PC에서 직접 전달됨을 의미합니다.
팁
배포를 만들 때 필요하므로 이미지 패키지의 위치를 기록해 둡다. 출력 표시 출력의 출력>>에 "출력 파일이 있습니다. <경로>"와 같은 메시지가 표시됩니다. 여기서< 경로>는 Blink 애플리케이션의 빌드 폴더에 대한 전체 경로이며 일반적으로 "out/ARM-Debug"로 끝납니다.
기본적으로 출력 창에는 디바이스 출력의 출력이 표시됩니다. 디버거의 메시지를 보려면 다음 드롭다운 메뉴에서 출력 표시에서 디버그를 선택합니다. 디버그>창 메뉴를 통해 프로그램 디스어셈블리, 레지스터 또는 메모리를 검사할 수도 있습니다.
프로그램을 실행하면 LED 깜박임이 표시됩니다.
샘플 애플리케이션 다운로드
다음과 같이 HelloWorld 애플리케이션을 다운로드할 수 있습니다.
- 브라우저에서 Microsoft 샘플 브라우저를 가리킵니다.
- 검색 상자에 "Azure Sphere"를 입력합니다.
- 검색 결과에서 Azure Sphere - 헬로 월드 선택합니다.
- ZIP 다운로드를 선택합니다.
- 다운로드한 파일을 열고 로컬 디렉터리로 추출합니다.
샘플 빌드
HelloWorld_HighLevelApp 샘플 애플리케이션에 대한 빌드 및 .imagepackage 파일을 만들려면 다음 단계를 수행합니다.
필요한 경우 하드웨어를 대상으로 하는 샘플을 업데이트합니다. 기본적으로 샘플은 Seeed Studios의 MT3620 개발 키트와 같은 MT3620 RDB(참조 보드 디자인)를 따르는 하드웨어를 대상으로 합니다. 샘플 애플리케이션에 대한 추가 대상 하드웨어 정의는 Azure Sphere 샘플 리포지토리의 HardwareDefinitions 디렉터리에서 사용할 수 있습니다. 예를 들어 Avnet MT3620 시작 키트의 하드웨어 정의 파일은 HardwareDefinitions/avnet_mt3620_sk 하위 디렉터리에 있습니다.
CMakeLists.txt 열고 azure_target_hardware_definition 함수의 TARGET_DIRECTORY 매개 변수를 업데이트하여 하드웨어의 하위 디렉터리를 가리킵니다. 예시:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
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의 경우 ')는 가독성을 위해 사용할 수 있지만 필수는 아닙니다.
다음 예제에서는 헬로 월드 상위 수준 앱에 대한 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 명령을 변경한 후 문제를 해결할 때 전체 빌드를 삭제하고 다시 시도합니다.
샘플 실행
디바이스가 이미 애플리케이션을 실행 중인 경우 애플리케이션을 삭제합니다.
azsphere device sideload delete
이전에 만든 빌드 및 .imagepackage 파일이 포함된 디렉터리로 변경합니다.
azsphere device sideload deploy 명령을 실행하고 이미지 패키지를 지정하여 이미지 패키지를 디바이스에 로드합니다. 예시:
azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
이 명령은 이미지 패키지를 로드하고 애플리케이션을 시작합니다. LED 깜박임이 표시됩니다.
팁
이미지 패키지의 경로를 확인합니다. 이미지 패키지는 나중에 배포 빠른 시작에서 사용하게 됩니다.
샘플 디버그
이전에 만든 빌드 및 .imagepackage 파일이 포함된 디렉터리로 변경합니다.
구성 요소 ID가 아직 없는 경우 다음을 가져옵니다.
azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
애플리케이션이 실행 중인 경우 해당 애플리케이션을 중지한 다음 옵션을 사용하여
--debug-mode
다시 시작합니다.azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
다음과 같은 결과가 표시됩니다.
<ComponentId>
App state : debugging
GDB port : 2345
Output port : 2342
Core : High-level
터미널 클라이언트를 사용하여 텔넷 또는 원시 TCP 연결을 설정하여 프로세스에서 출력 스트림을 읽습니다. IP 주소로 192.168.35.2를 지정하고 포트로 2342를 지정합니다.
Windows에서 PowerShell 또는 표준 명령 프롬프트 또는 Linux의 명령 셸을 사용하여 명령줄 인터페이스를 열고 빌드에서 .out 앱 이진 파일을 매개 변수로 전달합니다. 그러면 전체 소스 코드 디버깅을 사용하도록 설정됩니다.
Windows 명령 프롬프트
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
참고 항목
Azure Sphere SDK는 애플리케이션 런타임 버전, sysroot 및 베타 API에 설명된 대로 애플리케이션이 다른 API 집합을 대상으로 할 수 있도록 여러 sysroot를 제공합니다. sysroot는 Sysroots에 있는 Azure Sphere SDK 설치 폴더에 설치됩니다.
포트 2345에서 원격 디버깅 대상을 IP 주소 192.168.35.2로 설정합니다.
target remote 192.168.35.2:2345
선택한 다른 gdb 명령을 실행합니다. 예를 들어 다음 명령은 main()에 진입할 때 중단점을 설정한 다음 각각 중단점 이후에 실행을 계속합니다.
break main
c
gdb를 사용한 디버깅에 대한 자세한 내용은 GDB: GNU 프로젝트 디버거 또는 주제에 대한 다른 수많은 원본 중 하나를 참조하세요.
다음 단계
Azure Sphere 디바이스에서 실행할 상위 수준 애플리케이션을 빌드했습니다. 지금 수정할 수 있습니다. 하드웨어 정의는 하드웨어 정의 JSON 파일을 편집하고 연결된 헤더 파일을 다시 생성하는 방법을 설명합니다.
다음으로, 클라우드에서 상위 수준 애플리케이션을 배포하는 방법을 알아봅니다.
참고 항목
영감이 있고 , 매핑되지 않고, 재사용 가능한 Azure Sphere 스크립트, 유틸리티 및 함수 컬렉션인 Azure Sphere 갤러리를 방문하세요.