• 検索結果がありません。

REファミリ UARTを使用したファームウェアアップデートの実現方法とサンプルコード アプリケーションノート

N/A
N/A
Protected

Academic year: 2021

シェア "REファミリ UARTを使用したファームウェアアップデートの実現方法とサンプルコード アプリケーションノート"

Copied!
75
0
0

読み込み中.... (全文を見る)

全文

(1)

アプリケーションノート

RE ファミリ

UART を使用したファームウェアアップデートの実現方法とサンプルコード

要旨

本資料は、RE ファミリを使用したファームウェアアップデートについて実現するためのアプリケーショ ンノートです。 ルネサスでは、ファームウェアアップデート機能に関して、電源の瞬停も考慮した、各マイコンファミリ で共通の設計方針でファームウェアアップデート機能を実現しています。共通の設計方針に関しては ルネサスMCU の共通の設計方針に関しては「ルネサス MCU におけるファームウェアアップデートの設 計方針(R01AN5548)」を参照してください。

動作確認デバイス

RE01_1500KB グループ RE01_256KB グループ

関連ドキュメント

1. ルネサス MCU におけるファームウェアアップデートの設計方針(R01AN5548) 2. RE01 グループ(1.5M バイトフラッシュメモリ搭載製品)ユーザーズマニュアル ハードウェア編 (R01UH0796) 3. RE01 グループ(256K バイトフラッシュメモリ搭載製品)ユーザーズマニュアル ハードウェア編 (R01UH0894)

(2)

目次

1.

概要

... 4

1.1 制限事項 ... 4 1.2 用語一覧 ... 4 1.3 製品構成 ... 5 1.4 開発環境 ... 6 1.5 ROM / RAM サイズ情報 ... 7 1.6 スタックサイズ情報 ... 7 1.7 セクション情報 ... 8

2.

システム構成

... 9

2.1 RE01_1500KB Evaluation Kit 使用時 ... 12

2.2 RE01_256KB Evaluation Kit 使用時 ... 12

3.

機能説明

... 13

3.1 ハードウェア機能 ... 13

3.1.1 Background Operation (BGO) ... 13

3.1.2 Memory Protection ... 13 3.1.3 電源供給モードと電力制御モード ... 13 3.2 ソフトウェア機能 ... 15 3.2.1 RE ソフトウェア開発キット ... 15 3.2.2 ブートローダ ... 15

4.

データフォーマット

... 16

4.1 メモリマップ ... 16 4.2 署名検証 ... 17 4.2.1 ブートローダ、ユーザプログラムプロジェクトの変更 ... 17 4.2.1.1 コンフィグレーションの変更... 17 4.2.1.2 TinyCrypt のインストール ... 17 4.2.2 鍵ペア生成 ... 18 4.2.3 Mot ファイル変換ツール ... 19 4.2.3.1 Initial Firm タブ ... 19 4.2.3.2 Update Firm タブ... 20 4.3 Mot ファイル変換ツール ... 21 4.3.1 session key タブ ... 21 4.3.2 Key Wrap タブ ... 21 4.3.3 Initial Firm タブ ... 22 4.3.4 Update Firm タブ ... 24

5.

サンプルプログラムの動作

... 25

5.1 準備 ... 26 5.2 サンプルソフトウェアの動作方法 ... 27 5.2.1 ブートローダとユーザプログラムのMotorola ファイルの作成 ... 27 5.2.2 ブートローダとユーザプログラムV.1.00 を結合した Motorola ファイル作成 ... 30 5.2.3 ファームウェアアップデートファイル(rsu ファイル)作成 ... 32 5.2.4 ブートローダとユーザプログラムV.1.00 のダウンロードと実行 ... 34

(3)

5.2.5 アップデートするユーザプログラムのダウンロード ... 40 5.3 サンプルソフトウェア RE01_1500KB BGO 非使用から使用への切り替え方法 ... 43

6.

API 情報 ... 46

6.1 サポートされているツールチェイン ... 46 6.2 ヘッダファイル ... 46 6.3 整数型 ... 46 6.4 コンフィグレーション... 47 6.5 API データ構造 ... 47 6.6 戻り値 ... 47

7.

API 関数 ... 48

7.1 ブートローダAPI ... 49 7.1.1 R_FWUP_SecureBoot ... 49 7.1.2 R_FWUP_ExecuteFirmware ... 50 7.2 ユーザプログラムアップデートAPI ... 51 7.2.1 R_FWUP_Open... 51 7.2.2 R_FWUP_Close ... 52 7.2.3 R_FWUP_Operation ... 53 7.2.4 R_FWUP_SetEndOfLife ... 54 7.2.5 R_FWUP_SoftwareReset ... 55

7.3 FreeRTOS with IoT Library OTA 使用 API ... 56

7.3.1 R_FWUP_CreateFileForRx ... 56 7.3.2 R_FWUP_Abort ... 57 7.3.3 R_FWUP_WriteBlock ... 58 7.3.4 R_FWUP_CloseFile ... 59 7.3.5 R_FWUP_CheckFileSignature ... 60 7.3.6 R_FWUP_ReadAndAssumeCertificate ... 61 7.3.7 R_FWUP_ResetDevice ... 62 7.3.8 R_FWUP_ActivateNewImage ... 63 7.3.9 R_FWUP_SetPlatformImageState ... 64 7.3.10 R_FWUP_GetPlatformImageState... 65 7.3.11 R_FWUP_GetVersion ... 66

8.

ファームウェアアップデートの詳細動作

... 67

8.1 ブートローダ起動時の処理フロー ... 67 8.2 ファームウェアアップデート時の処理フロー ... 72

改訂記録

... 73

(4)

1. 概要

1.1 制限事項

本機能を使用する際の起動モードは通常起動モードです。 本機能を使用する際の電源供給モードは、電源供給モードを全電源供給モード(ALLPWON)としてくださ い。その他のモードでは、Flash へのアクセスができない為機能しません。 起動モードならびに電源供給モードについては、RE ファミリのユーザーズマニュアルをご参照くださ い。

1.2 用語一覧

単語の説明や略語を省略しない場合の名称を記載。 ブートローダ ユーザプログラムがインストールされている場合に、 ユーザプログラム実行前に、ユーザプログラムの検証を 行うプログラムです。 起動モードSCI/USB ブートモードで動作するブート ファームウェアとは異なるプログラムです。 イニシャルファーム 工場出荷時に書き込む最初のユーザプログラム Boot Loader、ブートローダ領域 ユーザアプリケーションプログラムが変更されていない ことを検証するプログラム。とそのプログラムが置かれ ている領域 ユーザプログラム領域、exe 領域 ユーザアプリケーションプログラムの実行領域 ユーザシステム動作およびファームウェアアップデート 動作を行うソフトウェアを格納する領域 Temporary area, Tmp 領域 書き換え用一時領域 exe 領域と同一容量で、ファームウェアアップデート時 に新たなファームウェアを一時的に保持するための領域 ダウンロードデータフォーマット領域 アップデートするユーザアプリケーションプログラムの ステータスや検証情報などを情報領域 詳細は、ルネサスMCU におけるファームアップデート設 計方針(R01AN5548) 7.1 ダウンロードデータフォーマット

FAW Flash Access Window

コードフラッシュメモリ上のユーザ領域でFAW に設定し

た領域以外をコマンドロック状態にする

FSPR アクセスウィンドウプロテクションビット

(5)

1.3 製品構成

本製品には、のファイルが含まれます。 ファイル/ディレクトリ (太字) 名 内容 R01AN5645JJ0100.pdf 本ドキュメント(日本語) RE01_CMSIS_1_0_0_fwup モジュールフォルダ RE01_1500KB_DFP パッケージフォルダ(1500KB) Device FW Updater ドライバ RE01_256KB_DFP パッケージフォルダ(256KB) Device FW Updater ドライバ Demos デモプロジェクトフォルダ re01_1500kb_ek_fwup_sample.zip RE01 1500KB 用のサンプル re01_1500kb_ek_fwup_boot_loader ブートローダプロジェクト: 出荷時に工場で書き込むブートローダのプロジェ クト re01_1500kb_ek_fwup_user_program_V100 ユーザプログラムプロジェクト: ファームウェアアップデート後のユーザプログラ ム 出荷時に工場で書き込むユーザプログラムのプロ ジェクト re01_1500kb_ek_fwup_user_program_V101 ユーザプログラムプロジェクト: フィールドで書き込むユーザプログラムのプロ ジェクト re01_256kb_ek_fwup_sample.zip RE01 256KB 用のサンプル re01_256kb_ek_fwup_boot_loader ブートローダプロジェクト: 出荷時に工場で書き込むブートローダのプロジェ クト re01_256kb_ek_fwup_user_program_V100 ユーザプログラムプロジェクト: ファームウェアアップデート後のユーザプログラ ム 出荷時に工場で書き込むユーザプログラムのプロ ジェクト re01_256kb_ek_fwup_user_program_V101 ユーザプログラムプロジェクト: フィールドで書き込むユーザプログラムのプロ ジェクト Tools renesas_secure_flash_programmer.zip ユーザプログラムにファームアップデート用のダ ウンロードデータフォーマットを付加もしくは ブートローダとイニシャルファームを結合した Motorola S フォーマットファイルを作成するツー ル

(6)

1.4 開発環境

サンプルプログラムは以下の開発環境にて開発しました。 ユーザーアプリケーション開発時は以下のバージョン、またはより新しいものをご使用ください。 Table 1-1 動作確認環境(1) 項目 内容 統合開発環境 ルネサスエレクトロニクス社製 e2studio Version 2020-10

C コンパイラ GCC ARM Embedded Version 6.3.1.20170620 GNU 6-2017-q2-update コンパイルオプション:統合開発環境のデフォルト設定 以下を変更しています。  リンカファイル設定:  セキュアブートプロジェクト $PROJ_DIR$¥script¥RE01_1500KB_SecureBoot.ld  ユーザプログラムプロジェクト $PROJ_DIR$¥script¥RE01_1500KB_UserProgram.ld エミュレータデバッガ Segger 社製 JLink OB 使用マイコン R7F0E015D2CFB 144pin

使用ボード ルネサス エレクトロニクス社製 Evaluation Board RE01 1500KB 型名:RTK70E015DSxxxxxBE ボード設定の詳細は「2 システム構成」をご参照ください。 RE01 1500KB CMSIS Pack Ver.1.20 Table 1-2 動作確認環境(2) 項目 内容 統合開発環境 ルネサスエレクトロニクス社製 e2studio Version 2020-10

C コンパイラ GCC ARM Embedded Version 6.3.1.20170620 GNU 6-2017-q2-update コンパイルオプション:統合開発環境のデフォルト設定 以下を変更しています。  リンカファイル設定:  セキュアブートプロジェクト $PROJ_DIR$¥script¥RE01_256KB_SecureBoot.ld  ユーザプログラムプロジェクト $PROJ_DIR$¥script¥RE01_256KB_UserProgram.ld エミュレータデバッガ Segger 社製 JLink 使用マイコン R7F0E01182CFP 100pin

使用ボード ルネサス エレクトロニクス社製 Evaluation Kit RE01 256KB 型名:RTK70E0118SxxxxxBJ

RE01 256KB CMSIS

(7)

1.5 ROM / RAM サイズ情報

以下にFW Updater ドライバの ROM(CODE) / RAM サイズ情報を示します。RE01_1500KB,RE01_256KB ともに同じサイズになります。

GCC:最適化:-O2 にて計測

Table 1-3 ROM / RAM サイズ情報

コンパイラ ROM(KB) 注 RAM(KB)

Code Data Code Data

ブートローダ 0.1 2 3.8 8 ユーザプログ ラム 1 0.1 2.1 0.1 【注】 1. ROM サイズはコンフィグファイルの設定で全機能を有効にした場合の数値です。

1.6 スタックサイズ情報

以下にスタックサイズ情報を示します。RE01_1500KB,RE01_256KB ともに同じサイズになります。 ブートローダ :232 バイト ユーザプログラム:4128 バイト

(8)

1.7 セクション情報

以下のセクションにコードを配置します。 Table 1-4 ブートローダ プロジェクトのセクション(RE01_1500KB) アドレス 領域 セクション名 0000 0000h - 0000 FFFFh ブートローダ領域 セクション指定無し 【注】 リンカファイルの設定により、セクション指定が無いコードを全てセキュアブート領域に配置しま す。 Table 1-5 ユーザプログラムプロジェクトのセクション(RE01_1500KB) アドレス 領域 セクション名 0001 0300h – 000C 7FFFh ユーザプログラム領域 セクション指定無し 注 【注】 リンカファイルの設定により、セクション指定が無いコードを全てユーザプログラム領域に配置しま す。 Table 1-6 ブートローダプロジェクトのセクション(RE01_256KB) アドレス 領域 セクション名 0000 0000h - 0000 FFFFh ブートローダ領域 セクション指定無し 注 【注】 リンカファイルの設定により、セクション指定が無いコードを全てセキュアブート領域に配置しま す。 Table 1-7 ユーザプログラムプロジェクトのセクション(RE01_256KB) アドレス 領域 セクション名 0001 0300h – 0003 FFFFh ユーザプログラム領域 セクション指定無し 注 【注】 リンカファイルの設定により、セクション指定が無いコードを全てユーザプログラム領域に配置しま す。

(9)

2. システム構成

本アプリケーションノートでは、以下2 つの動作を確認できるサンプルプログラムです。

・工場出荷時のファームウェアの書き込み

・工場出荷後のフィールドのファームアップデート動作

フィールドのファームアップデートは、PC から Tera Term を使用して、USB 経由でアップデートファーム をRE01 Evaluation Kit に送ります。RE01 Evaluation Kit 上の USB-Serial 変換チップを経由して RE01 に

はUART からアップデートファームを渡します。RE01 は受け取ったファームウェアを更新する動作を行い ます。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite SWD USB-Serial UART User Program V.1.01 Motorola File ② User Program V.1.00 Boot Loader User Program V.1.01 User Program V.1.00 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

(10)

0018 0000h 0010 0000h 0008 0000h 0000 0000h 2000 0000h 2004 0000h 0008 0300h 0010 0300h Temporary area User Program area 000C 8000h 0001 0000h 0000 0000h Boot Loader area SRAM User Program Download data format area 0001 0300h 000C 8300h Temporary Download data format area

w/o BGO

with BGO

(11)

0018 0000h 0000 0000h 2000 0000h 2004 0000h Temporary area User Program area 0002 8000h 0001 0000h Boot Loader area SRAM User Program Download data format area 0001 0300h 0002 8300h Temporary Download data format area

w/o BGO

Figure 2-3 RE01 256KB メモリマップ

(12)

2.1 RE01_1500KB Evaluation Kit 使用時

RE01_1500KB Evaluation Kit Board(以下 EK ボード)と PC の接続方法について説明します。

PC と EK ボード上の JLink OB を USB ケーブルで接続、また更新するユーザプログラムを送信するため のUSB シリアルを USB ケーブルで接続します。Figure 2-4 を参照してください。

Figure 2-4 PC と JLink OB と RE01_1500KB Evaluation Kit の配線

2.2 RE01_256KB Evaluation Kit 使用時

RE01_256KB EK ボードと PC の接続方法について説明します。

PC と EK ボード上の JLink OB を USB ケーブルで接続、また更新するユーザプログラムを送信するため のUSB シリアルを USB ケーブルで接続します。Figure 2-4 を参照してください。

Figure 2-5 PC と JLink OB と RE01_256KB Evaluation Kit の配線

USB (JLink OB)

USB serial (USART)

USB (JLink OB)

(13)

3. 機能説明

この章では、RE ファミリでファームウェアアップデート機能を実現するために使用しているデバイス搭 載機能やソフトウェアについて記載します。

3.1 ハードウェア機能

ファームウェアアップデート機能に使用しているハードウェア機能についてここでは説明します。 各機能の詳細は各デバイスのハードウェアユーザズマニュアルを参照してください。

3.1.1 Background Operation (BGO)

フラッシュメモリ内蔵マイコンは、フラッシュメモリ書き換え時にはRAM にアプリケーション書き換え 動作を行うプログラムを配置した後、RAM 上からフラッシュメモリ書き換えコマンドを実行する必要があ ります。 この為、システム動作を維持したままフラッシュメモリを書き換えることは非常に難しいものでした。 RE01 1500KB では、フラッシュメモリに搭載している BGO 機能により、フラッシュメモリの書き換え 領域と実行領域が違う領域にある場合、RAM でプログラムを実行する必要がありません。このため、シス テム動作を維持したままフラッシュメモリを書き換えることが非常に容易となります。

3.1.2 Memory Protection

ブートローダには、実行するユーザプログラムの検証を行うため、不揮発性メモリに格納し、上書きがで きてはいけない仕様を求められています。

MCU の機能である FAW と FAW の設定を行うレジスタの書き換えを禁止する FSPR をセットすることに より、ブートローダ領域が書き換え禁止対象となります。 !!!!注意!!!! この設定を行うと、設定を行ったチップはブランクチップに戻すことができなくなります。

3.1.3 電源供給モードと電力制御モード

ファームウェアアップデート機能を使用する際は、電源供給モードと電力制御モードの設定をする必要が あります。

電源供給モードには全電源供給モード(ALLPWON)と Flash 以外電源供給モード(EXFPWON)と最小電源供 給モード(MINPWON)の3種類があります。

電力制御モードはBOOST モード、NORMAL モード、VBB モードの3つがあり、それぞれ動作周波数を 設定することができます。

ファームウェアアップデート機能を使用するには、Table 3-1 の中で〇がついている設定にする必要があ ります。

(14)

Table 3-1 電源供給モードと電源制御モードの設定表 電源供給モード 電力制御モード 動作周波数範囲 ファームウェアアップデート 機能の使用 ALLPWON BOOST 32MHz~64MHz × 1MHz~32MHz 〇 32.768kHz~1MHz × 32.768kHz 未満 × NORMAL High-Speed 1MHz~32MHz 〇 32.768kHz~1MHz × 32.768kHz 未満 × Low-Speed 1MHz~2MHz 〇 32.768kHz~1MHz × 32.768kHz 未満 × Subosc-Speed 32.768kHz × 32.768kHz 未満 × VBB 32.768kHz × 32.768kHz 未満 × EXFPWON 全範囲 × MINPWON 全範囲 ×

(15)

3.2 ソフトウェア機能

ファームウェアアップデート機能に使用しているソフトウェア機能についてここでは説明します。

3.2.1 RE ソフトウェア開発キット

RE ファミリで提供する Arm®CMSIS に準拠した API のドライバソフトウェアおよびルネサスドライバ ソフトウェアです。 各ドライバは下記URL からダウンロード可能です。 https://www.renesas.com/software-tool/re-software-development-kit ファームウェアアップデート機能で使用するドライバは R_USART、R_FLASH、R_DTC を使用します。

3.2.2 ブートローダ

RE ファミリでのブートローダ機構の動作とファームウェアの更新については、 ルネサスMCU におけるファームアップデート設計方針(R01AN5548) 5.2 方式②:バッファリング先=バンクの片方(デュアルバンク/バンクスワップ機構未使用) を参照してください。

(16)

4. データフォーマット

アップデートファイルのデータフォーマットは、ルネサスMCU におけるファームアップデート設計方針 (R01AN5548) 7.1 ダウンロードデータフォーマット を参照してください。

4.1 メモリマップ

本アプリケーションノートで設定しているメモリマップを以下に示します。

RE01 1500KB BGO 不使用 RE01 1500KB BGO 使用 RE01 256KB BGO 不使用 (BGO 非搭載) アドレス サイズ (バイト) アドレス サイズ (バイト) アドレス サイズ (バイト) ブートローダ 領域 0x00000000 – 0x0000FFFF 64K 0x00000000 – 0x0007FFFF 512K 0x00000000 – 0x0000FFFF 64K ユーザプログ ラム領域のダ ウンロード フォーマット 領域 0x00010000- 0x000102FF 0.3K 0x00080000- 0x000802FF 0.3K 0x00010000- 0x000102FF 0.3K ユーザプログ ラム領域 0x00010300- 0x000C7FFF 735K 0x00080300- 0x000FFFFF 511K 0x00010300- 0x00027FFF 95K Tmp 領域のダ ウンロード フォーマット 領域 0x000C8000- 0x000C82FF 0.3K 0x00100000- 0x001002FF 0.3K 0x00028000- 0x000282FF 0x300 Tmp 領域 0x000C8300- 0x0017FFFF 735K 0x00100300- 0x0017FFFF 511K 0x00028300- 0x0003FFFF 95K

(17)

4.2 署名検証

ブートローダには、書き込まれているユーザプログラムの正当性の検証が求められます。 本アプリケーションノートに付随しているサンプルプログラムでは、簡単にファームアップデートを体感 できるように、SHA256 によるハッシュ比較を行っています。 署名検証機能を有効にするためには以下を実施してください。

4.2.1 ブートローダ、ユーザプログラムプロジェクトの変更

4.2.1.1 コンフィグレーションの変更

ブートローダならびにユーザプログラムのr_fwup_config.h ファイルの #define FWUP_CFG_SIGNATURE_VERIFICATION (0) と設定してください。

4.2.1.2 TinyCrypt のインストール

オープンソースプログラムのTinyCrypt が必要になります。 TinyCrypt : https://01.org/tinycrypt TinyCrypt ソースコード: https://github.com/intel/tinycrypt https://github.com/intel/tinycrypt/archive/v0.2.8.zip TinyCrypt ソースコードを上記ダウンロードページからダウンロードし、以下の tinycrypt-0.2.8¥lib¥include¥tinycrypt フォルダ内のヘッダファイル ならびに tinycrypt-0.2.8¥lib¥source フォルダ内のソースコード を 各プロジェクト内の¥src¥tinycrypt フォルダにコピーしてください。 tinycrypt-0.2.8¥lib¥include¥tinycrypt tinycrypt-0.2.8¥lib¥source ecc.h ecc_dsa.h ecc_platform_specific.h ecc.c ecc_dsa.c

(18)

TinyCrypto ヘッダファイル TinyCrypto ソースファイル 各プロジェクトのsrc¥tinycrypt フォルダにコピー Figure 4-1 TinyCrypt のソースコードとヘッダファイルをプロジェクトにコピー

4.2.2 鍵ペア生成

ルネサスMCU におけるファームアップデート設計方針(R01AN5548) 7.3 OpenSSL での ECDSA+SHA256 用の鍵ベア生成方法 7.4 OpenSSL でのテスト用署名生成/検証方法 を参照して、ECDSA の鍵ペアを生成してください。

(19)

4.2.3 Mot ファイル変換ツール

署名検証を使用する場合、本サンプルに付随するMot ファイル変換ツールではなく、以下サイトに置か れているツールを使用してください。 以下に置いてあるexe ファイルだけではなく.dll ファイルも一緒にダウンロードしてください。 https://github.com/renesas/Amazon-FreeRTOS-Tools/tree/master/v2

4.2.3.1 Initial Firm タブ

以下設定を行ってください 項目 設定値 Select MCU 使用するデバイスに合わせて、ブートローダを選択

Select Firmware Verification Type sig-sha256-ecdsa

Private Key 4.2.2 鍵ペア生成 で生成した Private key ファイル Select Output File Bank0 User Program(Binary Format)を選択 Firmware Sequence Number 1

File Path(Motorola Format) ユーザアプリケーションプログラムをビルド後に生成され るMotorola S フォーマットファイル(*.srec)を指定

(20)

4.2.3.2 Update Firm タブ

以下設定を行ってください

項目 設定値

Select MCU 使用するデバイスに合わせて、ブートローダを選択

Select Firmware Verification Type sig-sha256-ecdsa

Private Key 4.2.2 鍵ペア生成 で生成した Private key ファイル Select Output File Bank0 User Program(Binary Format)を選択 Firmware Sequence Number 1

File Path(Motorola Format) ユーザアプリケーションプログラムをビルド後に生成され るMotorola S フォーマットファイル(*.srec)を指定

(21)

4.3 Mot ファイル変換ツール

RE ファミリのファームウェアアップデート機能を使用する際は、添付されている Mot ファイル変換ツー ル(Renesas Secure Flash Programmer)を使用します。

4.3.1 session key タブ

Figure 4-2 Renesas Secure Flash Programmer “session key” タブ 本アプリケーションノートでは使用しません。

4.3.2 Key Wrap タブ

Figure 4-3 Renesas Secure Flash Programmer “Key Wrap” タブ 本アプリケーションノートでは使用しません。

(22)

4.3.3 Initial Firm タブ

Figure 4-4 Renesas Secure Flash Programmer “Initial Firm” タブ 本タブでは、ブートファームからインストールする初期ファームを生成します。 1. Select MCU 使用するデバイスとブートローダのサイズを指定します。 値 説明 備考 RE01_1500KB/Secure Bootloader = 512KB デバイス:RE01_1500KB ブートローダのサイズ:512KB

FLASH ROM の BGO 機能を 使用したファームアップデー トを行います。

RE01_1500KB/Secure

Bootloader = 64KB デバイス:RE01_1500KB ブートローダのサイズ:64KB

FLASH ROM の BGO 機能を 使用しないファームアップ デートを行います。 RE01_256KB/Secure Bootloader = 64KB デバイス:RE01_256KB ブートローダのサイズ:64KB その他 RX ファミリのファームアップデー トで使用します。 RX ファミリファームアップ デートアプリケーションノー トを参照してください。

1

2

3

4

5

6

7

8

9

10

(23)

2. Select Firmware Verification Type

ブートローダが使用するアップデートファームウェアの検証方法を指定します。

値 説明 備考

sig-sha256-ecdsa ECDSA SHA256 による検証を実施 使用方法は、4.2.3Mot ファイ ル変換ツール を参照 hash-sha256 SHA256 HASH 値比較による検証

mac-aes128-cmac-with-tsip TSIP を使用した AES128 CMAC の 検証

本バージョンでは未サポート sig-sha256-ecdsa-with-tsip TSIP を使用した ECDSA SHA256

の検証

未サポート

3. AES MAC Key

2 で、mac-aes128-cmac-with-tsip を選択時に使用。本バージョンでは未サポート。 4. Private Key Path

2 で、sig-sha256-ecdsa もしくは sig-sha256-ecdsa-with-tsip を使用時に 4.1.2 で生成する秘密鍵の PEM 形式のファイルを入力

5. Select Output File

Initial Firmware タブの Generate ボタンを押して時に生成するファイル形式を選択 ブートローダが使用するアップデートファームウェアの検証方法を指定します。

値 説明 備考

Bank0 User Program

(Binary Format) ブートローダから入力するユーザプログラム領域のアプリケーションプ ログラムを生成

rsu 形式で出力されるファイ ル

Bank0 User Program + Bootloader (Motorola S Format) ブートローダとユーザプログラム領 域のアプリケーションブログラムを 組み合わせたMotorola S フォー マットファイルを出力

Bank0 & Bank1 User Program + Bootloader (Motorola S Format) ブートローダとユーザプログラム領 域とテンポラリエリアのアプリケー ションブログラムを組み合わせた Motorola S フォーマットファイルを 出力 本バージョンでは未サポート

6. Bootloader File Path(Motorola Format)

5 で Bank0 User Program + Bootloader (Motorola S Format)を選択時に、ブートファームの Motorola S Format ファイルを指定。

7. Bank 0 User program Firmware Sequence Number

(24)

8. Bank 0 User program File Path(Motorola S Format)

本タブで生成する初期ファームで使用するユーザプログラムのMotorola S Format を指定。

9. Bank 1 User program

5 で Bank0 & Bank1 User Program + Bootloader (Motorola S Format)を選択時に、テンポラリエリア に書き込むMotorola S Format ファイルを指定。

10. Generate ボタン

初期ファームのrsu 形式ファイルもしくは Motorola S Format ファイルを生成

4.3.4 Update Firm タブ

Figure 4-5 Renesas Secure Flash Programmer “Update Firm” タブ 本タブでは、アップデートファームを生成します。

各設定項目に対する設定値は、Initial Firm タブと同じです。詳細は 4.3.1.3Initial Firm タブを参照してくだ さい。

(25)

5. サンプルプログラムの動作

この章ではファームウェアアップデート機能を使用したサンプルプログラムの動作確認方法について 説明します。

説明では、RE01_1500KB EK ボードを使用し、BGO 非使用サンプルプログラムで説明します。

RE01_1500KB EK ボードで BGO を使用するサンプルプログラム、RE01_256KB EK ボードのサンプルプ ログラムでも同様の操作になります。

本アプリケーションノートでは、RE ファミリのファームウェアをアップデートするには Figure 2-1 のよ うに、PC から Tera Term を使用して、更新するユーザプログラムを UART から受け取ることにより、 ファームウェアを更新します。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

(26)

5.1 準備

ここでは、RE01_1500KB EK ボードを使用した例で説明します。RE01_256KB を使用した場合でも同じ 操作になります。 接続方法については2.1 章を参照してください。 その他動作確認に必要な機材やソフトウェアはTable 5-1 の通りです。 Table 5-1 サンプルプログラム動作確認に必要な機材 名称 備考

RE01_1500KB Evaluation Kit Board

USB ケーブル(micro) 2 本

PC Windows PC

Tera Term 以下のページからダウンロードして、PC にインス

トールしてください。

https://ttssh2.osdn.jp/

Motorola convert file 本アプリケーションノート付属するPC 上で操作す

るGUI ソフト

e2 studio 詳細は「1.4 開発環境」を参照してください。

GCC 詳細は「1.4 開発環境」を参照してください。

JFlash Lite 以下のページから「JLink Software and

Documentation Pack」ダウンロードして、PC に JFlash Lite を含む JLink Software Pack をインス トールしてください。

https://www.segger.com/products/debug-probes/j-link/technology/flash-download/

(27)

5.2 サンプルソフトウェアの動作方法

サンプルソフトウェアの動作方法について記述します。

5.2.1 ブートローダとユーザプログラムの Motorola ファイルの作成

e2studio を使って、ブートローダとユーザプログラム V.1.00 と V.1.01 の Motorola ファイル作成しま す。ユーザプログラムV.1.01 はフィールドによるアップデートを想定していますが、作成手順上、ブート ローダとユーザプログラムV.1.00 と一緒に作成いたします。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ② ② ① Figure 5-2 システム構成 全体図 ブートローダとユーザプログラム手順 1. e2 studio を立ち上げ、「re01_1500kb_ek_bootloader」と 「re01_1500kb_ek_fwup_user_application_v100」、 「re01_1500kb_ek_fwup_user_application_v101」の 3 プロジェクトをインポートします。 e2studio “ファイル”→”インポート” インポートウィンドウからプロジェクトをインポートします。

(28)

Figure 5-3 e2studio に 3 つのプロジェクトをインポート 2. インポートした 3 つのプロジェクトをビルドします。

e2studio の Project Explorer パネルでビルドするプロジェクトを選択後、 ボタンを押して、ビル ドします。

「re01_1500kb_ek_bootloader」「re01_1500kb_ek_fwup_user_application_V100」

「re01_1500kb_ek_fwup_user_application_V101」のすべてのプロジェクトをビルドしてください。

(29)

3. ビルド後、各プロジェクト内の HardwareDebug フォルダに .srec という拡張子の Motorola S フォー マットのファイルがあることを確認

Figure 5-5 プロジェクト内の Motorola ファイルの確認

(30)

5.2.2 ブートローダとユーザプログラム V.1.00 を結合した Motorola ファイル作成

ブートローダとユーザプログラムV.1.00 を結合した Motorola ファイル(結合 mot ファイル)を作成し ます。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

Figure 5-6 システム構成 全体図 ブートローダとユーザプログラム V.1.00 結合 mot ファイル作成 4. Motorola convert tool を使用し、JLink Lite を使用して書き込むブートローダとユーザプログラム

V.1.00 の結合 mot ファイルを作成します。

本製品パッケージ内tools フォルダにある renesas_secure_flash_programmer.zip を解凍し、 解凍後フォルダRenesas Secure Flash Programmer¥bin¥Debug 内にある

Renesas Secure Flash Programmer.exe を実行し、「Initial Firm」タブを開きます。 Figure 5-7 を参考に設定を行い「userprog_V100.mot」を作成します。

(31)

Figure 5-7 Renesas Secure Flash Programmer Initial Tab の設定

項目 設定値

Setting Select MCU RE01_1500KB/Secure Bootloader=64KB Select Firmware Verification

Type hash-sha256

Select Output Format Bank 0 User Program + Bootloader (Motorola S Format)

Boot Loader File Path(Motorola Format) e2studio で re01_1500kb_ek_bootloader プロジェ クトをビルドして生成した

re01_1500kb_ek_bootloader.srec Bank0 User

Program Firmware Sequence Number 1 File Path(Motorola Format)

e2studio で re01_1500kb_ek_fwup_user_application_V100 プ ロジェクトをビルドして生成した re01_1500kb_ek_fwup_user_application_V100.srec 5. “Generate…”ボタンを押すと、*.mot ファイルを生成します。 任意のフォルダに”userprog_V100.mot”というファイルを生成してください。

(32)

5.2.3 ファームウェアアップデートファイル(rsu ファイル)作成

Motorola convert tool を使用して、ユーザプログラムをファームウェアアップデートファイル(rsu ファイル)に変換します。ユーザプログラム V.1.01 はフィールドによるアップデートを想定していま すが、作成手順上、ブートローダとユーザプログラムV.1.00 と一緒に作成いたします。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

Figure 5-8 システム構成 全体図 ファームウェアアップデートファイル作成 6. Motorola convert tool を使用し、ファームウェア更新に使用する rsu ファイルを作成します。

Renesas Secure Flash Programmer.exe を実行し、「Update Firm」タブを開きます。

Figure 5-9 Renesas Secure Flash Programmer の設定を参考に設定を行い「userprog_V101.rsu」 を作成します。

(33)

Figure 5-9 Renesas Secure Flash Programmer の設定

項目 設定値

Setting Select MCU RE01_1500KB/Secure Bootloader=64KB Select Firmware Verification

Type hash-sha256

Bank0 User

Program Firmware Sequence Number 1 File Path(Motorola Format)

e2studio で re01_1500kb_ek_fwup_user_application_V101 プ ロジェクトをビルドして生成した re01_1500kb_ek_fwup_user_application_V101.srec 7. “Generate…”ボタンを押すと、*.rsu ファイルを生成します。 任意のフォルダに”userprog_V101.rsu”というファイルを生成してください。

(34)

5.2.4 ブートローダとユーザプログラム V.1.00 のダウンロードと実行

JFlash Lite を使用して、RE01_1500KB Evaluation Kit Board にブートローダとユーザプログラム V.1.00 を書き込みます。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

Figure 5-10 システム構成 全体図 ブートローダとユーザプログラム V.1.00 書き込み

8. RE01_1500KB Evaluation Kit Board と PC を接続後、PC にインストールされている Tera Term を立 ち上げます。

接続方法については「2.1RE01_1500KB Evaluation Kit 使用時」を参照してください。

9. Tera Term の”ファイル”->”新しい接続”で、シリアルを選択し仮想 COM ポートとして「USB Serial port」が表示されるので、それを選択し OK を押します。

(35)

Figure 5-11 Tera Term の仮想 COM ポート設定

10. “設定”→”シリアルポート”を選択しボーレート(Speed)を、115200 に設定し、”New setting”ボタンを 押します。

(36)

11. JFlash Lite を立ち上げます。

接続方法については「2.1RE01_1500KB Evaluation Kit 使用時」を参照してください。

JFlash Lite は SEGGER 社「JLink Software and Documentation Pack」のインストールフォルダにあ るJFlashLite.exe を実行してください。

JLink Software and Documentation Pack はデフォルト C:¥Program Files (x86)¥SEGGER¥JLink フォ ルダにインストールされます。

12. 上記インフォメーションダイアログが出ます “O.K.”ボタンを押してください。

Figure 5-13 J-Flash Lite Info ダイアログ

13. デバイスを選択します。 “…”ボタンを押します。

Figure 5-14 J-Flash Lite 起動画面ダイアログ

(37)

Target Device Settings ダイアログから、以下デバイスを選択して、OK ボタンを押します Manifacturer : Renesas

Device : R7F0E015D

Figure 5-16 J-Flash Lite 起動画面ダイアログ デバイス選択後 “OK”ボタンを押します。以下 J-Flash Lite ウィンドウが開きます。

14. ダウンロードプログラムの選択

Data File の”…”ボタンを押して、userprog_V100.mot を選択します。

(38)

15. 内蔵 ROM データの消去

“Erase Chip”ボタンを押して、内蔵 Flash ROM の全領域のデータをイレースします。

Figure 5-18 J-Flash Lite ダイアログ 内蔵 Flash ROM データ イレース 16. プログラムのダウンロードとプログラム実行

“Program Device”ボタンを押して、プログラムのダウンロードを行います。

(39)

ダウンロードが完了すると自動的にプログラムを実行し、Tera Term 上に以下が表示されることを確 認してください。

Figure 5-20 Tera Term ブートローダとユーザプログラム V.1.00 実行結果 「Jump to user program」までが、ブートローダの動作になります。

ユーザプログラムで「Version ver 1.00」と表示されていることを確認してください。

User Program V.1.00

(40)

5.2.5 アップデートするユーザプログラムのダウンロード

Tera Term を使用して、ユーザプログラムを V.1.00 から V.1.01 に更新を行います。 USB cable User Program V.1.00 Motorola File Motorola Convert Tool User Program V.1.00

RE01 Flash memory Program

Boot Loader ① ① ② ① User Program Area Boot Loader Area Temprary Area JFlashLite Boot Loader Motorola File SWD USB-Serial UART User Program V.1.01 Motorola File ② Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 Boot Loader User Program V.1.01 User Program V.1.01 From UART Copy

Write Initial firmware In the FACTORY Update new firmware In FIELD

② ②

Figure 5-21 システム構成 全体図 ユーザプログラム V.1.01 にアップデート 17. Tera Term 上に「Send Update firmware via UART.」と表示されます。

(41)

Figure 5-22 ユーザプログラム V.1.00 アップデートファームダウンロード待ち状態 1. Tera Term のファイル送信機能を使用して、「userprog_V101.rsu」を送信します。 Tera Term の”ファイル” → “ファイル送信”を選択し、オプション “バイナリ”にチェックを入れ、 5.2.3 ファームウェアアップデートファイル(rsu ファイル)作成 で生成した”userprog_V101.rsu”を送 信します。

(42)

2. ファームウェアの更新が終了すると「jump to user program」が表示され、更新したユーザーアプリ ケーションへと移行します。 更新が完了するとファームウェアのバージョンが「ver 1.00」から「ver 1.01」へと変化します。 Figure 5-24 ファームウェア更新後の表示 User Program V.1.01 Boottloader

(43)

5.3 サンプルソフトウェア RE01_1500KB BGO 非使用から使用への切り替え方法

サンプルソフト「re01_1500kb_ek_bootloader」と「re01_1500kb_ek_fwup_user_application_v100」、 「re01_1500kb_ek_fwup_user_application_v101」の 3 プロジェクトは BGO 非使用のプロジェクトになっ ています。 BGO 機能を使用される場合、以下の手順でプロジェクトを変更してください。 1. 各プロジェクトの切り替え 上記3 プロジェクトに BGO を使用するためのリンカスクリプトファイルを切り替たプロジェクトを用 意しています。 以下手順で切り替えてください。 切り替えたいプロジェクト選択し、プロジェクト→プロパティ でプロパティ画面を出力 Figure 5-25 e2studio プロパティ選択 プロパティウィンドウの左側のツリーで”C/C++ Build”を選択し、構成の管理ボタンを押します。

(44)

Figure 5-26 e2studio プロパティウィンドウ “構成の管理”ウィンドウで、構成:HardwareDebug_bootloader512kb を選択し、”アクティブにする”ボタ ンを押します。 Figure 5-27 e2studio 構成の管理ウィンドウ 構成:HardwareDebug_bootloader512kb“の状況/状態が”アクティブ”になったことを確認してください。 確認出来たらOK ボタンを押して、”構成の管理”ウィンドウを閉じます。 Figure 5-28 e2studio 構成の管理ウィンドウ アクティブの切り替え

(45)

プロパティウィンドウの Configuratorin:のプルダウンメニューで”HardwareDebug_bootloader512kb”が アクティブになっていることを確認して、”HardwareDebug_bootloader512kb”を選択。 “適用して閉じる”ボタンを押して、プロパティウィンドウを閉じます。 Figure 5-29 e2studio プロパティウィンドウの有効設定の切り替え 2. Flash ドライバの設定 3 プロジェクトの Device¥Config¥r_flash_cfg.h 内を以下に変更してください。 変更前:#define FLASH_CFG_CODE_FLASH_RUN_FROM_ROM (0) 変更後:#define FLASH_CFG_CODE_FLASH_RUN_FROM_ROM (1) 3. その他ドライバの設定

3 プロジェクトの Device¥Config 内の以下 xxx_cfg.h ファイル内で定義している各 API の RAM 実行を 必要に応じてROM 実行に修正してください。

RAM 実行:#define API 定義名 (SYSTEM_SECTION_CODE) ROM 実行:#define API 定義名 (SYSTEM_SECTION_RAM_FUNC)

(46)

6. API 情報

6.1 サポートされているツールチェイン

FWUpdater ドライバは、以下のツールチェインで動作を確認しています。 GCC ARM Embedded Version 6.3.1.20170620

6.2 ヘッダファイル

すべてのAPI 呼び出しとそれをサポートするインタフェース定義は r_fwup_api.h に記載しています。

6.3 整数型

(47)

6.4 コンフィグレーション

Device/Config/r_fwup_cfg.h で以下マクロの値を変更すると、各機能の設定を変えることができます。 Configuration options in r_config/r_fwup_cfg.h

定義 デフォルト値 備考 FWUP_CFG_IMPLEMENTATION_ENVIRON MENT 0: 1: 実装環境を選択します。 0:ブートローダ 1:ファームウェアアップデート機能 (w/o OS) 2:ファームウェアアップデート機能 (FreeRTOS OTA) (未サポート) 3:ファームウェアアップデート機能 (Other RTOS) (未サポート) FWUP_CFG_COMMUNICATION_FUNCTION 0 通信モジュールを選択します。 0:SCI 接続 1:Ethernet 接続 (未サポート) 2:USB 接続 (未サポート) 3:SDHI 接続 (未サポート) 4:QSPI 接続 (未サポート)

FWUP_CFG_UART - SCI 接続時に使用する UASART の CH

RE01_1500KB は Driver_USART4 RE01_256KB は Driver_USART0 FWUP_CFG_SIGNATURE_VERIFICATION 1 ブートファームの認証方式 0:ECDSA 1:SHA256 FWUP_CFG_BOOT_PROTECT_ENABLE 0 ブートローダ部のプロテクト 0:無効 1:有効

FWUP_CFG_FUNCSECTION_ROM 0 Firmware update API の実行エリア 0:RAM 1:ROM

6.5 API データ構造

FW Updater ドライバが使用するデータ構造体についての情報は r_fwup_api.h を参照してください。

6.6 戻り値

以下に本モジュールのAPI 関数で使用できる戻り値を示します。戻り値の列挙型は、API 関数の宣言と共 にr_fwup_api.h に記載されています。

(48)

7. API 関数

ファームウェアアップデート機能に含まれるAPI 関数を示します。

ブートローダとユーザプログラム、FreeRTOS with IoT Library OTA を使用した場合の 3 パターンで それぞれ使用できるAPI が異なります。Table 7-1 に各 API で使用できるプログラムを記載しています。

Table 7-1 ファームウェアアップデート機能に含まれる API API 説明 ブートローダ ユーザプログラム FreeRTOS R_FWUP_SecureBoot ブートローダ部分の処理 〇 R_FWUP_ExecuteFirmware ユーザーアプリケーションの 起動 〇 R_FWUP_Open ファームウェアアップデート 機能の初期化 〇 R_FWUP_Close ファームウェアアップデート 機能の終了 〇 R_FWUP_Operation ファームウェアアップデート 機能の更新処理 〇 R_FWUP_SoftwareReset ソフトウェアリセット実行 〇 R_FWUP_SetEndOfLife ユーザーアプリケーションの 保守期間終了時(END OF LIFE)の処理 〇 R_FWUP_CreateFileForRx OTA の初期設定 〇 R_FWUP_Abort OTA 更新処理を中止 〇 R_FWUP_WriteBlock データブロックの書き込み 〇 R_FWUP_CloseFile 指定したファイルのクローズ 〇 R_FWUP_CheckFileSignature 指定したファイルの署名確認 〇 R_FWUP_ResetDevice デバイスのリセット 〇 R_FWUP_ActiveNewImage 新しいファームウェアの起動 〇 R_FWUP_SetPlatformImageState ライフサイクルの状態を設定 〇 R_FWUP_GetPlatformImageStat e 現在のライフサイクルの確認 〇 R_FWUP_GetVersion バージョン情報の確認 〇

(49)

7.1 ブートローダ API

ブートローダ機能として使用するAPI について説明します。

7.1.1 R_FWUP_SecureBoot

ブートローダでのセキュアブート処理を行うAPI です。 コンフィグ設定で指定された通信経路からインストール用ファームウェアデータを取り出し、フラッシュ へプログラム、署名検証の実施を行います。 形式 fwup_err_t R_FWUP_SecureBoot(void) 引数 無し 戻り値 FWUP_SUCCESS アップデート成功 FWUP_FAIL アップデート失敗 FWUP_IN_PROGRESS アップデート進行中 解説 ファームウェアアップデート機能の内、ブートローダ部分の処理を行うAPI です。

User Program area と Temporary area の状態を確認しそれぞれの状態に合わせた処理を実行します。

本API は複数回コールし続けることにより、処理を順次実行します。 補足 戻り値が “FWUP_IN_PROGRESS” の場合はセキュアブート継続中のため、再度本関数をコールして ください。 戻り値が “FWUP_SUCCESS” の場合はセキュアブート完了です。R_FWUP_ExecuteFirmware 関数を コールし、インストールまたは更新したファームウェアへ処理を移してください。 戻り値が “FWUP_FAIL” の場合はセキュアブートの失敗を意味します。必要であればエラーを解除し 再度本関数をコールしてください。

(50)

7.1.2 R_FWUP_ExecuteFirmware

インストール、もしくはアップデートしたファームウェアへ処理を移します。 形式 void R_FWUP_ExecuteFirmware(void) 引数 無し 戻り値 無し 解説 インストール、もしくはアップデートしたファームウェアへ処理を移します。 本API は一度コールするとファームウェアへとジャンプします。 補足

(51)

7.2 ユーザプログラムアップデート API

ユーザプログラムのファームウェアアップデート機能を使用するためのAPI を記載します。

7.2.1 R_FWUP_Open

ファームウェアアップデート機能の初期化を行うAPI 関数です。 ファームウェアアップデートで使用する資源のオープン処理、OS の初期設定(OS 使用時)、各変数の 初期化処理を行います。 形式 fwup_err_t R_FWUP_Open(void) 引数 無し 戻り値 FWUP_SUCCESS 正常終了 FWUP_ERR_ALREADY_OPEN すでに初期化済み FWUP_ERR_COMM 通信モジュールのエラー FWUP_ERR_STATE_MONITORING 状態監視モジュールのエラー FWUP_ERR_FLASH FLASH モジュールのエラー FWUP_ERR_IMAGE_STATE フラッシュのステータスがアップデートできる状態でない 解説 本API はファームウェアアップデート機能の初期化を実行します。 API をコール後、ファームウェアアップデート機能が利用可能となります。 補足 本API は一度コールすると R_FWUP_Close をコールするまで、再度コールすることができません。 再度コールする場合はR_FWUP_Close をコール後、本 API をコールしてください。

(52)

7.2.2 R_FWUP_Close

ファームウェアアップデート機能の終了処理を行うAPI です。

形式

fwup_err_t R_FWUP_Close (void) 引数 無し 戻り値 FWUP_SUCCESS 正常終了 FWUP_ERR_NOT_OPEN ファームウェアアップデート機能が未初期化 解説 本API はファームウェアアップデート機能の終了処理を実行します。 ファームウェアアップデートで使用した資源のクローズ処理を行います。 補足 本API は R_FWUP_Open をコール後にコールしてください。 R_FWUP_Open をコール前にコールするとエラーとなります。

(53)

7.2.3 R_FWUP_Operation

ユーザーアプリケーションからのファームウェアアップデート処理を行います。

形式

fwup_err_t R_FWUP_Operation (void) 引数 無し 戻り値 FWUP_SUCCESS ファームウェアアップデート成功 FWUP_IN_PROGRESS ファームウェア更新継続中 FWUP_FAIL ファームウェアアップデート失敗 FWUP_ERR_NOT_OPEN ファームウェアアップデート機能が未初期化 FWUP_ERR_IMAGE_STATE フラッシュのステータスがアップデートできる状態でない FWUP_ERR_STATE_MONITORING アップデートの状態が一定時間以上変わっていない 解説 本API はファームウェアアップデート機能のファームウェア更新処理を実行します。 コンフィグ設定で指定された通信経路からアップデート用ファームウェアデータを取り出し、 フラッシュへプログラム、署名検証の実施を行います。 補足 更新対象のフラッシュの状態が “VALID” または “INITIAL_FIRM_INSTALLED” 以外の場合は ファームウェアを更新できる状態ではないため、戻り値として“FWUP_ERR_STATE” を返します。 戻り値が “FWUP_IN_PROGRESS” の場合はファームウェアアップデート継続中のため、再度本関数 をコールしてください。 戻り値が “FWUP_SUCCESS” の場合はファームウェアアップデート完了です。 R_FWUP_SoftwareReset 関数をコールしてください。ソフトウェアリセットを行うことで更新した ファームウェアに処理を移します。 戻り値が “FWUP_FAIL” の場合はファームウェアアップデートが失敗を意味します。 エラーを解除し再度本関数をコールしてください。

(54)

7.2.4 R_FWUP_SetEndOfLife

ユーザーアプリケーションの保守期間終了時(END OF LIFE)の処理を行います。 形式 fwup_err_t R_FWUP_SetEndOfLife(void) 引数 無し 戻り値 FWUP_SUCCESS 正常終了 FWUP_ERR_FLASH フラッシュモジュールでエラー発生 FWUP_ERR_COMM 通信モジュールでエラー発生 解説 ユーザーアプリケーションの保守期間終了時(END OF LIFE)の処理を行います。 補足

(55)

7.2.5 R_FWUP_SoftwareReset

ソフトウェアリセットを実行するAPI です。

形式

void R_FWUP_SoftwareReset (void) 引数 無し 戻り値 無し 解説 本API はソフトウェアリセットを実行します。 ソフトウェアリセット後はリセットベクタから動作が開始されます。 補足

(56)

7.3 FreeRTOS with IoT Library OTA 使用 API

FreeRTOS with IoT Library OTA を使用する場合の API を記載します。 これらのAPI は本バージョンではサポートしていません。

7.3.1 R_FWUP_CreateFileForRx

FreeRTOS with IoT Library の OTA 機能で使用する API です。 形式

OTA_Err_t R_FWUP_CreateFileForRx( OTA_FileContext_t * const C ) 引数 OTA_FileContext_t * const C ファイルコンテキスト 戻り値 kOTA_Err_None 正常終了 kOTA_Err_RxFileCreateFailed ファイル作成エラー 解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(57)

7.3.2 R_FWUP_Abort

OTA 更新処理を中止します。 形式

OTA_Err_t R_FWUP_Abort( OTA_FileContext_t * const C ) 引数 OTA_FileContext_t * const C ファイルコンテキスト 戻り値 kOTA_Err_None 正常終了 kOTA_Err_FileClose ファイルコンテキストのクローズエラー 解説 OTA 更新処理を中止します。 本バージョンではサポートしていません。 補足

(58)

7.3.3 R_FWUP_WriteBlock

形式

int16_t R_FWUP_WriteBlock( OTA_FileContext_t * const C, uint32_t ulOffset,

uint8_t * const pacData, uint32_t ulBlockSize ) 引数

OTA_FileContext_t * const C

uint32_t ulOffset uint8_t * const pacData uint32_t ulBlockSize 戻り値

sNumBytesWritten ブロックサイズ

R_OTA_ERR_QUEUE_SEND_FAIL 失敗

解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(59)

7.3.4 R_FWUP_CloseFile

指定されたファイルをクローズします。

Temporary area のバッファ領域にダウンロードしたファームウェアに対する署名検証を行います。 また、Temporary area のバッファ領域のヘッダー情報を書き込みます。

形式

OTA_Err_t R_FWUP_CloseFile( OTA_FileContext_t * const C ) 引数 OTA_FileContext_t * const C 戻り値 kOTA_Err_None 正常終了 kOTA_Err_Panic ライフサイクルが一定時間以上変化無し kOTA_Err_FileClose ファイルのクローズエラー kOTA_Err_SignatureCheckFailed 署名検証エラー 解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(60)

7.3.5 R_FWUP_CheckFileSignature

指定したファイルの署名を確認します。

形式

OTA_Err_t R_FWUP_CheckFileSignature( OTA_FileContext_t * const C ) 引数 OTA_FileContext_t * const C 戻り値 kOTA_Err_None 正常終了 kOTA_Err_BadSignerCert 証明書エラー kOTA_Err_SignatureCheckFailed 署名検証エラー 解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(61)

7.3.6 R_FWUP_ReadAndAssumeCertificate

指定された署名者証明書をファイルシステムから読み込み返します。

形式

uint8_t * R_FWUP_ReadAndAssumeCertificate( const uint8_t * const pucCertName, uint32_t * const ulSignerCertSize ) 引数

const uint8_t * const pucCertName 証明書ファイル名

uint32_t * const ulSignerCertSize 証明書サイズ 戻り値

pucSignerCert 証明書データへのポインタ

解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(62)

7.3.7 R_FWUP_ResetDevice

デバイスのリセットを行うAPI です。

形式

OTA_Err_t R_FWUP_ResetDevice( void ) 引数

無し

戻り値

kOTA_Err_None 正常終了

解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(63)

7.3.8 R_FWUP_ActivateNewImage

新しいファームウェアをアクティブ化または起動します。

本API コールでソフトウェアリセットが発生し、以降はブートローダの処理を経て新しいファームウェア

を起動します。

形式

OTA_Err_t R_FWUP_ActivateNewImage( void ) 引数

無し

戻り値

kOTA_Err_None 正常終了

解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(64)

7.3.9 R_FWUP_SetPlatformImageState

ライフサイクルの状態を、Parameters で指定された状態に設定します。

新しいファームウェアへの更新が完了した場合、Temporary area のバッファ領域を消去します。

形式

OTA_Err_t R_FWUP_SetPlatformImageState( OTA_ImageState_t eState ) 引数 OTA_ImageState_t eState 設定するライフサイクル 戻り値 kOTA_Err_None 正常終了 kOTA_Err_CommitFailed コミットエラー kOTA_Err_BadImageState ファームウェアの状態が不正値 解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(65)

7.3.10 R_FWUP_GetPlatformImageState

現在のライフサイクルの状態を返します。

形式

OTA_PAL_ImageState_t R_FWUP_GetPlatformImageState( void ) 引数

無し

戻り値

ePalState 現在のライフサイクルの状態

解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(66)

7.3.11 R_FWUP_GetVersion

本モジュールのバージョン番号を返します。 RE のファームウェアアップデート機能では使用しません。 形式 OTA_Err_t R_FWUP_GetVersion(void) 引数 無し 戻り値 バージョン情報 解説

FreeRTOS with IoT Library の OTA 機能を使用するときに使用します。 本バージョンではサポートしていません。

(67)

8. ファームウェアアップデートの詳細動作

8.1 ブートローダ起動時の処理フロー

ブートローダはユーザプログラム領域とTmp 領域のダウンロードフォーマット領域にあるステータスフ ラグImage Flag を参照して動作を決定します。以下にユーザプログラム領域と Tmp 領域のステータスの組 み合わせを示します。 以下以外の組み合わせはファームウェアアップデートで起こらない状態と判定し、エラーになります。 Table 8-1 ブートローダ状態フラグ Image flag 状態 ユーザプログラ ム領域 Tmp 領域 - TESTING (0xfe) Tmp 領域にインストールされたファームウェアの正当性検証中 - VALID (0xf8) Tmp 領域にインストールされたファームウェアの正当性検証が終 了し、インストールしたファームウェアが正しいことを確認済み VALID (0xf8) - ファームアップデート処理を実施し、ユーザプログラム領域にインス トールしたファームウェアが正しいことを確認完了状態 BLANK (0xff) BLANK (0xff) ユーザプログラム領域ならびに Tmp 領域にはファームウェアが書 かれていない状態 上記以外 ファームウェアインストール失敗 INSTALLING (0xfc) - ユーザプログラム領域にインストールしたファームウェアが正しいこと を確認完了状態 状態遷移フローは以下に示します。

(68)

Tmp area == TESTING Yes Tmp area == VALID No Yes No

User Program area == VALID

Yes No

User Program area == BLANK tmp_buf = BLANK Yes No Yes No FAIL Process Start Boot loader

Software Reset Software Reset TESTING state for Tmp area VALID state for Tmp area

Jump to user program VALID state for User Program area

Initial Firmware Download process Jump to user program

User Program area == INSTALLING

Yes No

Jump to user program INSTALLING state for User Program area

(69)

TESTING state for Tmp area

Signature Verify for Tmp area

Tmp area Image flag = VALID

Tmp area Image flag = INVALID

Return main flow

FAIL

SUCCESS

Figure 8-2 Tmp 領域が TESTING 状態の処理フロー

VALID process for Tmp area

Signature Verify for Tmp area

Copy Code from Tmp area to User program area

Erase Tmp area

Return main flow

FAIL

SUCCESS

Signature Verify for User program

area

Software Reset

User program area Image flag = VALID

User program area Image flag = INVALID

Erase Tmp area Start FAIL process

FAIL

SUCCESS

(70)

VALID state for User Program area

Signature Verify for User Program

area

Return main flow

FAIL

SUCCESS

Start FAIL process

Figure 8-4 ユーザプログラム領域が VALID 状態の処理フロー

Initial firmware

Download process

r_fwup_cfg.h

FWUP_CFG_BOOT_PROT

ECT_ENABLE == 1

Boot Protect Set FAW,FSPR Regster

Return main flow

NO

YES

Download Initial fimware to Tmp area

Signature Verify

for Tmp area

Tmp area Image flag = VALID

FAIL

SUCCESS

Start FAIL process

(71)

INSTALLING state for User Program area

r_fwup_cfg.h

FWUP_CFG_BOOT_PROT

ECT_ENABLE == 1

Boot Protect Set FAW,FSPR Regster

Return main flow

NO

YES

Signature Verify

for User Program

area

FAIL

SUCCESS

Start FAIL process

(72)

8.2 ファームウェアアップデート時の処理フロー

ユーザーアプリケーションでは、ファームアップデートAPI を使用します。

ユーザーアプリケーションの処理フローを以下に示します。

User program

Firmware update process

ret =

FWUPDATE_SUCCESS

Firmware update FAIL

process

Yes

No

Yes

No

R_FWUP_Open()

ret = R_FWUP_Operation()

ret =

FWUPDATE_IN_PROGRESS

ret = R_FWUP_Operation()

Go to Boot loader process

(73)

改訂記録

Rev. 発行日

改訂内容

ページ ポイント

Figure 2-1  システム構成  全体図
Figure 2-4    PC と JLink OB と RE01_1500KB Evaluation Kit の配線
Figure 4-3  Renesas Secure Flash Programmer “Key Wrap”  タブ
Figure 5-1  システム構成  全体図
+7

参照

関連したドキュメント

When the voltage on CV CC reaches the startup threshold, the controller starts switching and providing power to the output circuit and the CV CC.. CV CC discharges as the

• Step 3: M 1 is closed Î bridge pin moved to bulk level, D boot is still blocked & C boot supplies floating area... Root of High Side Driver

Pre-Harvest Interval (PHI): 0 day(s) Minimum interval between applications: 7 days Minimum application volume: 30 gallons/Acre (Ground) Maximum FLINT Extra allowed per year: 7.6

VCC When using DC−DC converter powered by different voltage as the primary side of the driver Power supply for DC−DC converter need to be connected to the VCC pin on P1.. ANB SET

charge Q g (from zero voltage to V th of the MOSFET) is taken from V CC capacitor (through an external boot strap diode) so the voltage drop on C boot is smaller. For

 Do not apply more than 0.5 lb active ingredient (1 quart) per acre per season including at-plant, PRE, PPI and foliar applications of RUCKUS™ LFR® Soil Insecticide and

04h INT_MSK1 RW FFh Mask register 1 to enable or disable interrupt sources (trim) 05h INT_MSK2 RW FFh Mask register 2 to enable or disable interrupt sources (trim). 06h PID R

The Strata graphical user interface ensures an easy startup for evaluation purposes like controlling motor voltage/frequency, choosing between closed loop Field Oriented Control