Applilet EZ PL for RL78 V1.0J, V2.00J を試してみました。
デジタル回路版電子ブロックという感じで興味深いツールと思いましたが、少々使いづらい点もあったので改善要望として挙げておきます。
> 本ツールは評価版です。本ツールに関するテクニカルサポートは受け付けておりません。
と明記されていることは理解しており、返答等を求めているものではありません。
・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以後省略
*** Delete Symbols ***
SYMBOL SIZE INFO
_WDT_Reset
4 func ,g
_MOV1_
1 func ,g
_NOT1_
7 func ,g
_WAIT
d func ,g
_WDT_Init
_Clock_Init
_DGIN_Counter_Clear
_CLK_Counter_Clear
_IC74HC166_Counter_Clear
以後省略
> 何らかの条件によりリンカの -Optimize=SYmbol_delete が意図通りに機能しないことがあるようです。
Applilet EZ PL for RL78 Ver.2.00 でのビルドの際には
となっていたので、これを
にしてビルドし直してみたところ、特にサイズに変わりはなく未使用変数や関数の削除は行われている様子はありません。CC-RL の使用法をよく理解していないのか、あるいは不具合かはまだ不明です。