Applilet EZ PL for RL78 改善要望

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

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

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

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

Parents
  • ・作例 Lチカ

    1185.knight2000.zip

    10ピンの RL78/G10 をターゲットとして作成。Applilet EZ PL for RL78 V2.00 + CC-RL V1.04.00 の組み合わせで生成を行った結果、.map ファイルに出力される各セクションは

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .sdata
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .textf
                                      000000c4  000000c4         0   1
    .data
                                      000000ce  00000142        75   2
    .text
                                      00000143  00000a24       8e2   1
    .RLIB
                                      00000a25  00000a8a        66   1
    .bss
                                      000ffce0  000ffceb         c   2
    .dataR
                                      000ffcec  000ffd60        75   2
    .stack_bss
                                      000ffd62  000ffda1        40   2
    .sbss
                                      000ffe20  000ffe28         9   2
    .sdataR
                                      000ffe2a  000ffe2a         0   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  000000ca Byte(s)
    ROMDATA SECTION:  00000113 Byte(s)
    PROGRAM SECTION:  00000948 Byte(s)
    

    という結果となった。ROM の容量が 2kB を超えたため、R5F10Y16ASP では動作させることができない。内容的には単純なものであるためこの程度のものは R5F10Y16ASP で動作させたいところであり、省メモリ化でそれが実際に可能かを検証する。

  • 検証その 1

    1856.knight2000lite1.zip

    makeprj.bat を以下の通り変更

    • cstart.asm のアセンブルを asrl ではなく ccrl で行う様修正
    • .c ファイルをコンパイルした後アセンブルするのを削除

    .c をコンパイルする際に使用する *.pcc を以下の通り変更

    • コンパイルオプションに `-goptimize' を追加

    リンクの際に使用する *.plk を以下の通り変更

    • リンクオプションから `-NOOPtimize' を削除
    • `-OPtimize' と `-ENTry=_start' を追加

    以上の変更を行い makeprj.bat を実行してビルド行った結果、.map ファイルに出力された各セクションは以下の通りであり

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .sdata
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .textf
                                      000000c4  000000c4         0   1
    .SLIB
                                      000000c4  000000c4         0   1
    .data
                                      000000ce  0000013c        6f   2
    .text
                                      00000143  00000961       81f   1
    .RLIB
                                      00000a25  00000a8a        66   1
    .bss
                                      000ffce0  000ffceb         c   2
    .dataR
                                      000ffcec  000ffd5a        6f   2
    .sbss
                                      000ffe20  000ffe26         7   2
    .sdataR
                                      000ffe28  000ffe28         0   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000082 Byte(s)
    ROMDATA SECTION:  0000010d Byte(s)
    PROGRAM SECTION:  00000885 Byte(s)

    ROM の使用量が 201バイト、RAM の使用量が 72バイトそれぞれ削減された。

  • 検証その2

    6131.knight2000lite2.zip 

    検証その1 の内容に加えソースプログラムの冗長な部分に手を入れた。手法としては先に述べている部分も多いがその他、

    • cstart.asm の大部分を未使用領域として空いてる .callt0 に移動
    • 大域変数の 0 での初期化を削除(初期値が不要となるのでメモリ使用量の削減となる)
    • 大域変数を saddr に配置
    • main() から hdwinit() の呼び出しを削除

    以上の変更を行った。

    結果、ビルド時に生成される .map ファイルに出力された各セクションは以下の通りであり

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .callt0
                                      00000080  000000bf        40   2
    .const
                                      00000080  00000080         0   2
    .constf
                                      00000080  00000080         0   2
    .data
                                      00000080  00000080         0   2
    .sdata
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .textf
                                      000000c0  000000c0         0   1
    .RLIB
                                      000000c0  000000c0         0   1
    .SLIB
                                      000000c0  000000c0         0   1
    .security_id
                                      000000c4  000000cd         a   1
    .text
                                      000000ce  00000533       466   1
    .bss
                                      000ffce0  000ffce0         0   2
    .dataR
                                      000ffce0  000ffce0         0   2
    .sbss
                                      000ffe20  000ffea7        88   2
    .sdataR
                                      000ffea8  000ffea8         0   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000088 Byte(s)
    ROMDATA SECTION:  000000ce Byte(s)
    PROGRAM SECTION:  00000466 Byte(s)
    

    最初のものと比べ ROM の使用量が約半分と、大幅なメモリ使用量の削減が達成できたと言える。R5F10Y16ASP でも十分動作させられるサイズに収まった。

    Applilet EZ PL for RL78 のテンプレートとして提供されているソースファイルがメモリ使用量を重視して書かれていればこの程度のメモリ使用量の削減は可能な筈であり今後に期待したい。

    ※ 2017/05/29 cstart.asm に不具合があったので添付ファイルを更新

  • 検証その 1」の .map ファイルの出力を見てみると、NoMay さんの報告されてる「(3) 機能しないパターンその2」と同様の「謎の空隙(くうげき)」が出来ていることに気付いた。

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .sdata
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .textf
                                      000000c4  000000c4         0   1
    .SLIB
                                      000000c4  000000c4         0   1
    .data
                                      000000ce  0000013c        6f   2
    .text
                                      00000143  00000961       81f   1
    .RLIB
                                      00000a25  00000a8a        66   1
    .bss
                                      000ffce0  000ffceb         c   2
    .dataR
                                      000ffcec  000ffd5a        6f   2
    .sbss
                                      000ffe20  000ffe26         7   2
    .sdataR
                                      000ffe28  000ffe28         0   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000082 Byte(s)
    ROMDATA SECTION:  0000010d Byte(s)
    PROGRAM SECTION:  00000885 Byte(s)

    リンクの際に使用している rlink.exe へのサブコマンド・ファイル knight2000.plk に

    -STARt=.text,.textf,.RLIB,.SLIB,.sdata,.data/000ce,.dataR,.bss/FFCE0,.sdataR,.sbss/FFE20
    

    を追加してビルドした結果、

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .text
                                      000000ce  000008ec       81f   1
    .textf
                                      000008ed  000008ed         0   1
    .RLIB
                                      000008ed  00000952        66   1
    .SLIB
                                      00000953  00000953         0   1
    .sdata
                                      00000954  00000954         0   2
    .data
                                      00000954  000009c2        6f   2
    .dataR
                                      000ffce0  000ffd4e        6f   2
    .bss
                                      000ffd50  000ffd5b         c   2
    .sdataR
                                      000ffe20  000ffe20         0   2
    .sbss
                                      000ffe20  000ffe26         7   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000082 Byte(s)
    ROMDATA SECTION:  0000010d Byte(s)
    PROGRAM SECTION:  00000885 Byte(s)
    

    謎の空隙は解消した。

Reply
  • 検証その 1」の .map ファイルの出力を見てみると、NoMay さんの報告されてる「(3) 機能しないパターンその2」と同様の「謎の空隙(くうげき)」が出来ていることに気付いた。

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .sdata
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .textf
                                      000000c4  000000c4         0   1
    .SLIB
                                      000000c4  000000c4         0   1
    .data
                                      000000ce  0000013c        6f   2
    .text
                                      00000143  00000961       81f   1
    .RLIB
                                      00000a25  00000a8a        66   1
    .bss
                                      000ffce0  000ffceb         c   2
    .dataR
                                      000ffcec  000ffd5a        6f   2
    .sbss
                                      000ffe20  000ffe26         7   2
    .sdataR
                                      000ffe28  000ffe28         0   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000082 Byte(s)
    ROMDATA SECTION:  0000010d Byte(s)
    PROGRAM SECTION:  00000885 Byte(s)

    リンクの際に使用している rlink.exe へのサブコマンド・ファイル knight2000.plk に

    -STARt=.text,.textf,.RLIB,.SLIB,.sdata,.data/000ce,.dataR,.bss/FFCE0,.sdataR,.sbss/FFE20
    

    を追加してビルドした結果、

    *** Mapping List ***
    
    SECTION                            START      END         SIZE   ALIGN
    
    .vect
                                      00000000  0000007f        80   0
    .const
                                      00000080  0000008f        10   2
    .constf
                                      00000080  00000080         0   2
    .option_byte
                                      000000c0  000000c3         4   1
    .security_id
                                      000000c4  000000cd         a   1
    .text
                                      000000ce  000008ec       81f   1
    .textf
                                      000008ed  000008ed         0   1
    .RLIB
                                      000008ed  00000952        66   1
    .SLIB
                                      00000953  00000953         0   1
    .sdata
                                      00000954  00000954         0   2
    .data
                                      00000954  000009c2        6f   2
    .dataR
                                      000ffce0  000ffd4e        6f   2
    .bss
                                      000ffd50  000ffd5b         c   2
    .sdataR
                                      000ffe20  000ffe20         0   2
    .sbss
                                      000ffe20  000ffe26         7   2
    
    *** Total Section Size ***
    
    RAMDATA SECTION:  00000082 Byte(s)
    ROMDATA SECTION:  0000010d Byte(s)
    PROGRAM SECTION:  00000885 Byte(s)
    

    謎の空隙は解消した。

Children
No Data