Renesas RX65N에서 FreeRTOS OTA 데모를 다운로드, 빌드, 플래시, 실행합니다. - 무료RTOS

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

Renesas RX65N에서 FreeRTOS OTA 데모를 다운로드, 빌드, 플래시, 실행합니다.

중요

이 라이브러리는 더 이상 사용되지 않는 Amazon-FreeRTOS 리포지토리에서 호스팅됩니다. 새 프로젝트를 생성할 때는 여기서 시작하는 것이 좋습니다. 현재 사용되지 않는 Amazon-FreeRTOS 리포지토리를 기반으로 하는 기존 FreeRTOS 프로젝트가 이미 있는 경우에는 Amazon-FreeRTOS Github 리포지토리 마이그레이션 가이드 섹션을 참조하세요.

이 장에서는 Renesas RX65N에서 FreeRTOS OTA 데모 애플리케이션을 다운로드, 빌드, 플래시, 실행하는 방법을 보여줍니다.

운영 환경 설정

이 섹션의 절차에서는 다음 환경을 사용합니다.

  • IDE: e2 studio 7.8.0, e2 studio 2020-07

  • 도구 체인: CCRX Compiler v3.0.1

  • 대상 디바이스: RSKRX65N-2MB

  • 디버거: E2, E2 Lite 에뮬레이터

  • 소프트웨어: Renesas Flash Programmer, Renesas Secure Flash Programmer.exe, Tera Term

하드웨어를 설정하려면
  1. E2 Lite 에뮬레이터 및 USB 직렬 포트를 RX65N 보드 및 PC에 연결합니다.

  2. 전원을 RX65N에 연결합니다.

AWS 리소스 설정

  1. FreeRTOS 데모를 실행하려면 서비스에 액세스할 권한이 있는 IAM 사용자 AWS 계정이 있어야 합니다. AWS IoT 아직 AWS 계정 및 권한 설정의 단계를 완료하지 않았다면 지금 수행합니다.

  2. OTA 업데이트를 설정하려면 OTA 업데이트 사전 조건의 단계를 따릅니다. 특히 를 사용한 OTA 업데이트의 사전 조건 MQTT의 단계를 따르십시오.

  3. AWS IoT 콘솔을 엽니다.

  4. 왼쪽 탐색 창에서 관리를 선택한 후 사물을 선택하여 사물을 하나 생성합니다.

    AWS IoT에서 사물이란 특정 디바이스 또는 논리적 엔터티의 표현입니다. 사물은 물리적 장치 또는 센서일 수 있습니다(예: 전구 또는 벽면 스위치). 또한 연결되지 않지만 연결되는 장치 (예: 엔진 센서 또는 제어판이 있는 자동차) 와 관련된 애플리케이션 또는 물리적 개체의 인스턴스와 같은 논리적 개체일 수도 있습니다. AWS IoT AWS IoT 사물을 관리하는 데 도움이 되는 사물 레지스트리를 제공합니다.

    1. 생성을 선택하고 단일 사물 생성을 선택합니다.

    2. 사물의 이름을 입력하고 다음을 선택합니다.

    3. [Create certificate]를 선택합니다.

    4. 생성된 세 개의 파일을 다운로드한 다음 활성화를 선택합니다.

    5. 정책 연결을 선택합니다.

      다운로드할 파일이 표시된 콘솔 화면
    6. 디바이스 정책에서 생성한 정책을 선택합니다.

      MQTT를 사용하여 OTA 업데이트를 받는 각 디바이스는 사물로 등록되어야 AWS IoT 하며 사물에 나열된 것과 같은 정책이 연결되어 있어야 합니다. "Action""Resource" 객체의 항목에 대한 자세한 내용은 AWS IoT 핵심 정책 작업AWS IoT 핵심 작업 리소스에서 확인할 수 있습니다.

      참고
      • iot:Connect권한을 통해 디바이스를 MQTT를 AWS IoT 통해 연결할 수 있습니다.

      • AWS IoT 작업(.../jobs/*) 항목에 대한 iot:Subscribeiot:Publish 권한을 사용하면 연결된 디바이스에서 작업 알림과 작업 문서를 수신하고 작업 실행 완료 상태를 게시할 수 있습니다.

      • AWS IoT OTA 스트림 (.../streams/*) 주제에 대한 iot:Subscribeiot:Publish 권한을 통해 연결된 기기는 OTA 업데이트 데이터를 가져올 수 있습니다. AWS IoT MQTT를 통해 펌웨어 업데이트를 수행하려면 이러한 권한이 필요합니다.

      • iot:Receive권한을 통해 해당 주제에 대한 메시지를 연결된 기기에 AWS IoT Core 게시할 수 있습니다. MQTT 메시지를 전송할 때마다 이 권한을 확인합니다. 이 권한을 사용하면 주제를 현재 구독 중인 클라이언트에 대한 액세스 권한을 취소할 수 있습니다.

  5. 코드 서명 프로필을 만들고 코드 서명 인증서를 등록하려면 AWS

    1. 키와 인증을 생성하려면 Renesas MCU Firmware Update Design Policy의 섹션 7.3 ‘Generating ECDSA-SHA256 Key Pairs with OpenSSL’을 참조하세요.

    2. AWS IoT 콘솔을 엽니다. 왼쪽 탐색 창에서 관리를 선택하고 작업을 선택합니다. 작업 생성을 선택하고 OTA 업데이트 작업 생성을 선택합니다.

    3. 업데이트할 디바이스 선택에서 선택을 선택하고 이전에 생성한 사물을 선택합니다. 다음을 선택합니다.

    4. FreeRTOS OTA 업데이트 작업 생성 페이지에서 다음을 수행합니다.

      1. 펌웨어 이미지 전송을 위한 프로토콜 선택에서 MQTT를 선택합니다.

      2. 펌웨어 이미지 선택 및 서명에서 나를 위해 새 펌웨어 이미지에 서명을 선택합니다.

      3. 코드 서명 프로필에서 생성을 선택합니다.

      4. 코드 서명 프로필 생성 창에서 프로필 이름을 입력합니다. 디바이스 하드웨어 플랫폼에서 Windows 시뮬레이터를 선택합니다. 코드 서명 인증서에서 가져오기를 선택합니다.

      5. 인증서(secp256r1.crt), 인증서 프라이빗 키(secp256r1.key) 및 인증서 체인(ca.crt)을 찾아 선택합니다.

      6. 디바이스에 있는 코드 서명 인증서의 경로 이름을 입력합니다. 그런 다음 생성을 선택합니다.

  6. 코드 서명에 대한 액세스 권한을 AWS IoT부여하려면 다음 단계를 따르세요. 에 대한 코드 서명에 대한 액세스 권한 부여 AWS IoT

PC에 Tera Term이 설치되어 있지 않은 경우 https://ttssh2.osdn.jp/index.html.en에서 다운로드하여 여기에 표시된 대로 설정할 수 있습니다. 디바이스의 USB 직렬 포트를 PC에 연결했는지 확인하세요.

Tera Term 직렬 포트 설정 창

헤더 파일을 가져오고 구성하고 aws_demos 및 boot_loader를 빌드합니다.

시작하려면 최신 버전의 FreeRTOS 패키지를 선택합니다. 그러면 이 패키지가 프로젝트에서 자동으로 GitHub 다운로드되고 프로젝트에 임포트됩니다. 그러므로 FreeRTOS 구성과 애플리케이션 코드 작성에 집중할 수 있습니다.

  1. e2 studio 시작.

  2. 파일을 선택하고 가져오기…를 선택합니다.

  3. 르네사스 GitHub 프리어토스 (IoT 라이브러리 포함) 프로젝트를 선택합니다.

    e-squared studio 가져오기 창
  4. 추가 버전 확인...을 선택하여 다운로드 대화 상자를 표시합니다.

    e-squared studio 다운로드 대화 창
  5. 최신 패키지를 선택합니다.

    e-squared studio 모듈 다운로드 대화 창
  6. 동의를 선택하여 최종 사용자 사용권 계약을 수락합니다.

    e-squared studio EULA 대화 창
  7. 다운로드가 완료될 때까지 기다립니다.

    다운로드 진행률 표시줄
  8. aws_demosboot_loader 프로젝트를 선택한 다음 마침을 선택하여 프로젝트를 가져옵니다.

    프로젝트 가져오기 창
  9. 두 프로젝트 모두 프로젝트 속성을 엽니다. 탐색 창에서 도구 체인 편집기를 선택합니다.

    1. 현재 도구 체인을 선택합니다.

    2. 현재 빌더를 선택합니다.

    e-squared studio 속성 창
  10. 탐색 창에서 설정을 선택합니다. 도구 체인 탭을 선택하고 버전을 선택합니다.

    툴체인 변경 옵션이 포함된 Renesas CCRX 버전 v3.01.00의 툴체인 통합 설정.

    도구 설정 탭을 선택하고 변환기를 확장한 다음 출력을 선택합니다. 기본 창에서 출력 16진수 파일이 선택되어 있는지 확인한 다음 출력 파일 유형을 선택합니다.

    출력 16진수 파일, 출력 파일 유형, 출력 디렉토리 및 파일 분할 옵션과 같은 컴파일러 및 링커 옵션을 보여주는 C/C++ 빌드 구성 설정 창.
    스택 분석, 툴 체인 편집기, C/C++ 일반, MCU, 프로젝트 참조 등의 옵션이 포함된 인터페이스 설정 트리
  11. 부트 로더 프로젝트에서 projects\renesas\rx65n-rsk\e2studio\boot_loader\src\key\code_signer_public_key.h를 열고 퍼블릭 키를 입력합니다. 퍼블릭 키를 생성하는 방법에 대한 자세한 내용은 How to implement FreeRTOS OTA by using Amazon Web Services on RX65NRenesas MCU Firmware Update Design Policy 섹션 7.3 ‘Generating ECDSA-SHA256 Key Pairs with OpenSSL’을 참조하세요.

    CODE_SIGNER_PUBLIC_KEY에 대한 정의가 포함된 C 헤더 파일과 PEM으로 인코딩된 코드 서명자 공개 키 변수를 보여주는 코드 편집기.

    그런 다음 프로젝트를 빌드하여 boot_loader.mot를 생성합니다.

  12. aws_demos 프로젝트를 엽니다.

    1. AWS IoT 콘솔을 엽니다.

    2. 왼쪽 탐색 창에서 설정을 선택합니다. 디바이스 데이터 엔드포인트 텍스트 상자에서 사용자 지정 엔드포인트를 기록해 둡니다.

    3. 관리를 선택하고 사물을 선택합니다. 보드의 사물 이름을 기록해 두세요. AWS IoT

    4. aws_demos 프로젝트에서 demos/include/aws_clientcredential.h를 열고 다음 값을 지정합니다.

      #define clientcredentialMQTT_BROKER_ENDPOINT[] = "Your AWS IoT endpoint"; #define clientcredentialIOT_THING_NAME "The AWS IoT thing name of your board"
      AWS IoT 사물 이름과 브로커 엔드포인트 구성 설정을 보여주는 코드 스니펫.
    5. tools/certificate_configuration/CertificateConfigurator.html 파일을 엽니다.

    6. 이전에 다운로드한 인증서 PEM 파일과 프라이빗 키 PEM 파일을 가져옵니다.

    7. aws_clientcredential_keys.h 생성 및 저장을 선택하고 demos/include/ 디렉터리에서 이 파일로 바꿉니다.

      AWS IoT 콘솔에서 클라이언트 인증서 및 개인 키 PEM 파일을 제공하는 필드와 aws_clientcredential_keys.h 파일을 생성하고 저장하는 버튼이 있는 인증서 구성 도구.
    8. vendors/renesas/boards/rx65n-rsk/aws_demos/config_files/ota_demo_config.h 파일을 열고 다음 값을 지정합니다.

      #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";

      여기서 your-certificate-keysecp256r1.crt 파일의 값입니다. 인증서의 각 줄 뒤에 ‘\’를 추가해야 합니다. secp256r1.crt 파일을 생성하는 방법에 대한 자세한 내용은 How to implement FreeRTOS OTA by using Amazon Web Services on RX65NRenesas MCU Firmware Update Design Policy 섹션 7.3 ‘Generating ECDSA-SHA256 Key Pairs with OpenSSL’을 참조하세요.

      수정된 인증서 데이터가 포함된 PEM으로 인코딩된 코드 서명자 인증서 상수 문자열을 정의하는 C 코드를 보여 주는 소스 코드 파일입니다.
  13. 작업 A: 펌웨어의 초기 버전 설치

    1. vendors/renesas/boards/board/aws_demos/config_files/aws_demo_config.h 파일을 열고 #define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED를 주석으로 처리한 다음 CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED 또는 CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED를 정의합니다.

    2. demos/include/ aws_application_version.h 파일을 열고 펌웨어의 초기 버전을 0.9.2로 설정합니다.

      메이저, 마이너, 빌드 버전 번호의 매크로를 포함하여 애플리케이션의 버전 정의를 보여주는 코드 스니펫.
    3. 섹션 뷰어에서 다음 설정을 변경합니다.

      메모리 주소, 섹션 이름 (예: SU, SI, 레지스터), 인터페이스 구성 요소 (예: 네트워크 버퍼, 예외, 작업 버튼) 를 보여 주는 섹션 뷰어 창.
    4. 빌드를 선택하여 aws_demos.mot 파일을 생성합니다.

  14. Renesas Secure Flash Programmer를 사용하여 userprog.mot 파일을 생성합니다. userprog.motaws_demos.motboot_loader.mot의 조합입니다. 이 파일을 RX65N-RSK로 플래시하여 초기 펌웨어를 설치할 수 있습니다.

    1. https://github.com/renesas/Amazon-FreeRTOS-Tools를 다운로드하고 Renesas Secure Flash Programmer.exe를 엽니다.

    2. 초기 펌웨어 탭을 선택한 후 다음 파라미터를 설정합니다.

      • 프라이빗 키 경로 - secp256r1.privatekey의 위치입니다.

      • 부트 로더 파일 경로 - boot_loader.mot(projects\renesas\rx65n-rsk\e2studio\boot_loader\HardwareDebug)의 위치입니다.

      • 파일 경로 - aws_demos.mot(projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug)의 위치입니다.

      MCU, 펌웨어 검증, 시퀀스 번호, AES 키 경로 및 파일 경로 필드가 있는 Renesas 보안 플래시 프로그래머 창.
    3. init_firmware라는 이름의 디렉터리를 생성합니다. userprog.mot를 생성하여 init_firmware 디렉터리에 저장합니다. 생성이 성공했는지 확인합니다.

  15. RX65N-RSK에서 초기 펌웨어를 플래시합니다.

    1. https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html에서 최신 버전의 Renesas Flash Programmer(프로그래밍 GUI)를 다운로드합니다.

    2. vendors\renesas\rx_mcu_boards\boards\rx65n-rsk\aws_demos\flash_project\erase_from_bank\ erase.rpj 파일을 열어 뱅크에 있는 데이터를 지웁니다.

    3. 시작을 선택하여 뱅크를 지웁니다.

      RX Group 마이크로컨트롤러 프로젝트 세부 정보, 파일 경로 및 시작 및 확인 버튼을 사용한 지우기, 프로그래밍 및 확인과 같은 플래시 작동 옵션을 보여주는 Renesas Flash Programer 창.
    4. userprog.mot를 플래시하려면 찾아보기…를 선택하고 init_firmware 디렉터리로 이동한 다음, userprog.mot 파일을 선택하고 시작을 선택합니다.

      마이크로 컨트롤러 RX 그룹, 프로그램 파일 찾아보기 옵션, 지우기 및 시작 버튼, 선택한 지우기 블록의 상태 세부 정보를 포함한 지우기 작업 설정을 보여주는 Renesas Flash Programer 창.
  16. RX65N-RSK에 펌웨어 버전 0.9.2(초기 버전)가 설치되었습니다. 이제 RX65N-RSK 보드에서 OTA 업데이트를 수신합니다. PC에서 Tera Term을 연 경우 초기 펌웨어가 실행될 때 다음과 같은 내용이 표시됩니다.

    ------------------------------------------------- RX65N secure boot program ------------------------------------------------- Checking flash ROM status. bank 0 status = 0xff [LIFECYCLE_STATE_BLANK] bank 1 status = 0xfc [LIFECYCLE_STATE_INSTALLING] bank info = 1. (start bank = 0) start installing user program. copy secure boot (part1) from bank0 to bank1...OK copy secure boot (part2) from bank0 to bank1...OK update LIFECYCLE_STATE from [LIFECYCLE_STATE_INSTALLING] to [LIFECYCLE_STATE_VALID] bank1(temporary area) block0 erase (to update LIFECYCLE_STATE)...OK bank1(temporary area) block0 write (to update LIFECYCLE_STATE)...OK swap bank... ------------------------------------------------- RX65N secure boot program ------------------------------------------------- Checking flash ROM status. bank 0 status = 0xf8 [LIFECYCLE_STATE_VALID] bank 1 status = 0xff [LIFECYCLE_STATE_BLANK] bank info = 0. (start bank = 1) integrity check scheme = sig-sha256-ecdsa bank0(execute area) on code flash integrity check...OK jump to user program 0 1 [ETHER_RECEI] Deferred Interrupt Handler Task started 1 1 [ETHER_RECEI] Network buffers: 3 lowest 3 2 1 [ETHER_RECEI] Heap: current 234192 lowest 234192 3 1 [ETHER_RECEI] Queue space: lowest 8 4 1 [IP-task] InitializeNetwork returns OK 5 1 [IP-task] xNetworkInterfaceInitialise returns 0 6 101 [ETHER_RECEI] Heap: current 234592 lowest 233392 7 2102 [ETHER_RECEI] prvEMACHandlerTask: PHY LS now 1 8 3001 [IP-task] xNetworkInterfaceInitialise returns 1 9 3092 [ETHER_RECEI] Network buffers: 2 lowest 2 10 3092 [ETHER_RECEI] Queue space: lowest 7 11 3092 [ETHER_RECEI] Heap: current 233320 lowest 233320 12 3193 [ETHER_RECEI] Heap: current 233816 lowest 233120 13 3593 [IP-task] vDHCPProcess: offer c0a80a09ip 14 3597 [ETHER_RECEI] Heap: current 233200 lowest 233000 15 3597 [IP-task] vDHCPProcess: offer c0a80a09ip 16 3597 [IP-task] IP Address: 192.168.10.9 17 3597 [IP-task] Subnet Mask: 255.255.255.0 18 3597 [IP-task] Gateway Address: 192.168.10.1 19 3597 [IP-task] DNS Server Address: 192.168.10.1 20 3600 [Tmr Svc] The network is up and running 21 3622 [Tmr Svc] Write certificate... 22 3697 [ETHER_RECEI] Heap: current 232320 lowest 230904 23 4497 [ETHER_RECEI] Heap: current 226344 lowest 225944 24 5317 [iot_thread] [INFO ][DEMO][5317] ---------STARTING DEMO--------- 25 5317 [iot_thread] [INFO ][INIT][5317] SDK successfully initialized. 26 5317 [iot_thread] [INFO ][DEMO][5317] Successfully initialized the demo. Network type for the demo: 4 27 5317 [iot_thread] [INFO ][MQTT][5317] MQTT library successfully initialized. 28 5317 [iot_thread] [INFO ][DEMO][5317] OTA demo version 0.9.2 29 5317 [iot_thread] [INFO ][DEMO][5317] Connecting to broker... 30 5317 [iot_thread] [INFO ][DEMO][5317] MQTT demo client identifier is rx65n-gr-rose (length 13). 31 5325 [ETHER_RECEI] Heap: current 206944 lowest 206504 32 5325 [ETHER_RECEI] Heap: current 206440 lowest 206440 33 5325 [ETHER_RECEI] Heap: current 206240 lowest 206240 38 5334 [ETHER_RECEI] Heap: current 190288 lowest 190288 39 5334 [ETHER_RECEI] Heap: current 190088 lowest 190088 40 5361 [ETHER_RECEI] Heap: current 158512 lowest 158168 41 5363 [ETHER_RECEI] Heap: current 158032 lowest 158032 42 5364 [ETHER_RECEI] Network buffers: 1 lowest 1 43 5364 [ETHER_RECEI] Heap: current 156856 lowest 156856 44 5364 [ETHER_RECEI] Heap: current 156656 lowest 156656 46 5374 [ETHER_RECEI] Heap: current 153016 lowest 152040 47 5492 [ETHER_RECEI] Heap: current 141464 lowest 139016 48 5751 [ETHER_RECEI] Heap: current 140160 lowest 138680 49 5917 [ETHER_RECEI] Heap: current 138280 lowest 138168 59 7361 [iot_thread] [INFO ][MQTT][7361] Establishing new MQTT connection. 62 7428 [iot_thread] [INFO ][MQTT][7428] (MQTT connection 81cfc8, CONNECT operation 81d0e8) Wait complete with result SUCCESS. 63 7428 [iot_thread] [INFO ][MQTT][7428] New MQTT connection 4e8c established. 64 7430 [iot_thread] [OTA_AgentInit_internal] OTA Task is Ready. 65 7430 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [Ready] Event [Start] New state [RequestingJob] 66 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled. 67 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion. 68 7436 [ETHER_RECEI] Heap: current 128248 lowest 127992 69 7480 [OTA Agent T] [INFO ][MQTT][7480] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS. 70 7480 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/$next/get/accepted 71 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled. 72 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion. 73 7530 [OTA Agent T] [INFO ][MQTT][7530] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS. 74 7530 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/notify-next 75 7530 [OTA Agent T] [prvRequestJob_Mqtt] Request #0 76 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8) MQTT PUBLISH operation queued. 77 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8, PUBLISH operation 818b80) Waiting for operation completion. 78 7552 [OTA Agent T] [INFO ][MQTT][7552] (MQTT connection 81cfc8, PUBLISH operation 818b80) Wait complete with result SUCCESS. 79 7552 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [RequestingJob] Event [RequestJobDocument] New state [WaitingForJob] 80 7552 [OTA Agent T] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:rx65n-gr-rose ] 81 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: execution 82 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobId 83 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobDocument 84 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: afr_ota 85 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: protocols 86 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: files 87 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: filepath 99 7651 [ETHER_RECEI] Heap: current 129720 lowest 127304 100 8430 [iot_thread] [INFO ][DEMO][8430] State: Ready Received: 1 Queued: 0 Processed: 0 Dropped: 0 101 9430 [iot_thread] [INFO ][DEMO][9430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 102 10430 [iot_thread] [INFO ][DEMO][10430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 103 11430 [iot_thread] [INFO ][DEMO][11430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 104 12430 [iot_thread] [INFO ][DEMO][12430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 105 13430 [iot_thread] [INFO ][DEMO][13430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 106 14430 [iot_thread] [INFO ][DEMO][14430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0 107 15430 [iot_thread] [INFO ][DEMO][15430] State: WaitingForJob Received: 1 Queued: 0 Processed: 0 Dropped: 0
  17. 작업 B: 펌웨어 버전 업데이트

    1. demos/include/aws_application_version.h 파일을 열고 APP_VERSION_BUILD 토큰 값을 0.9.3으로 높입니다.

    2. 프로젝트를 다시 빌드합니다.

  18. Renesas Secure Flash Programmer로 userprog.rsu 파일을 생성하여 펌웨어의 버전을 업데이트합니다.

    1. Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe 파일을 엽니다.

    2. 펌웨어 업데이트 탭을 선택한 후 다음 파라미터를 설정합니다.

      • 파일 경로 - aws_demos.mot 파일(projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug)의 위치입니다.

    3. update _firmware이라는 디렉터리를 생성합니다. userprog.rsu를 생성하여 update_firmware 디렉터리에 저장합니다. 생성이 성공했는지 확인합니다.

      MCU 선택, 펌웨어 검증 유형, 시퀀스 번호, AES MAC 키 필드 및 보안 펌웨어 생성을 위한 파일 경로 입력이 있는 Renesas 보안 플래시 프로그래머 창.
  19. 업데이트를 저장할 Amazon S3 버킷 생성에 설명된 대로 펌웨어 업데이트 userproj.rsu를 Amazon S3 버킷에 업로드합니다.

    폴더, 업로드, 버전 및 권한 옵션이 포함된 Amazon S3 버킷 관리 인터페이스
  20. RX65N-RSK 펌웨어를 업데이트하는 작업을 생성합니다.

    AWS IoT Jobs는 하나 이상의 연결된 장치에 보류 중인 Job을 알리는 서비스입니다. 작업을 사용하여 디바이스 플릿을 관리하거나, 디바이스의 펌웨어 및 보안 인증서를 업데이트하거나, 디바이스 재시작 및 진단과 같은 관리 작업을 수행할 수 있습니다.

    1. AWS IoT 콘솔에 로그인합니다. 탐색 창에서 관리를 선택하고 작업을 선택합니다.

    2. 작업 생성을 선택하고 OTA 업데이트 작업 생성을 선택합니다. 사물을 선택하고 다음을 선택합니다.

    3. 다음과 같이 FreeRTOS OTA 업데이트 작업을 생성합니다.

      • MQTT를 선택합니다.

      • 이전 섹션에서 생성한 코드 서명 프로필을 선택합니다.

      • Amazon S3 버킷에 업로드한 펌웨어 이미지를 선택합니다.

      • 디바이스에 있는 펌웨어 이미지의 경로 이름test를 입력합니다.

      • 이전 섹션에서 생성한 IAM 역할을 선택합니다.

    4. 다음을 선택합니다.

      펌웨어 이미지 서명 및 OTA 업데이트 설정 (새 펌웨어 서명, 이전에 서명된 펌웨어 선택, 사용자 지정 서명된 펌웨어 사용, 코드 서명 프로필, 펌웨어 이미지 파일, 장치 경로, OTA 업데이트 작업을 위한 IAM 역할 지정) 옵션이 포함됩니다.
    5. ID를 입력한 다음 생성을 선택합니다.

  21. Tera Term을 다시 열어 펌웨어가 OTA 데모 버전 0.9.3으로 성공적으로 업데이트되었는지 확인합니다.

    스레드의 초기화 및 브로커 연결을 보여 주는 명령줄 출력.
  22. AWS IoT 콘솔에서 작업 상태가 성공으로 표시되는지 확인합니다.

    리소스 1개가 성공했음을 보여주는 AFR OTA 데모 테스트 작업 개요입니다.