이더넷용 Azure Sphere 준비

이더넷을 통해 통신하려면 Azure Sphere 디바이스에 외부 이더넷 어댑터 및 보드 구성 이미지가 필요합니다. 이더넷을 통해 네트워킹을 위해 디바이스를 준비하려면 다음 단계가 필요합니다.

  1. 어댑터를 디바이스에 연결합니다.

  2. 보드 구성 이미지를 만들고 배포합니다.

  3. 이더넷 인터페이스를 사용하도록 설정합니다.

주의

디바이스가 이더넷을 통해 연결된 경우 데이터 손실 또는 성능 저하를 방지하기 위해 트래픽이 적은 네트워크가 필요합니다. 네트워크에 상당한 들어오는 트래픽이 있는 경우 디바이스는 들어오는 비 TCP 패킷에서 데이터를 잃게 됩니다. TCP는 삭제된 패킷을 다시 전송하므로 일반적으로 트래픽 볼륨에 관계없이 들어오는 TCP 패킷에서 데이터가 손실되지 않습니다. 그러나 다시 전송은 성능의 비용입니다.

어댑터를 디바이스에 연결

지원되는 이더넷 어댑터 목록 및 Azure Sphere 개발 보드에 연결하는 방법에 대한 지침은 지원되는 이더넷 어댑터 보드 및 모듈을 참조하세요.

보드 구성 이미지 만들기 및 배포

Azure Sphere와 함께 사용되는 각 이더넷 어댑터에는 보드 구성 이미지가 필요합니다. 보드 구성 이미지에는 Azure Sphere Security Service에서 Azure Sphere OS에 이더넷에 대한 지원을 추가하는 데 필요한 정보가 포함되어 있습니다. 이더넷 어댑터에 대한 보드 구성 이미지 패키지를 만들고 애플리케이션 이미지 패키지와 함께 배포해야 합니다. 개발 및 디버깅 을 위해 보드 구성 이미지 패키지를 테스트용으로 로드 할 수 있습니다. 필드 사용을 위해 클라우드에서 보드 구성 이미지 패키지를 Azure Sphere 애플리케이션과 함께 배포할 수도 있습니다. 보드 구성은 고급 앱용으로 예약된 플래시 메모리 또는 RAM에 포함되지 않습니다.

보드 구성 이미지 패키지 만들기

보드 구성 이미지 패키지를 만들려면 azsphere image-package pack-board-config CLI 명령을 사용합니다.

참고

pack-board-config는 현재 Azure CLI 확장에서 지원되지 않습니다.

보드 구성 이미지 패키지 테스트용 로드

개발 및 디버깅 중에 보드 구성 이미지 패키지를 사용하려면 다음을 수행합니다.

  1. 개발 및 디버깅을 위해 디바이스를 준비합니다.

    az sphere device enable-development --resource-group MyResourceGroup --catalog MyCatalog --device <DeviceIdValue>
    
  2. az sphere device sideload delete 명령을 사용하여 디바이스에서 기존 애플리케이션을 삭제합니다. 기존 애플리케이션과 보드 구성 간의 리소스 충돌을 방지하기 위해 보드 구성 이미지 패키지를 로드하기 전에 기존 애플리케이션을 삭제하는 것이 중요합니다.

  3. 보드 구성 이미지 패키지를 테스트용으로 로드합니다. 이전 섹션에서 사용자 지정 보드 구성 파일을 만든 경우 이제 사이드로드할 수 있습니다. 사전 설정 옵션에는 다음이 포함됩니다.

    Microchip ENC28J60 NIC용 MT3620 이더넷 쉴드를 참조하세요.

    az sphere device sideload deploy --image-package lan-enc28j60-isu0-int5.imagepackage
    

    Avnet Rev1 Devkit Wiznet W5500 NIC용 모듈을 클릭합니다.

    az sphere device sideload deploy --image-package lan-w5500-isu1-int2.imagepackage
    

    Avnet Rev2 Devkit Wiznet W5500 NIC용 모듈을 클릭합니다.

    az sphere device sideload deploy --image-package lan-w5500-isu0-int5.imagepackage
    
  4. Visual Studio를 사용하거나 az sphere device sideload deploy 명령을 사용하여 애플리케이션을 테스트용으로 로드 합니다.

클라우드 보드 구성 이미지 패키지 배포

클라우드를 통해 보드 구성 이미지 패키지를 배포하려면 디바이스에 제품이 있어야 하고, 디바이스 그룹에 속해야 하며, AppDevelopment 기능이 설치되어 있지 않아야 합니다. 이러한 설정 방법을 알아보려면 배포 만들기 를 참조하세요.

디바이스가 준비되면 단일 배포에서 애플리케이션 이미지와 함께 보드 구성 이미지를 배포할 수 있습니다.

배포를 만들려면 다음을 수행합니다.

  1. az sphere image add를 사용하여 Azure Sphere 카탈로그에 이미지 패키지를 업로드합니다.
  2. az sphere deployment create를 사용하여 업로드된 이미지에 대한 디바이스 그룹에 대한 새 배포를 만듭니다.
az sphere deployment create --resource-group <resource-group-name> --catalog <catalog-name> --product <product-name> --device-group <device-group-name> --images <image-ID>

image-ID>를 이미지 패키지의 이미지 ID로 바꿉니다<.

사이드로드된 보드 구성 제거

개발 중에 보드 구성을 사이드로드하는 경우 나중에 다른 애플리케이션에서 보드가 예약하는 리소스를 사용할 수 있도록 해당 구성을 제거해야 할 수 있습니다. 보드 구성이 Azure Sphere 디바이스에 로드되는 동안 이러한 리소스를 사용하는 애플리케이션을 실행하려고 하면 핀 충돌 오류가 발생합니다.

보드 구성을 제거하려면 다음 단계를 수행합니다.

  1. 디바이스에 설치된 이미지를 나열합니다.

    az sphere device image list-installed
    
  2. 목록에서 보드 구성의 구성 요소 ID를 찾습니다.

     {
     "does_image_type_require_restart": true,
     "image_type": "Board configuration",
     "images": [
       {
         "length_in_bytes": 428,
         "replica_type": 0,
         "uid": "839e699a-1b23-44de-bc56-f2b19e472098",
         "uncompressed_length_in_bytes": 428
       }
     ],
     "is_update_staged": false,
     "name": "lan-enc28j60-isu0-int5_29f10d",
     "uid": "29f10d1e-29aa-4ae0-a48c-cc24305b288a"
     }
    

    구성 요소 ID는 보드 구성과 연결된 uid이므로 위의 출력에서 "29f10..."을 시작합니다.

  3. 구성 요소 ID를 지정하여 보드 구성 이미지 패키지를 삭제합니다.

    az sphere device sideload delete --component-id 29f10d1e-29aa-4ae0-a48c-cc24305b288a
    
  4. 다시 설정 단추를 누르거나 az sphere device restart 명령을 실행하여 디바이스를 다시 시작 합니다.

이더넷 인터페이스 사용

보드 구성이 로드되고 디바이스가 다시 부팅되면 인터페이스가 자동으로 사용하도록 설정됩니다. 인터페이스를 사용하지 않도록 설정하려면 az sphere device network disable 명령을 사용하거나 네트워크 구성 API의 일부인 Networking_SetInterfaceState 함수를 호출합니다.

모든 인터페이스는 기본적으로 동적 IP 주소를 사용합니다. Azure Sphere 애플리케이션에서 사용할 수 있는 서비스 유형에 대한 자세한 내용은 네트워크 서비스 사용을 참조하세요.

이더넷용 Azure Sphere 구성

Azure Sphere 디바이스를 지원되는 이더넷 어댑터에 연결하고 보드 구성 이미지를 배포한 후 명령줄(CLI)에서 또는 Azure Sphere SDK 애플리케이션 라이브러리(Applibs)를 사용하여 애플리케이션에서 네트워크에 연결하도록 Azure Sphere 디바이스를 구성할 수 있습니다.

CLI를 사용한 이더넷 구성

명령줄에서 이더넷 구성을 관리하려면 az sphere device network CLI 명령을 사용합니다. 예를 들어 디바이스 네트워크 사용 명령은 연결된 디바이스에서 이더넷 인터페이스를 사용하도록 설정합니다.

az sphere device network enable --interface "eth0" 

구성된 이더넷 네트워크를 사용하려면 네트워크 인터페이스(eth0)가 활성화되어 있어야 합니다. 디바이스 네트워크 목록 인터페이스 명령을 사용하여 인터페이스가 활성 상태인지 확인합니다.


az sphere device network list-interfaces

필요한 경우 디바이스 네트워크 사용 명령을 사용하여 활성화합니다.


az sphere device network enable --interface eth0

Applibs를 사용한 이더넷 구성

이더넷을 구성하려면 애플리케이션에서 applibs 네트워킹 API를 사용해야 합니다.

애플리케이션에 다음 헤더 파일을 포함합니다.

#include <applibs/networking.h>

애플리케이션 매니페스트에는 NetworkConfig 기능이 포함되어야 합니다.

 "Capabilities": {
  "NetworkConfig" : true
}

Networking_GetInterfaceConnectionStatus 함수를 사용하여 네트워크 인터페이스가 활성 상태인지 확인합니다.

Networking_GetInterfaceConnectionStatus("eth0", &currentInterfaceStatus);

네트워크 인터페이스를 활성화하려면 Networking_SetInterfaceState 함수를 사용합니다.

Networking_SetInterfaceState("eth0", true);

참고

두 네트워크 인터페이스(wlan0 및 eth0)가 모두 활성 상태이고 연결된 경우 디바이스가 통신에 사용할 특정 인터페이스는 비결정적입니다. 지정된 시간에 사용되는 네트워크 인터페이스를 제어하려면 애플리케이션이 Networking_SetInterfaceState() 함수를 사용하여 원하는 인터페이스를 명시적으로 설정하고 다른 인터페이스를 해제해야 합니다. DHCP 클라이언트 상위 수준 앱 샘플에서는 두 인터페이스 중 하나를 나타내는 값을 전역 변수에 할당하여 인터페이스 간에 전환하는 방법을 보여 줍니다.

샘플

Azure IoT는 Azure Sphere 애플리케이션에서 Azure IoT SDK C API를 사용하여 Azure IoT Hub 또는 Azure IoT Central과 통신하는 방법을 보여 줍니다.

DHCP 클라이언트 상위 수준 앱은 네트워크의 DHCP 서버가 MT3620 디바이스에 할당한 현재 IP 주소를 갱신하거나 해제하는 방법을 보여 줍니다.

HTTPS cURL Easy는 cURL '쉬운' API를 사용하여 HTTPS를 통해 콘텐츠를 가져오는 방법을 보여 줍니다.

HTTPS cURL Multi는 cURL '다중' API를 사용하여 HTTPS를 통해 콘텐츠를 가져오는 방법을 보여 줍니다.

Power Down 상위 수준 앱 은 Azure Sphere 플랫폼에 대한 Power Down 기능을 보여 줍니다.

프라이빗 네트워크 서비스는 Azure Sphere 디바이스를 프라이빗 네트워크에 연결하고 네트워크 서비스를 사용하는 방법을 보여 줍니다.

WolfSSL 상위 수준 앱 은 상위 수준 애플리케이션에서 SSL 핸드셰이크에 WolfSSL을 사용하는 방법을 보여 줍니다.

참고

다음 샘플은 Microsoft의 매핑되지 않은 소프트웨어 및 하드웨어 샘플 컬렉션인 Azure Sphere 갤러리에서 가져옵니다. 자세한 내용은 Azure Sphere 갤러리를 참조하세요.

네트워크 인터페이스의 MAC 및 IP 주소를 인쇄하면 지정된 네트워크 인터페이스 의 MAC 및 IP 주소가 인쇄됩니다.

OSNetworkRequirementChecker-HLApp 은 두 디바이스(MT3620) 네트워킹 진단 테스트를 수행합니다.