파트너 애플리케이션 만들기

새 파트너 애플리케이션 쌍을 만드는 가장 쉬운 방법은 상위 수준 및 실시간 지원 애플리케이션을 모두 포함하는 최상위 디렉터리를 만든 다음, 상위 수준 및 실시간 지원 앱을 차례로 만드는 것입니다.

상위 수준 앱 만들기

상위 수준 애플리케이션을 만들려면 Visual Studio Code Azure Sphere 확장의 HLCore Blank 템플릿으로 시작하고 다음 단계에 따라 프로젝트에 대한 구성을 조정합니다.

  1. Visual Studio Code 시작합니다. 보기>명령 팔레트를 선택한 다음, Azure Sphere: 새 프로젝트 생성을 입력합니다.

    Visual Studio 코드의 명령 모음

  2. 템플릿 메뉴에서 HLCore 공백을 선택합니다.

    템플릿 이름이 있는 팝업 메뉴

  3. Visual Studio Code 파일 탐색기 창을 표시합니다. 빈 애플리케이션을 배치할 폴더(또는 새 폴더를 선택하고 새 최상위 파트너 프로젝트 디렉터리를 만듭니다)로 이동하고 프로젝트의 이름(예: NewHLApp)을 지정합니다. Visual Studio Code 선택한 위치에 NewHLApp 폴더를 만들고 빈 애플리케이션에 대한 빌드 파일을 생성합니다. CMake의 메시지가 표시됩니다.

  4. CMakeLists.txt 파일을 열고 사용 중인 하드웨어에 대한 정의가 포함된 폴더를 지정합니다. 기본적으로 HLCore Blank 애플리케이션에는 하드웨어 정의가 없습니다. Azure Sphere 샘플 리포지토리에서 샘플 하드웨어 정의를 찾거나 하드웨어 정의에 설명된 대로 만들 수 있습니다.

    다음은 Seeed Azure Sphere MT3620 Development Kit에 대한 샘플 하드웨어 정의를 추가하는 방법을 보여 줍니다.

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    이 줄은 마지막 명령이 시작되기 azsphere_target_add_image_package전에 삽입해야 합니다.

상위 수준 Azure Sphere 샘플에서 새 상위 수준 애플리케이션을 만들 수도 있습니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. 상위 수준 애플리케이션 폴더 중 하나를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewHLApp C)

RTApp 만들기

새 실시간 애플리케이션을 만들려면 Visual Studio Code Azure Sphere 확장에서 RTCore Blank 템플릿으로 시작하고 다음 단계에 따라 프로젝트에 맞게 구성을 조정합니다.

  1. Visual Studio Code 시작합니다. 보기>명령 팔레트를 선택한 다음, Azure Sphere: 새 프로젝트 생성을 입력합니다.

    Visual Studio 코드의 명령 모음

  2. 템플릿 메뉴에서 RTCore 공백을 선택합니다.

    템플릿 이름이 있는 팝업 메뉴

  3. Visual Studio Code 파일 탐색기 창을 표시합니다. 상위 수준 애플리케이션 폴더가 포함된 폴더로 이동하고 프로젝트의 이름(예: NewRTApp)을 지정합니다. Visual Studio Code 선택한 위치에 NewRTApp 폴더를 만들고 빈 애플리케이션에 대한 빌드 파일을 생성합니다. CMake의 메시지가 표시됩니다.

실시간 지원 Azure Sphere 샘플에서 새 실시간 지원 애플리케이션을 만들 수도 있습니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. 상위 수준 애플리케이션 폴더 중 하나를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewRTApp C)

파트너 앱 개발을 위한 작업 영역 구성

상위 수준 애플리케이션과 실시간 지원 애플리케이션을 개발용으로 효과적으로 조인하려면 다음과 같이 두 애플리케이션을 단일 다중 루트 작업 영역으로 결합합니다.

  1. Visual Studio Code 상위 수준 애플리케이션 폴더를 엽니다.

  2. 파일>작업 영역에 폴더 추가를 선택한 다음 실시간 지원 애플리케이션 폴더를 선택합니다.

  3. 파일>작업 영역 다른 이름으로 저장...을 선택한 다음 실시간 지원 애플리케이션과 상위 수준 애플리케이션이 모두 포함된 폴더에 파일을 저장합니다.

  4. 텍스트 편집기에서 작업 영역 파일을 열고 줄 바로 다음에 "settings" 다음 시작 정보를 추가합니다.

    "launch": {
        "configurations": [{
            "name": "Launch Azure Sphere Apps (All Cores)",
            "type": "azurespheredbg",
            "request": "launch",
            "args": [],
            "stopAtEntry": false,
            "environment": [],
            "externalConsole": true,
            "partnerComponents": [],
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }],
        "compounds": []
    }

다중 루트 작업 영역에 대한 자세한 내용은 Visual Studio Code 설명서를 참조하세요.

상위 수준 앱 만들기

새 상위 수준 애플리케이션을 만들려면 Visual Studio Azure Sphere 확장에서 HLCore Blank 템플릿으로 시작하고 다음 단계에 따라 프로젝트에 맞게 구성을 조정합니다.

  1. Visual Studio 를 시작하고 새 프로젝트 만들기를 선택합니다.

  2. 템플릿 검색 레이블이 지정된 검색 상자에 를 입력 Azure Sphere합니다. 반환된 목록에서 Azure Sphere HLCore Blank 를 선택한 다음, 다음을 선택합니다.

  3. 프로젝트 이름(예: NewHLApp), 프로젝트 파일 위치 및 솔루션 이름(프로젝트 이름과 같을 수 있음)을 지정한 다음 만들기를 선택합니다. Visual Studio는 선택한 위치에 NewHLpp 폴더를 만들고 빈 애플리케이션에 대한 빌드 파일을 생성합니다. CMake의 메시지가 표시됩니다.

  4. CMakeLists.txt 파일을 열고 사용 중인 하드웨어에 대한 정의가 포함된 폴더를 지정합니다. 기본적으로 HL Blank 애플리케이션에는 하드웨어 정의가 없습니다. Azure Sphere 샘플 리포지토리에서 샘플 하드웨어 정의를 찾거나 하드웨어 정의에 설명된 대로 만들 수 있습니다.

    다음은 Seeed Azure Sphere MT3620 Development Kit에 대한 샘플 하드웨어 정의를 추가하는 방법을 보여 줍니다.

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")

    이 줄은 마지막 명령이 시작되기 azsphere_target_add_image_package전에 삽입해야 합니다.

상위 수준 Azure Sphere 샘플에서 새 상위 수준 애플리케이션을 만들 수도 있습니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. 상위 수준 애플리케이션 폴더 중 하나를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewHLApp C)

RTApp 만들기

새로운 실시간 지원 애플리케이션을 만들려면 Visual Studio Azure Sphere 확장에서 RTCore Blank 템플릿으로 시작하고 다음 단계에 따라 프로젝트에 대한 구성을 조정합니다.

  1. Visual Studio 를 시작하고 새 프로젝트 만들기를 선택합니다.

  2. 템플릿 검색 레이블이 지정된 검색 상자에 를 입력 Azure Sphere합니다. 반환된 목록에서 Azure Sphere RTCore Blank 를 선택한 다음, 다음을 선택합니다.

  3. 프로젝트 이름(예: NewRTApp), 프로젝트 파일 위치 및 상위 수준 애플리케이션에 사용한 솔루션 이름을 지정한 다음 만들기를 선택합니다. Visual Studio는 선택한 위치에 NewRTApp 폴더를 만들고 빈 애플리케이션에 대한 빌드 파일을 생성합니다. CMake의 메시지가 표시됩니다.

실시간 지원 Azure Sphere 샘플에서 새 실시간 지원 애플리케이션을 만들 수도 있습니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. 실시간 지원 애플리케이션 폴더 중 하나를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewRTApp C)

최상위 Visual Studio 시작 파일 만들기

파트너 애플리케이션을 동시에 사용하려면 Visual Studio가 여러 코어로 디버그하도록 허용하려고 합니다. 두 파트너 애플리케이션 폴더를 포함하는 최상위 폴더에 launch.vs.json 파일을 만들어 사용하도록 설정할 수 있습니다. 이 파일에는 다음과 유사한 내용이 있어야 합니다.

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "azurespheredbg",
      "name": "Azure Sphere Apps (All Cores)",
      "project": "PartnerAppsHL/CMakeLists.txt",
      "DebugBuildStepBuildAll": "true",
      "workingDirectory": "${workspaceRoot}",
      "applicationPath": "${debugInfo.target}",
      "imagePath": "${debugInfo.targetImage}",
      "targetCore": "AnyCore",
      "partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
    }
  ]
}

줄에는 "project" 상위 수준 애플리케이션의 CMakeLists.txt 파일에 대한 상대 경로가 포함되어야 하며 "partnerComponents" 줄에는 두 파트너 애플리케이션의 구성 요소 ID가 있어야 합니다.

이 최상위 launch.vs.json 파일을 만든 후에는 최상위 폴더에서 Visual Studio를 열 수 있으며 시작 항목 선택 메뉴에 Azure Sphere Apps(모든 코어) 옵션이 표시됩니다.

CMakeWorkspaceSettings.json 파일 만들기

Visual Studio 2022 버전 17.1 이상을 사용하고 IntercoreComms 샘플과 같이 루트가 여러 개 있는 프로젝트가 있는 경우 CMakeWorkspaceSettings.json 파일을 프로젝트의 최상위 폴더에 추가해야 합니다. 파일에는 CMake 빌드가 사용하도록 설정되도록 지정하는 항목과 여러 루트에 대한 경로가 포함된 두 개의 항목이 있습니다. 예를 들어 IntercoreComms 샘플의 경우 CMakeWorkspaceSettings.json에는 다음 콘텐츠가 있습니다.

{
  "enableCMake": true,
  "sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}

경로는 CMakeWorkspaceSettings.json 파일이 포함된 폴더를 기준으로 지정됩니다.

상위 수준 앱 만들기

새 상위 수준 애플리케이션을 만들려면 상위 수준 Azure Sphere 샘플 중에서 시작합니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. 상위 수준 애플리케이션 폴더 중 하나를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewHLApp C)

RTApp 만들기

새로운 실시간 지원 애플리케이션을 만드는 가장 쉬운 방법은 HelloWorld_RTApp_MT3620_BareMetal 샘플 로 시작하고 다음 단계에 따라 프로젝트에 맞게 구성을 조정하는 것입니다.

  1. 아직 수행하지 않은 경우 샘플 리포지토리 를 복제합니다. HelloWorld_RTApp_MT3620_BareMetal 폴더를 복사하고 프로젝트의 이름을 바꿉니다.

  2. CMakeLists.txt 파일에서 프로젝트 이름을 새 폴더의 이름으로 변경합니다. 예를 들어:

    PROJECT(NewRTApp C)

Azure Sphere 애플리케이션의 기본 파일 구조

애플리케이션을 만드는 방법에 관계없이 모든 Azure Sphere 애플리케이션은 다음 핵심 파일을 공유합니다.

  • 하나 이상의 파일에 있는 애플리케이션 소스 코드입니다. 현재 C 언어 소스 코드만 지원됩니다.
  • CMake 빌드 파일. CMakeLists.txt 필요합니다. CMake는 ninja 경량 빌드 유틸리티와 함께 Azure Sphere 애플리케이션 빌드 프로세스를 제어하는 데 사용됩니다.
  • 애플리케이션에서 사용할 수 있는 기능을 설명하는 앱 매니페스트 파일입니다.

상위 수준 애플리케이션에는 일반적으로 세 개 이상의 다른 파일이 있습니다.

  • 다양한 Azure Sphere API의 버전 수준을 지정하는 applibs-version.h 파일
  • 코드에서 하드웨어 구성 요소를 참조하는 편리한 방법을 제공하는 두 개의 하드웨어 정의 파일(JSON 형식의 편집 가능한 버전 및 C 언어 포함 파일)입니다. 일관된 하드웨어 정의 파일 집합을 사용하면 하드웨어 독립적 소스 코드를 작성한 다음, CMakeLists.txt 파일에서 적절한 하드웨어 정의 파일을 다시 대상으로 지정하여 특정 하드웨어에 대한 애플리케이션 이미지를 빌드할 수 있습니다.

실시간 지원 애플리케이션은 하나 이상의 다른 파일인 링커.ld 파일을 추가하여 애플리케이션의 다양한 구성 요소를 실시간 코어에 로드할 위치를 정확하게 지정합니다.

상위 수준 앱 코드 작성

  1. Azure Sphere 상위 수준 앱 샘플을 가이드로 사용하여 상위 수준 애플리케이션 코드를 작성합니다. 다음 topics 특정 구현 시나리오에 대해 설명합니다.
  2. CMakeLists.txt 파일에서 다음을 수행합니다.
    • Azure Sphere SDK 도구 수정 버전 지정
    • 대상 API 집합 지정
    • 대상 하드웨어 지정
  3. app_manifest.json 파일에서 다음을 수행합니다.
    • 프로젝트 이름으로 설정합니다 Name .
    • 하드웨어 리소스 또는 연결과 같이 코드에 필요한 애플리케이션별 기능을 추가합니다. 상위 수준 앱이 RTApp과 통신하는 경우 상위 수준 애플리케이션의 구성 요소 ID를 AllowedApplicationConnections 기능에 추가합니다.
  1. 상위 수준 파트너 앱과 함께 RTApp을 배포하려면 launch.vs.json(Visual Studio) 또는 .vscode/launch.json(Visual Studio Code) 파일의 구성 섹션에 있는 partnerComponents 필드에 파트너의 구성 요소 ID를 추가합니다.

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

RTApp 코드 작성

  1. Azure Sphere RTApp 샘플을 가이드로 사용하여 RTApp 코드를 작성합니다. 다음 topics 특정 구현 시나리오에 대해 설명합니다.
  2. app_manifest.json 파일에서 다음을 수행합니다.
    • 프로젝트 이름으로 설정합니다 Name .
    • 를 로 설정합니다 ApplicationType . "RealTimeCapable"
    • 하드웨어 리소스 또는 연결과 같이 코드에 필요한 애플리케이션별 기능을 추가합니다. RTApp이 상위 수준 앱과 통신하는 경우 상위 수준 애플리케이션의 구성 요소 ID를 AllowedApplicationConnections 기능에 추가합니다.
  1. 상위 수준 파트너 앱과 함께 RTApp을 배포하려면 launch.vs.json(Visual Studio) 또는 .vscode/launch.json(Visual Studio Code) 파일의 구성 섹션에 있는 partnerComponents 필드에 파트너의 구성 요소 ID를 추가합니다.

    "partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

참고 항목