RX MCUのROM/RAM usage sizeがRenesas QuickConnect IoTのsample programでボロ負け(very worse than)している件(RA MCUやRL78 MCUに比べて)

こんにちは。NoMaYです。

ルネサスさんのクイックコネクトIoTのサンプルプログラムのドキュメントを見ていて気付いたのですけれども、サンプルプログラムでのRXマイコンの使用ROM/RAMサイズがRAマイコン/RL78マイコンと比べてボロ負け感のあるほど大量ですね、、、これは要調査ですね(数値はサンプルプログラムをビルドした素朴な結果ですかね)、、、

ROM / RAM (bytes)
            RX & CC-RX?        RA & GNUARM         RL78 & CC-RL?      RE & GNUARM
HS300x      24,863 / 7,941      6,164 / 1,740       4,046 / 100         74,472 / 7,560
FS2012      24,696 / 7,945      7,984 / 1,676       4,792 / 102         -

以下、HS300xサンプルソフトウェアマニュアルの画面コピーです。






[関連リンク]

RAファミリ、RXファミリ、RL78ファミリ、RE01 256KBグループ HS300xサンプルソフトウェアマニュアル
R01AN5897JJ0110 Rev.1.10 September 30.21
www.renesas.com/jp/ja/document/apn/hs300x-sample-application

RAファミリ、RXファミリ、RL78ファミリ FS2012 サンプルソフトウェアマニュアル
R01AN6047JJ0100 Rev.1.00 September 30.21
www.renesas.com/jp/ja/document/apn/fs2012-sample-application

センサソフトウェア ミドルウェア 製品ページ
www.renesas.com/jp/ja/software-tool/sensor-software
 

Parents
  • こんにちは。NoMaYです。

    RAマイコンのソフトウェア開発プラットフォームのGNU ARM Embeddedプロジェクトでは、プロジェクト作成時のデフォルトの設定が、未使用の変数/関数を削除する最適化を行う、という設定になっています。そこで、CC-RXでも同様の最適化を施してみました。ただ、現状は、以下のスレッドにあるように単にコンパイルオプションを設定するだけでは効き目が弱いですので、セクション配置順とオブジェクトリンク順も一緒に調整して効き目を強めるようにしてみました。

    CC-RXの未使用の変数/関数を削除する最適化の効き目がGNURX/ICCRXより歴然と弱いのですが、、、
    japan.renesasrulz.com/cafe_rene/f/forum21/6403/cc-rx-gnurx-iccrx

    結果は以下の通りでした。

    r01an5897xx0110-hs300x_opt_map_files_20211017.zip
    HS300x_RX65N_NonOS.build.log
    HS300x_RX65N_NonOS.map
    HS300x_RX65N_FreeRTOS.build.log
    HS300x_RX65N_FreeRTOS.map

    NonOS版

    RX65N: e2 studio 2021-10 & CC-RX V3.03.00

    施術前

    PROGRAM SECTION:  00005ba1 Byte(s)  23457 バイト(10進数)
    ROMDATA SECTION:  00000e7a Byte(s)   3706 バイト(10進数)
    RAMDATA SECTION:  00001f2d Byte(s)   7981 バイト(10進数)

     
    施術後

    PROGRAM SECTION:  00004343 Byte(s)  17219 バイト(10進数)
    ROMDATA SECTION:  00000e0a Byte(s)   3594 バイト(10進数)
    RAMDATA SECTION:  00001b0d Byte(s)   6925 バイト(10進数)

     
    FreeRTOS版

    RX65N: e2 studio 2021-10 & CC-RX V3.03.00

    施術前

    PROGRAM SECTION:  0000952c Byte(s)  38188 バイト(10進数)
    ROMDATA SECTION:  00000f2e Byte(s)   3886 バイト(10進数)
    RAMDATA SECTION:  0000705d Byte(s)  28765 バイト(10進数)

     
    施術後

    PROGRAM SECTION:  00005e64 Byte(s)  24164 バイト(10進数)
    ROMDATA SECTION:  00000ec6 Byte(s)   3782 バイト(10進数)
    RAMDATA SECTION:  00006c29 Byte(s)  27689 バイト(10進数)

     
    以下、CC-RXプロジェクトの設定変更箇所の画面コピーです。(6枚)







     

Reply
  • こんにちは。NoMaYです。

    RAマイコンのソフトウェア開発プラットフォームのGNU ARM Embeddedプロジェクトでは、プロジェクト作成時のデフォルトの設定が、未使用の変数/関数を削除する最適化を行う、という設定になっています。そこで、CC-RXでも同様の最適化を施してみました。ただ、現状は、以下のスレッドにあるように単にコンパイルオプションを設定するだけでは効き目が弱いですので、セクション配置順とオブジェクトリンク順も一緒に調整して効き目を強めるようにしてみました。

    CC-RXの未使用の変数/関数を削除する最適化の効き目がGNURX/ICCRXより歴然と弱いのですが、、、
    japan.renesasrulz.com/cafe_rene/f/forum21/6403/cc-rx-gnurx-iccrx

    結果は以下の通りでした。

    r01an5897xx0110-hs300x_opt_map_files_20211017.zip
    HS300x_RX65N_NonOS.build.log
    HS300x_RX65N_NonOS.map
    HS300x_RX65N_FreeRTOS.build.log
    HS300x_RX65N_FreeRTOS.map

    NonOS版

    RX65N: e2 studio 2021-10 & CC-RX V3.03.00

    施術前

    PROGRAM SECTION:  00005ba1 Byte(s)  23457 バイト(10進数)
    ROMDATA SECTION:  00000e7a Byte(s)   3706 バイト(10進数)
    RAMDATA SECTION:  00001f2d Byte(s)   7981 バイト(10進数)

     
    施術後

    PROGRAM SECTION:  00004343 Byte(s)  17219 バイト(10進数)
    ROMDATA SECTION:  00000e0a Byte(s)   3594 バイト(10進数)
    RAMDATA SECTION:  00001b0d Byte(s)   6925 バイト(10進数)

     
    FreeRTOS版

    RX65N: e2 studio 2021-10 & CC-RX V3.03.00

    施術前

    PROGRAM SECTION:  0000952c Byte(s)  38188 バイト(10進数)
    ROMDATA SECTION:  00000f2e Byte(s)   3886 バイト(10進数)
    RAMDATA SECTION:  0000705d Byte(s)  28765 バイト(10進数)

     
    施術後

    PROGRAM SECTION:  00005e64 Byte(s)  24164 バイト(10進数)
    ROMDATA SECTION:  00000ec6 Byte(s)   3782 バイト(10進数)
    RAMDATA SECTION:  00006c29 Byte(s)  27689 バイト(10進数)

     
    以下、CC-RXプロジェクトの設定変更箇所の画面コピーです。(6枚)







     

Children
No Data