E10Aを利用した、外部 RAM でのソフトウェア開発の可否

こんにちは、Kanと申します。

 

現在 SH7254R を使用した開発を行っています。

開発環境としてHEWを、デバッガとしてE10A-USBを利用しているのですが、

 

「BSCで接続された外部RAM (不揮発品) にソフトウェアを書き込んで開発を行うことはできるでしょうか?」

 

より具体的には、以下のような運用を考えています。

マイコン内蔵FLASHに最小限のプログラムだけ載せて置き、実際の(大半の)処理はBSCで接続された外部RAMに書く。

書き換えの時は、E10AからRAMだけを書き換える。

 

これを行う理由として、

① フラッシュの書き換え回数を減らしたい(書けなくなるかが基準ではなく、可能な限りダメージを与えずに開発を進めたい)

② 後程E10A無しで、無線通信のみでプログラムを書き換えたい

という二点の要求があります。

 

いろいろと調べたのですが、なかなか情報が見つからず、

・そもそもSHマイコンのBSC設定をHEWからいじれるのか

・いじれたとしてそのまま外部RAMへのプログラム書き込みを行えるのか

・デバッグ時の挙動はどうなるのか(ソフトウェアブレークであれば使用可能か)

等、気になる点がいくつかあります。

 

皆さんの中で、このような開発を行ったことがある方はいらっしゃるでしょうか?

  • わわいです
    SH7254R って使ったことないですが、外部バスが出ていてメモリを増設できるなら、ふつーに可能です。
    SHやらRZやらで、フラッシュ外付けでふつーに開発/デバッグしてました
    まあ、いろいろハードルはありますが、がんばってください

  • わわいさん

    ありがとうございます。
    フラッシュ外付けの話は見たことあるのですが、フラッシュではない外付け(今回は不揮発RAM)で開発するという話をあまり見ません。

    これらはユーザー視点では同じ方法で可能なのでしょうか?
  • わわいです
    フラッシュでもRAMでも基本変わりません。
    RAMの場合は起動時にコードをロードしないとダメってだけのはなしですね
  • Kanさん
    そんなにハードルは高くないです、
    プロジェクトのビルドモードを2個作成して1個はブートROM用にカスタマイズして、もう一つをRAM用にカスタマイズすれば良いです、起動時はブート領域から実行されますが、そこからRAMへ分岐するような動作になります、カスタマイズはセクションやベクター等を適当に調整します、ブート用のプログラムをROMに焼いて置きそのあとはビルドモードを切り替えてRAM用のプログラム開発ができます、ドキュメントやサンプルもたくさんあると思います、頑張ってください。
  • こんにちは、菅原と申します。

    SHは最近触っていないので、昔の記憶になりますが、普通に可能だと思いますよ。
    私は アルファプロジェクトのデバッガを使っていましたが、 BSCの設定をするような機能があり、SHにプログラムが入っていなくても SDRAMやFlashROMに書き込んで、プログラムを実行することができます。おそらくデバッガでも同様の機能はあるでしょう。
    ハードウェアブレークはマイコンに依存するものですので、使用可能です。

    注意しないといけないのは 内蔵Flashと外部のメモリはアクセススピードが違うので、処理速度が変わってきたり、割り込みの応答時間が変わることがあります。キャッシュが効いているときと効いていないときも速度が変わります。

    Flashのダメージが心配な場合、私ならば開発用の基板と出荷用の基板を用意します。Kanさんの開発事情がわからないので、なんとも言えないことではありますが、工数もかかるし、トラブル発生のリスクもあるので、私はおすすめしません。
  • あ、すいません、あの気が付いたことですが、ブート用にするビルドモードは設定とかは約に立ちません、分岐するのみで使用します、それで開発用のRAM上で全てを初期化するようにします、そうしないとうまくいきませんのでご注意を。
  • みなさん、ありがとうございます。

    セクション配置を、ブート領域を内蔵ROM、プログラム領域等を外付けRAMにすることでできそうなイメージが付きました。

    一点、プログラムを外付けRAMに書き込もうにも、今使っているSH2AシリーズではHEWからBSCの初期化を行う方法が見当たらない(説明書やネットでの検索にかからない)です。
    したことがある方がいらっしゃれば、もしよければ参考資料等を教えていただきたいです。
  • BSCの初期化はブートプログラムで行わないといけませんね、先ほど分岐のみとしたのは間違いで
    1.ブートプログラム→様々の設定は行う
    2.RAMプログラム→再度設定をし直す
    でした。