Applilet EZ PL for RL78 改善要望

Applilet EZ PL for RL78 V1.0J, V2.00J を試してみました。

デジタル回路版電子ブロックという感じで興味深いツールと思いましたが、少々使いづらい点もあったので改善要望として挙げておきます。

> 本ツールは評価版です。本ツールに関するテクニカルサポートは受け付けておりません。

と明記されていることは理解しており、返答等を求めているものではありません。

Parents
  • ・ROM 消費量が多い

    Applilet EZ PL for RL78 V2.00J + CC-RL V1.04.00 を使用し、R5F10Y16ASP(RL78/G10 10ピン ROM 2kB)をターゲットとして選択し、ちょっと何かを作るとすると簡単に 2kB のサイズを超えてしまい ます。

    R5F10Y17ASP(RL78/G10 10ピン ROM 4kB)にターゲットを変更して「生成」をしなおすと成功したりしますが、実際のところターゲット変更は手軽にできるものではないのでできれば避けたいところです。

    試したプロジェクトの .map ファイルを見てみると、

      _MOV1_
                                      0000013b         0   none ,g         0
      _NOT1_
                                      0000013c         0   none ,g         0
      _WAIT
                                      00000143         0   none ,g         0
      _Port_Set
                                      000001b9         0   none ,g         0
      _MD_INTTM00
                                      0000020c         0   none ,g         0
      _MD_INTP0
                                      0000021d         0   none ,g         0
      _MD_INTP1
                                      0000021f         0   none ,g         0
      _ANDF
                                      0000047f         0   none ,g         0
      _ORF
                                      0000048d         0   none ,g         0
      _XORF
                                      0000049b         0   none ,g         0
      _IC_74HC138_Judge_Enable
                                      000004a2         0   none ,g         0
      _IC_74HC138_Out_Y0
                                      00000500         0   none ,g         0
      _IC_74HC138_Out_Y1
                                      0000050b         0   none ,g         0
      _IC_74HC138_Out_Y2
                                      00000516         0   none ,g         0
      _IC_74HC138_Out_Y3
                                      00000524         0   none ,g         0
      _IC_74HC138_Out_Y4
                                      00000532         0   none ,g         0
      _IC_74HC138_Out_Y5
                                      00000540         0   none ,g         0
      _IC_74HC138_Out_Y6
                                      0000054e         0   none ,g         0
      _IC_74HC138_Out_Y7
                                      0000055c         0   none ,g         0
      _PWM_CH2_Init
                                      000008f6         0   none ,g         0
      _PWM_CH3_Init
                                      000008f7         0   none ,g         0
      _PWM_Out_CH2
                                      000008f8         0   none ,g         0
      _PWM_Out_CH3
                                      000008f9         0   none ,g         0
    

    とりあえずこれだけの使用されていない関数が無駄に ROM に配置されていました。ROM の消費量が多いことの一因ではないかと思います。

    Applilet EZ PL for RL78 と併せて使用したツールチェーン CC-RL にリンク時に未使用オブジェクト(関数、変数、定数)を削除する機能がないことが直接の原因とは思いますが、それであれば、Applilet EZ PL for RL78 のライブラリとして定義される関数や変数はソースレベルでバラバラにしてコンパイルし一旦ライブラリファイルにまとめ、それをリンクすることで無駄なオブジェクトのリンクを避ける方法もあるのではないでしょうか。

    訂正 後の Reply で NoMaYさんの指摘されている CC-RL の未参照オブジェクトを削除する機能を上手く使用すればサイズ縮小に役立つのではないでしょうか。

  • 何らかの条件によりリンカの -Optimize=SYmbol_delete が意図通りに機能しないことがあるようです。CS+の設定やcstart.asmの記述を弄っていたら以下のように削除されることもあることに気付きました。(当方特有の事情によりCC-RL V1.02を使用) (条件を絞り込み中)

    *** Delete Symbols ***

    SYMBOL                                SIZE    INFO

    _WDT_Reset
                                             4    func ,g
    _MOV1_
                                             1    func ,g
    _NOT1_
                                             7    func ,g
    _WAIT
                                             d    func ,g
    _WDT_Init
                                             1    func ,g
    _Clock_Init
                                             1    func ,g
    _DGIN_Counter_Clear
                                             4    func ,g
    _CLK_Counter_Clear
                                             4    func ,g
    _IC74HC166_Counter_Clear
                                             4    func ,g
    以後省略

  • > 何らかの条件によりリンカの -Optimize=SYmbol_delete が意図通りに機能しないことがあるようです。

    Applilet EZ PL for RL78 Ver.2.00 でのビルドの際には

    • コンパイル・アセンブル -goptimize 指定なし
    • リンク -NOOPtimze 指定あり

    となっていたので、これを

    • コンパイル・アセンブル -goptimize 指定あり
    • リンク -OPtimze 指定あり, -ENTry=_main

    にしてビルドし直してみたところ、特にサイズに変わりはなく未使用変数や関数の削除は行われている様子はありません。CC-RL の使用法をよく理解していないのか、あるいは不具合かはまだ不明です。

Reply
  • > 何らかの条件によりリンカの -Optimize=SYmbol_delete が意図通りに機能しないことがあるようです。

    Applilet EZ PL for RL78 Ver.2.00 でのビルドの際には

    • コンパイル・アセンブル -goptimize 指定なし
    • リンク -NOOPtimze 指定あり

    となっていたので、これを

    • コンパイル・アセンブル -goptimize 指定あり
    • リンク -OPtimze 指定あり, -ENTry=_main

    にしてビルドし直してみたところ、特にサイズに変わりはなく未使用変数や関数の削除は行われている様子はありません。CC-RL の使用法をよく理解していないのか、あるいは不具合かはまだ不明です。

Children
No Data