반응형

1. Device Firmware Update process

장치 펌웨어 업데이트를 수행하려면 두가지 장치 (DFU 대상과 DFU 컨트롤러)가 필요하다.

DFU 대상은 새 어플리케이션, SoftDevice, 부트로더 또는 SoftDevice와 부트로더의 조합을

포함할 수 있는 새 펌웨어 이미지로 업데이트되는 장치이다.

DFU 컨트롤러는 이미지를 전송하는 장치이다. 예를 들어 DFU 컨트롤러는 앱을 실행하는

휴대폰이거나 nrfutil 과 함께 nRF5 개발 키트가 될 수 있다.

 

DFU 대상은 적어도 하나의 Active DFU Transport가 있는 DFU를 실행하는 장치이다. DFU 모드의

부트로더일 수 있고, 백그라운드에서 실행되는 DFU가 있는 어플리케이션(예 DFU over TFTP)일 수 있다.

그런 다음 DFU 컨트롤러는 펌웨어 이미지의 전송을 시작할 수 있으며, 이는 DFU 대상에서 수신되고 

검증된다. 이미지가 유효하면 장치가 Reset되고 부트로더가 이미지를 활설화하여 기존 펌웨어를

교체한다. 이미지의 유형에 따라 어플리케이션, SoftDevice 또는 업데이트를 수신하는 현재 부트로더를

대체할 수 있다.

이미지가 저장되는 위치와 복사 방법에 대한 자세한 내용은 Dual-bank and single-bank updates를 참조한다.

DFU 컨트롤러로 다음의 Nordic Tool을 사용할 수 있다.

  • nrfutil (version 2.2.0 or later)
  • nRF Connect for Desktop
  • Nordic's mobile apps, such as nRF Connect for Mobile.

DFU 모듈은 DFU 대상을 구현하는데 사용될 수 있다.

다음 순서도는 DFU 대상에서 구현해야하는 펌웨어 업데이트에 필요한 단계를 보여 준다.

펌웨어 업데이트 프로세스에 대한 이벤트 및 절차는 사용 중인 전송 프로토콜과 무관하다.

DFU 모듈에는 BLE, UART 및 USB CDC에 대한 구현이 포함되어 있다. (DFU protocol 참조)

DFU 컨트롤러는 DFU 전송에서 해당 메세지를 전송하여 이벤트를 트리거할 수 있다.

2. DFU procedure

nrfutil 도구는 하나 또는 두개의 업데이트가 포함된 zip파일을 생성한다.

(Creating a firmware package with nrfutil 참조)

단일 업데이트는 새로운 펌웨어 세부 정보와 바이너리 데이터가 포함된 초기화 패킷으로

구성된다. DFU 컨트롤러는 초기화 패킷을 보내고 DFU 대상의 확인을 기다린다.

DFU 대상은 초기화 패킷의 유효성을 검사하고 결과로 응답한다.

유효성 검사가 성공하면 DFU 컨트롤러가 바이너리 데이터를 보낸다.

DFU 대상이 바이너리 데이터를 수신하면 검증이 수행된다.

검증에 성공하면 DFU 대상이 Reset되고 부트로더가 새 펌웨어를 활성화한다.

Zip파일에 두개의 업데이트가 포함된 경우 DFU 컨트롤러는 DFU 대상이 DFU 모드로

들어갈 것을 예상하고 연결을 설정하고 두번째 초기화 패킷을 전송하여 두번째 업데이트를

수행하려고 시도한다. DFU 컨트롤러 어플리케이션 사용자 입장에서는 이러한 업데이트가

2단계로 수행되더라도 단일 업데이트로 인식된다.

단일 업데이트에는 다음 요소가 포함될 수 있다.

  • the application,
  • a SoftDevice,
  • the bootloader,
  • the bootloader and a SoftDevice.

업데이트에 어플리케이션과 SoftDevice( 및 부트로더)가 포함되어야 하는 경우 zip 패키지에는

두 개의 업데이트가 포함된다. 부트로더가 SoftDevice에 의존하는 경우(Bootloader dependencies참조)

SoftDevice 업데이트가 포함된 패키지에 부트로더가 포함될 수 있다.

 

새 SoftDevice(및 부트로더)의 활성화로 끝나는 첫번째 단계를 완료한 후 어플리케이션은 여전히

유효하지만 SoftDevice 종속성이 손상되어 실행할 수 없다. 두번째 단계에서 업데이트해야 한다.

SoftDevice로 패키지를 활성화한 후 부트로더는 어플리케이션 업데이트를 기대하는 DFU모드로

들어간다. 어플리케이션 업데이트는 선택사항(SoftDevice minor version update후에는 필요하지 않음)

이므로 부트로더의 비활성 시간 제한은 기본값(NRF_BL_DFU_CONTINUATION_TIMEOUT_MS)과

다른(더 짧은)값으로 설정된다.

반응형

+ Recent posts