EEL pack02のメモリに関して

Former Member
Former Member

環境はCS+ for CC V8.01.00 [03 Dec 2018]  / CC-RL V1.08.00   /R5F100AE  /EEL pack02使用です。

セルフRAMリスト(R20UT2943JJ0302)を参照してFEF00H-FF07FHを空けてmapファイルは下記の状態です。

.monitor2   0000fe00 0000ffff 200 1
.dataR        000ff080 000ff160 e1 2
.bss           000ff162 000ffe05 ca4 2
.sdataR      000ffe20 000ffe20 0 2
.sbss          000ffe20 000ffe20 0 2
EEL_SDAT  000ffe20 000ffe20 1 2
FDL_SDAT  000ffe22 000ffe23 2 2

このときに関数の引数や関数内の変数がFF020HなどFEF00H-FF07FHの中に配置されることがあります。

EEL_ERR_INTERNALやRefreshの失敗などが起こっていて、これが原因だと思っています。

map上だと未使用に見えるのですが、セクション指定が足りないなどあるのでしょうか?

Parents
  • Former Member
    Former Member
    fujita nozomuさん わわいさん
    回答ありがとうございます。
    SPを確認したら0xf070になっていて思いっきりかぶっていました。
    FEF00H-FF07FHをスタックで使わないようにするには、スタックの禁止領域など設定可能なのでしょうか?

    または、FEF00H-FF07FHを確保するには適当にセクションを作れば良いのでしょうか?
    その際はセクションの大きさなどはどのようにすれば指定可能でしょうか?
  • わわいです
    スタックは設定値から下方のアドレスに伸びて消費しますんで、スタックを0xfef00より小さいアドレスに設定すればいいです
    また、0xff07f以降に十分なRAM領域があるなら、その領域にスタックを設定することもできます
    このとき、他のセクションを侵食しないようスタックの消費量とともに検討の必要があります

    スタックのアドレスの設定法はお使いのツールチェイン(コンパイラ)のマニュアルに書いてあると思うので読んでみてください。

    #まあ、究極的にはインラインアセンブラで設定してやればいいんですが
Reply
  • わわいです
    スタックは設定値から下方のアドレスに伸びて消費しますんで、スタックを0xfef00より小さいアドレスに設定すればいいです
    また、0xff07f以降に十分なRAM領域があるなら、その領域にスタックを設定することもできます
    このとき、他のセクションを侵食しないようスタックの消費量とともに検討の必要があります

    スタックのアドレスの設定法はお使いのツールチェイン(コンパイラ)のマニュアルに書いてあると思うので読んでみてください。

    #まあ、究極的にはインラインアセンブラで設定してやればいいんですが
Children
No Data