M3S-T4-Tinyに於けるセクションの変更

初めて本フォーラムを利用させていただきます。

当方、SH7216を利用して製品を開発している者ですが、表題にあるモジュールを改変して作業を行っています。

現在、RAMの領域が肥大化していて、B_RX_DESCを先頭としてアサインされているアドレス(オリジナルは0xfff82400)を+0x400ほど後方に移し変えてリビルド&実行したところ、応答パケットが意図しない内容になってしまいました。

このソフトは、セルフプログラミング機能も組み込んであるので、RAM上に展開して運用しているのですが、RAM上のコードにはブレークポイントが貼れないようで、お手上げの状態です。

上記領域(B_RX_DECS等)は移動不可能なのでしょうか?

ご存知の方がいらっしゃればご教示ください。

Parents
  • わわいです
    M3S-T4-Tinyというのは使ったことないんでそこら辺は答えれないですが、、

    >RAM上のコードにはブレークポイントが貼れないようで
    おそらく外付けRAMを使っているものと思われますが、リセット時には外部バスはイネーブルになっていないため、最初にブレークポイントを張って実行させるということはできません。
    ある程度イニシャル部のコードを実行させ、バス設定したあと、コードのRAM転送を終わったところで一旦ブレークさせておき、そこから改めてRAM上のコードにブレークを貼って実行させるなどすれば行けるようになると思われますがどーでしょうか。

    #元のソースのセクション構成によっては、これでも無理な場合があると思いますが
  • おじさんと名乗らせていただいています。

    早速のご提案ありがとうございました。

    RAMはオンチップの領域ですが、頂いたご指示通り、一旦フリーランさせた後に止めると無事ブレークポイントが置けました。

    これで先に進めることができそうです。

    ありがとうございました。

    なお、M3S-T4-TinyはTCP/IPのプロトコルスタックを実装したものです。
  • わわいです
    ああ、内蔵RAMの領域ですね。そんでも事情は一緒で、コードをRAM転送させたところで一旦ブレークさせ、そこからRAM上にブレークを貼り実行させればOKです。

    まあ、とにもかくにもそのセクションを使用している箇所をリストアップしてみるとか、そのセクションのアドレスを直書きして変数やバッファを定義してるとこがないか探してみるとかですねー
  • おじさんです。

    本件解決しました。原因は、RAM部に割り当てなおした関数内に静的変数(送信バッファ)を使用していたためでした。

    元々FLASH領域にあったコードを、前記、セルフプログラミングのためRAM側のセクションに割り当てた結果、RAM部が肥大化してしまいました。

    これに対処するため、RAM部のセクションを移動したのですが、コード部を移動した際に、上記静的変数がRAM上からメモリマップトレジスタ領域に割り当てられてしまったため、意味不明な応答パケットになっていました。

    ご教示いただいたわわいさん、的確な指摘ありがとうございました。
Reply
  • おじさんです。

    本件解決しました。原因は、RAM部に割り当てなおした関数内に静的変数(送信バッファ)を使用していたためでした。

    元々FLASH領域にあったコードを、前記、セルフプログラミングのためRAM側のセクションに割り当てた結果、RAM部が肥大化してしまいました。

    これに対処するため、RAM部のセクションを移動したのですが、コード部を移動した際に、上記静的変数がRAM上からメモリマップトレジスタ領域に割り当てられてしまったため、意味不明な応答パケットになっていました。

    ご教示いただいたわわいさん、的確な指摘ありがとうございました。
Children
No Data