AWS IoT Over the Air(OTA) 라이브러리 - 무료RTOS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Over the Air(OTA) 라이브러리

참고

이 페이지의 콘텐츠는 가 아닐 수 있습니다 up-to-date. 최신 업데이트는 Free RTOS.org 라이브러리 페이지를 참조하세요.

소개

AWS IoT Over-the-air (OTA) 업데이트 라이브러리를 사용하면 HTTP 또는 를 프로토콜MQTT로 사용하여 무료RTOS 디바이스에 대한 펌웨어 업데이트의 알림, 다운로드 및 확인을 관리할 수 있습니다. OTA 에이전트 라이브러리를 사용하면 디바이스에서 실행되는 애플리케이션과 펌웨어 업데이트를 논리적으로 분리할 수 있습니다. OTA 에이전트는 애플리케이션과 네트워크 연결을 공유할 수 있습니다. 네트워크 연결을 공유하면 잠재적으로 상당한 양의 를 절약할 수 있습니다RAM. 또한 OTA 에이전트 라이브러리를 사용하면 펌웨어 업데이트를 테스트, 커밋 또는 롤백하기 위한 애플리케이션별 로직을 정의할 수 있습니다.

사물 인터넷(IoT)은 기존에는 연결되지 않았던 임베디드 디바이스까지 인터넷 연결을 확장합니다. 이러한 디바이스는 인터넷을 통해 사용 가능한 데이터를 전달하도록 프로그래밍할 수 있으며 원격으로 모니터링 및 제어할 수 있습니다. 기술이 발전함에 따라 이러한 기존 임베디드 디바이스는 소비자, 산업 및 기업 공간에서 빠른 속도로 인터넷 기능을 제공하고 있습니다.

IoT 디바이스는 일반적으로 대량으로 배포되며 작업자가 접근하기 어렵거나 실용적이지 않은 장소에 배치되는 경우가 많습니다. 데이터가 노출될 수 있는 보안 취약성이 발견되는 시나리오를 생각해 보세요. 이러한 시나리오에서는 영향을 받는 디바이스에 보안 수정을 신속하고 신뢰할 수 있게 업데이트하는 것이 중요합니다. OTA 업데이트를 수행할 수 없는 경우 지리적으로 분산된 디바이스를 업데이트하는 것도 어려울 수 있습니다. 기술자에게 이러한 디바이스를 업데이트하도록 하는 것은 비용이 많이 들고 시간이 많이 걸리며 종종 비실용적입니다. 이러한 디바이스를 업데이트하는 데 시간이 걸리면 보안 취약성에 노출되는 기간이 늘어납니다. 업데이트를 위해 이러한 디바이스를 리콜하는 것도 비용이 많이 들고 가동 중지로 인해 소비자에게 심각한 혼란을 야기할 수 있습니다.

에어(OTA) 업데이트를 사용하면 값비싼 리콜 또는 기술자 방문 없이 디바이스 펌웨어를 업데이트할 수 있습니다. 이 방법을 사용하면 다음과 같은 이점이 있습니다.

  • 보안 - 디바이스를 현장에 배포한 이후에 발견된 보안 취약성 및 소프트웨어 버그에 신속하게 대응할 수 있습니다.

  • 혁신 - 새로운 기능이 개발되면 제품을 자주 업데이트하여 혁신 주기를 촉진할 수 있습니다. 기존 업데이트 방법에 비해 가동 중지 시간을 최소화하면서 업데이트를 신속하게 적용할 수 있습니다.

  • 비용 - OTA 업데이트는 기존에 이러한 디바이스를 업데이트하는 데 사용된 방법에 비해 유지 관리 비용을 크게 줄일 수 있습니다.

OTA 기능을 제공하려면 다음과 같은 설계 고려 사항이 필요합니다.

  • 보안 통신 - 업데이트가 암호화된 통신 채널을 사용하여 다운로드 전송 중에 변조를 방지해야 합니다.

  • 복구 - 간헐적으로 네트워크 연결이 중단되거나 잘못된 업데이트를 수신하는 등의 이유로 업데이트가 실패할 수 있습니다. 이러한 시나리오에서는 디바이스가 안정된 상태로 돌아가고 작동 불능 상태를 방지하도록 해야 합니다.

  • 작성자 확인 - 업데이트는 버전 및 호환성 확인과 같은 기타 검증과 함께 신뢰할 수 있는 소스에서 제공되었는지 확인해야 합니다.

무료 를 사용하여 OTA 업데이트를 설정하는 방법에 대한 자세한 내용은 섹션을 RTOS참조하세요무료RTOS Over-the-Air 업데이트.

AWS IoT Over the Air(OTA) 라이브러리

AWS IoT OTA 라이브러리를 사용하면 새로 사용 가능한 업데이트에 대한 알림을 관리하고 다운로드하고 펌웨어 업데이트의 암호화 확인을 수행할 수 있습니다. (OTA) 클라이언트 라이브러리를 over-the-air 사용하면 디바이스에서 실행되는 애플리케이션과 펌웨어 업데이트 메커니즘을 논리적으로 분리할 수 있습니다. (OTA) 클라이언트 라이브러리는 over-the-air 애플리케이션과 네트워크 연결을 공유하여 리소스가 제한된 디바이스의 메모리를 절약할 수 있습니다. 또한 (OTA) 클라이언트 라이브러리를 over-the-air 사용하면 펌웨어 업데이트를 테스트, 커밋 또는 롤백하기 위한 애플리케이션별 로직을 정의할 수 있습니다. 라이브러리는 Message Queuing Telemetry Transport(MQTT) 및 Hypertext Transfer Protocol(HTTP)과 같은 다양한 애플리케이션 프로토콜을 지원하며 네트워크 유형 및 조건에 맞게 미세 조정할 수 있는 다양한 구성 옵션을 제공합니다.

이 라이브러리는 다음과 같은 주요 함수를 APIs 제공합니다.

  • 알림을 등록하거나 사용 가능한 새 업데이트 요청을 폴링합니다.

  • 업데이트 요청을 수신, 분석, 검증합니다.

  • 업데이트 요청에 포함된 정보에 따라 파일을 다운로드하고 확인합니다.

  • 수신한 업데이트를 활성화하기 전에 자체 테스트를 실행하여 업데이트의 기능적 유효성을 확인합니다.

  • 디바이스의 상태를 업데이트합니다.

이 라이브러리는 AWS 서비스를 사용하여 펌웨어 업데이트 전송, 여러 리전에서 많은 수의 디바이스 모니터링, 잘못된 배포의 블래스트 반경 감소, 업데이트 보안 확인과 같은 다양한 클라우드 관련 기능을 관리합니다. 이 라이브러리는 MQTT 또는 HTTP 라이브러리와 함께 사용할 수 있습니다.

이 라이브러리의 데모는 무료RTOS 디바이스에서 코어MQTT 라이브러리 및 AWS 서비스를 사용하여 전체 over-the-air 업데이트를 보여줍니다.

특성

다음은 전체 OTA 에이전트 인터페이스입니다.

OTA_Init

시스템에서 OTA 에이전트('OTA태스크')를 시작하여 OTA 엔진을 초기화합니다. OTA 에이전트는 하나만 존재할 수 있습니다.

OTA_Shutdown

OTA 에이전트에 신호를 보내 종료합니다. OTA 에이전트는 선택적으로 모든 MQTT 작업 알림 주제를 구독 취소하고, 진행 중인 OTA 작업이 있는 경우 중지하고, 모든 리소스를 지웁니다.

OTA_GetState

OTA 에이전트의 현재 상태를 가져옵니다.

OTA_ActivateNewImage

를 통해 수신된 최신 마이크로컨트롤러 펌웨어 이미지를 활성화합니다OTA. 이제 상세 작업 상태가 자체 테스트됩니다.

OTA_SetImageState

현재 실행 중인 마이크로 컨트롤러 펌웨어 이미지의 확인 상태(테스트 중, 수락됨, 거부됨)를 설정합니다.

OTA_GetImageState

현재 실행 중인 마이크로 컨트롤러 펌웨어 이미지의 상태(테스트 중, 수락됨, 거부됨)를 가져옵니다.

OTA_CheckForUpdate

OTA 업데이트 서비스에서 사용 가능한 다음 OTA 업데이트를 요청합니다.

OTA_Suspend

모든 OTA 에이전트 작업을 일시 중지합니다.

OTA_Resume

OTA 에이전트 작업을 재개합니다.

OTA_SignalEvent

OTA 에이전트 태스크에 이벤트를 신호를 보냅니다.

OTA_EventProcessingTask

OTA 에이전트 이벤트 처리 루프.

OTA_GetStatistics

수신, 대기, 처리 및 삭제된 패킷 수를 포함하는 OTA 메시지 패킷의 통계를 가져옵니다.

OTA_Err_strerror

오류에 대한 문자열 변환 OTA 오류 코드입니다.

OTA_JobParse_strerror

OTA 작업 구문 분석 오류 코드를 문자열로 변환합니다.

OTA_PalStatus_strerror

상태에 대한 OTA PAL 상태 코드를 문자열로 변환합니다.

OTA_OsStatus_strerror

OTA OS 상태의 상태 코드를 문자열로 변환합니다.

API 참조

자세한 내용은 AWS IoT Over-the-air 업데이트: 함수 를 참조하세요.

사용 예

MQTT 프로토콜을 사용하는 일반적인 OTA지원 디바이스 애플리케이션은 다음 API 호출 시퀀스를 사용하여 OTA 에이전트를 구동합니다.

  1. AWS IoT 코어MQTT 에이전트에 연결합니다. 자세한 내용은 코어MQTT 에이전트 라이브러리 단원을 참조하십시오.

  2. 버퍼OTA_Init, 필요한 Ota 인터페이스, 사물 이름 및 애플리케이션 콜백을 포함하여 를 호출하여 OTA 에이전트를 초기화합니다. 콜백은 OTA 업데이트 작업을 완료한 후 실행되는 애플리케이션별 로직을 구현합니다.

  3. OTA 업데이트가 완료되면 FreeRTOS는 , accepted rejected또는 이벤트 중 하나를 사용하여 작업 완료 콜백을 호출합니다self test.

  4. 유효성 검사 오류 등으로 인해 새 펌웨어 이미지가 거부된 경우 애플리케이션에서는 일반적으로 알림을 무시하고 다음 업데이트를 대기할 수 있습니다.

  5. 업데이트가 유효하고 수락됨으로 표시된 경우 OTA_ActivateNewImage를 호출하여 디바이스를 재설정하고 새 펌웨어 이미지를 부팅합니다.

이식

플랫폼으로의 포팅 OTA 기능에 대한 자세한 내용은 프리RTOS 포팅 가이드의 OTA 라이브러리 포팅을 참조하세요.

메모리 사용

의 AWS IoT OTA 코드 크기(ARMCortex-M에 GCC 대해 를 사용하여 생성된 예)
파일 -O1 최적화 -Os 최적화
ota.c 8.3K 7.5K
ota_interface.c 0.1K 0.1K
ota_base64.c 0.6K 0.6K
ota_mqtt.c 2.4K 2.2K
ota_cbor.c 0.8K 0.6K
ota_http.c 0.3K 0.3K
총 추정치 12.5K 11.3K