RL78/G13のプログラム領域について

こんにちは。

モモと申します。

 

私は現在、RL78/G13の「R5F100AGASP」で開発を行っており、constで合計80KB近くの領域を扱おうとしています。

CS+ for CA,CXを使用しているのですが、RL-78コンパイラの無償評価版ではROM領域を64KBしか扱えないので、製品版のRL-78ライセンスを購入しました。

CS+ for CA,CX V4.03.00  [07 Jun 2019]
製品情報
Compiler Standard V1 for RL78 (CC-RL) ノードロック・ライセンス(annual)
 

R5F100AGでは128KBのROM領域を持っている筈なのですが、適当なプログラムで生成したmapファイルを見ると、下記のように書かれていました。

  MEMORY=ROM
  BASE ADDRESS=00000H   SIZE=10000H

上記のように、64KBのROM領域しか使用できていないようなのです。

128KBの領域を使うためには何か設定が必要なのでしょうか。

当方メモリを意識してプログラムを書くのは初めてのことで、何を調べてよいかも分からない状況です。

初歩的な質問で申し訳ありませんが、宜しくお願いします。

Parents
  • モモです。
    上記の件について、自分で調べてみて分かったことがあります。
    どうやら、無償評価版のコンパイラを使っていた時のコンパイラが下記の場所に入っているようです。
    (略)\Renesas Electronics\CS+\CACX\CA78K0R\V1.72
    しかし、製品版のコンパイラは下記の場所に入っているようです。
    (略)\Renesas Electronics\CS+\CACX

    そして、CS+のビルドツールのオプションによれば、使用するコンパイラ・パッケージのインストール・フォルダは前者のようなのです。

    インストールフォルダを変更することはできないでしょうか。
  • モモさん、こんにちは。NoMaYと申します。

    製品版を購入したことが無いですので、一般的なインストーラの知識に基づいてのリプライになってしまいますが、インストール時にフォルダを指定するステップは無かったでしょうか?

    記憶が曖昧であれば、一旦アンインストールして、再度インストールをやり直せば良いと思います。もし、その時、既にフォルダがあるからということで、上書きインストールするか尋ねられた場合は、上書きインストールすれば良いと思います。或いは、(こちらの手順の方が一般的かな、とも思いますが)インストール済みの評価版をアンインストールしてから、製品版をインストールする、手もあると思います。

    それでも、頑なにインストーラが (略)\Renesas Electronics\CS+\CACX にインストールしようとするのであれば、もうそこにインストールしてから、ファイルをフォルダ構造ごと、(略)\Renesas Electronics\CS+\CACX\CA78K0R\V1.72 にコピーすれば、何とかなると思います。(私は、CS+がfor CCとfor CA,CXに分かれた時に、この手を使って、それまでに既にインストール済みだったコンパイラを使い続けられるようにしたことがあります。)

    あと、今回のようなインストールの相談は今まで無かったと思いますので、インストールDVDの中に、何かreadme.txtのようなファイルが無いかどうか、もう一度確認してみるのも良いかもしれないように思います。

    [追記]

    あと、ふと気になったことですが、共用パソコン/共用ノートパソコンだった場合、CS+をインストールしたアカウント(or ユーザ/人)と今回のモモさんのアカウントが異なると、こういったことが起きたりする可能性もあったりするのかな、とも思ったりしました。(そういう事例が記憶にある訳では無くて、それこそ、ふと思い浮かんだ、というレベルですけれど。)

  • NoMaYさん

    ありがとうございます。
    全てを再インストールしてみましたが、やはりフォルダは変わらないようです…。
    追記についても、私専用のPCです。

    やはり、CS+ for CC専用なのかもしれません…。
    しかし、ディスク内のreadmeにはCS,CXとCCの両方でコンパイラが使えるようなことが書いてあります。
    うーん…
  • モモさん、こんにちは。NoMaYです。

    あっっ、fujitaさんが書かれている通り、CS+ for CA,CXであればCA78K0Rの方を購入しないと使えないですね。CC-RLの方を購入されたということであれば、CS+ for CCを使わないと(インストールしないと)いけないです。(ディスク内のreadmeは間違っているとしか思えないです、、、CC-RLがCS+ for CA,CXで使えた時期は無かったと思います、、、) ただ、CS+の操作方法としてはCS+ for CA,CXとCS+ for CCで殆ど変わらないですので、CS+の方の乗り換えは大したことは無いですね。

    問題はCA78K0RからCC-RLへの乗り換えの方ですね。過去のCA78K0R向けのソースを流用しようとすると、ちょっと大変か(#pragmaの種類とか変わっていますし、SFRアクセスするようなソースでは#include "iodefine.h"の記述が必要ですし、P0.0などはP0.bit_no0といった記述に変更になりますし、最適化が強力になった分、適切にvolatile宣言しないと、プログラムが誤動作したり)とは思いますが、CC-RLのコンパイラ移行支援機能(コンパイラオプション)を使うと幾分は楽になるようです。

    でも、過去のソースの流用という点以外では、CA78K0RからCC-RLへ乗り換えて損は無いと思いますよ。コンパイラが生成したコードは、サイズも小さいですし、スピードも速いですし。(もちろん、業務の切り替わりの時だったり、既に新しい業務に入っていても開発が初期だったり、であれば、ですが。)

  • こんにちは

    fujitaさん、NoMaYさんのご指摘どおりでCC-RLのライセンスではCA78K0Rは使えないので、デバイスがRL78ならば早い時期にCC-RLへ移ったほうが良いと思います。RL78から78Kへデバイス変更はあまりしないと思いますし。

    Cソースの移行についてはRenesasでも多少の支援ツールを用意してくれているようですので利用できるかどうか検討してみては。
    RL78ファミリ用Cコンパイラへの移行支援
    www.renesas.com/.../compiler-package-for-rl78-family-convert.html

    移行にあたっての注意事項などはこちらのページにも資料へのリンクが貼ってあります。
    移行ガイド: コンパイラ編
    www.renesas.com/.../migrating-between-ides.html
  • NoMayさん

    ありがとうございます。
    やはりCS+ for CCしか使えませんか。
    そして、先ほど、手作業で強引に乗り換えてソフトを書いてきました…!
    力技なら得意です…!

    …しかし、やはりROM領域を64KBしか扱えていないように思います。
    本当はconstをもっと入れたいのですが、これ以上増やそうとするとエラーが出てしまうのです…。
    メモリの使い方が間違っているのでしょうか。

    *** Error information ***

    *** Mapping List ***

    SECTION START END SIZE ALIGN
    .vect
    00000000 0000007f 80 0
    .constf
    00000080 00000080 0 2
    .sdata
    00000080 00000080 0 2
    .option_byte
    000000c0 000000c3 4 1
    .security_id
    000000c4 000000cd a 1
    .SLIB
    000000c4 000000c4 0 1
    .data
    000000ce 0000012f 62 2
    .text
    00000130 00000322 1f3 1
    .textf
    00000323 000018f0 15ce 1
    .RLIB
    000018f1 00001a1b 12b 1
    .const
    00003000 0000b4f5 84f6 2
    .bss
    000fcf00 000fd83b 93c 2
    .dataR
    000fd83c 000fd89d 62 2
    .sbss
    000ffe20 000ffe20 0 2
    .sdataR
    000ffe20 000ffe20 0 2
  • > …しかし、やはりROM領域を64KBしか扱えていないように思います。
    > 本当はconstをもっと入れたいのですが、これ以上増やそうとするとエラーが出てしまうのです…。
    > メモリの使い方が間違っているのでしょうか。

    CC-RLのマニュアルの「メモリモデル」やら「__far」やら書かれてるところを参照されることをお勧めします。
  • fyzita nozomu さん

    ありがとうございます。
    constのサイズの合計が0xd943のようだったので、「ROMデータをfar領域に配置する」のオプションにチェックを入れて書き込むことができました。
    const領域が0x10000からスタートしていました。

    資料を読みながらもう少しじっくり考えてみようと思います。
  • fujita nozomuさんだ
    名前を間違えて申し訳ありません
Reply Children
No Data