Applilet EZ PL for RL78 V1.0J, V2.00J を試してみました。
デジタル回路版電子ブロックという感じで興味深いツールと思いましたが、少々使いづらい点もあったので改善要望として挙げておきます。
> 本ツールは評価版です。本ツールに関するテクニカルサポートは受け付けておりません。
と明記されていることは理解しており、返答等を求めているものではありません。
・スタック領域が無駄に設定される
Applilet EZ PL for RL78 V2.00J + CC-RL V1.04.00 を使用しています。
プロジェクトの src/cstart.asm の中で
.SECTION .sdataR, DATA $IF (__RENESAS_VERSION__ < 0x01010000) ; for CC-RL V1.00 ; !!! [CAUTION] !!! ; The start address of RAM depend on the device in use. ; See the user's manual of the device. ; ex. R5F10Y14ASP -> 0x0FFE60 RAM_ADDR_START .EQU 0x0FFE60 ; Start address of RAM (SAMPLE) RAM_ADDR_END .EQU 0x0FFEE0 ; End address of RAM +1 ;----------------------------------------------------------------------------- ; stack area ;----------------------------------------------------------------------------- ; !!! [CAUTION] !!! ; Set up stack size suitable for a project. .SECTION .stack_bss, BSS _stackend: .DS 0x40 _stacktop: $ENDIF
と書かれている箇所があります。これは CC-RL 1.00 を使用した場合にスタック領域をこゝで定義するというもので、今回使用した CC-RL V1.04.00 では不要のものです。マクロ __RENESAS_VERSION__ が適切に定義されていることを前提としていますが、この __RENESAS_VERSION__ というマクロは CC-RL のマニュアルに拠ると
11.3.6 アセンブリ・ソース・ファイルで有効な定義済みマクロ コンパイルドライバからアセンブラを起動する場合,アセンブリ・ソース・ファイルで定義済みマクロ__RENESAS_VERSION__ が有効になります。
とあり、コンパイルドライバを使用せずに直接 asrl コマンドを使用してアセンブルを行っている Applilet EZ PL for RL78 V2.00J ではこのマクロが定義されず正常機能していません。結果、使用されないスタック領域が無駄に定義されており、メモリの無駄遣いとなってしまっています。
アセンブルの際にもコンパイルドライバを使用するよう変更されゝばこの問題は解消するのではないでしょうか。
> 使用されないスタック領域が無駄に定義されており、メモリの無駄遣いとなってしまっています。> アセンブルの際にもコンパイルドライバを使用するよう変更されゝばこの問題は解消するのではないでしょうか。
makeprj.bat の cstart.asm をアセンブルしている箇所
"asrl.exe" @cstart.pst >> "test2.err" 2>&1
を
"ccrl.exe" -subcommand=cstart.pst >> "test2.err" 2>&1
に変更し、アセンブル時のレスポンスファイル cstart.pst の内容
-cpu=S1 -obj_path=".\obj\" -dev="C:\Program Files (x86)\Renesas Electronics\Applilet EZ PL for RL78 V2.00\Tools\BIN\..\..\Tools\DEV\DR5F10Y17.DVF" -include="C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.04.00\inc",".\include" src\cstart.asm
-cpu=S1 -obj_path=".\obj\" -dev="C:\Program Files (x86)\Renesas Electronics\Applilet EZ PL for RL78 V2.00\Tools\BIN\..\..\Tools\DEV\DR5F10Y17.DVF" -c -I "C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.04.00\inc",".\include" src\cstart.asm
に修正して makeprj.bat を実行し、ビルド時に生成される .map の各セクションの使用量を確認したところ、修正前は
RAMDATA SECTION: 00000084 Byte(s) ROMDATA SECTION: 000000d8 Byte(s) PROGRAM SECTION: 00000950 Byte(s)
だったものが
RAMDATA SECTION: 00000044 Byte(s) ROMDATA SECTION: 000000d8 Byte(s) PROGRAM SECTION: 00000950 Byte(s)
となりました。 無駄に定義されていたスタック領域がなくなり RAM の使用量が 64バイト減ることが確認できました。