こんにちは。MURAと申します。
現在RX72Mを使った制御基板のブートプログラム及びファームウェアの開発を行っております。
各種SHでは同様の開発は何度か携わっているのですが、RXでの開発は今回が初めてとなります。
ブートプログラムはソフト更新の要因があればソフトを更新、以外はファームウェアのプログラムの格納状況をチェックし正常であれば処理をファームウェアに移す形のソフトとなります。
ブートプログラムからファームウェアにアドレスジャンプさせる際のサンプルプログラムや具体的な記述例がありましたらご教示頂けますと助かります。
こんにちは、Muraさん。B.Ishiiと申します。
私も現在、RX72Nにてその方面を勉強中です。FITモジュールの「FWUP Library(r_fwup)」のソースコードを解読するのが良いのではないかと思います。ただし、電子署名によるファームウェアの認証など、Muraさんが要らない処理も含まれているかもしれません。
または、r_fwup自体を利用すれば、boot_loaderのmain関数は、以下の記述だけで済みます。※r_fwup付属のサンプルプロジェクトを少し変更しただけです。※他に諸々の設定は必要ですが。
void main(void){#if 0 // デバッガでアプリと併用したい場合は1に変更 uint32_t entry = *((uint32_t *)0xFFFEFFFC); ((void (*)(void))entry)();#endif int32_t result_secure_boot; uint32_t module_version; R_BSP_NOP(); if (R_FWUP_Open() != FWUP_SUCCESS) { while (1) { R_BSP_NOP(); /* Open error. infinity loop */ } } module_version = R_FWUP_GetVersion(); printf("-------------------------------------------------\r\n"); printf("BOOTLOADER demo version %u.%u.%u \r\n", g_app_firmware_version.u.x.uc_major, g_app_firmware_version.u.x.uc_minor, g_app_firmware_version.u.x.us_build); printf("FWUP FIT module version %u.%02u\r\n", (uint32_t)(module_version >> 16), (uint32_t)(module_version & 0xFF)); while (1) { result_secure_boot = R_FWUP_SecureBoot(); if (FWUP_SUCCESS == result_secure_boot) { R_FWUP_ExecuteFirmware(); while (1) { R_BSP_NOP(); /* infinity loop */ } } else if (FWUP_FAIL == result_secure_boot) { while (1) { R_BSP_NOP(); /* infinity loop */ } } else if (FWUP_END_OF_LIFE == result_secure_boot) { while (1) { R_BSP_NOP(); /* infinity loop */ } } else if (FWUP_IN_PROGRESS == result_secure_boot) { continue; } else { while (1) { R_BSP_NOP(); /* infinity loop */ } } }}
既にご存じかもしれませんが、以下のサイトが役に立ちます。・ルネサス MCU におけるファームウェアアップデートの設計方針 https://www.renesas.com/jp/ja/document/apn/renesas-mcu-firmware-update-design-policy-rev100?language=ja
・OTAの活用 https://github.com/renesas/amazon-freertos/wiki/OTA%E3%81%AE%E6%B4%BB%E7%94%A8
B.Ishiiさん、こんにちは。
ご教示有難うございました。
大変参考になります。
Muraさん、B.Ishiiさん
こんにちは、シェルティです。ルネサスの中の人です。
「ルネサス MCU におけるファームウェアアップデートの設計方針」の執筆と「FWUP Library(r_fwup)」のコア部分の設計、AWSを活用したOTAシステムの実現のための設計とAWSとの折衝などを担当しました。このあたりまだ世界標準的なものがなく混沌としていますが早め早めに実装検討をすることでIoT機器の必須セキュリティ要件になりつつあるファームウェア更新機能をいち早くユーザシステムに取り入れることができると考えています。
不明点などがありましたら書き込んでください。可能範囲で回答いたします。
以上です
シェルティさん
こんにちは、Muraです。
ご説明有難うございます。承知しました。
また、不明点等出てきましたら遠慮なく書込みさせて頂きます。
シェルティ様はじめ、皆さまにご教示頂けて大変助かっております。