RZ/A1のデバイス名末尾「_DualSPI」について

RZ/A1の一部でデバイス名の同じ型番の末尾に「_DualSPI」のあるものがあります。

例:

 R7S721000
 R7S721000_DualSPI

これは何が違いますか?

例えばe2studioから新規プロジェクトを作成する際、ターゲットデバイスとしてどのような基準で選択すればよいのでしょうか?

  • チョコです。

    DualSPIはSPIの拡張規格でデータ信号が2本になっていてSPIに比べて2倍の速度で通信できるものです。

    ターゲットがその規格をサポートしているかどうかで判断すべきだと思います。

    以上

  • 個人の推測ですが。

    DualSPI は、Dual Single/Dual/Quad-SPI の略で、「シリアルフラッシュを2個接続」みたいな意味だと思います。

    ハードウェアマニュアルによると、RZ/A1 内蔵のシリアルフラッシュインタフェース(SPIBSC)は、
    (1) 1チャネルあたりシリアルフラッシュを2個まで接続可能
    (2) データバス幅を1つのシリアルフラッシュに対し、1ビット、2ビット、4ビットから選択可能
    という特徴があります。

    デバイス名の末尾の _DualSPI は、(1) の特徴に関連したもので、
    (a)「R7S721000」は、1チャネルあたりシリアルフラッシュを1個、接続
    (b)「R7S721000_DualSPI」は、1チャネルあたりシリアルフラッシュを2個、接続
    したシステム構成であることを表しています。

    ツールとしては、同じ R7S721000 を使用したシステムであっても、例えば、シリアルフラッシュへの書き込み処理などで、(a) と (b) を区別する必要があります。本来なら、ツールの UI に個別の設定項目を設けるのが解り易いと思うのですが、色々と面倒だったのでしょう。
    1個接続時のデバイス名「R7S721000」に対して、2個接続時には「R7S721000_DualSPI」という便宜上のデバイス名を指定させることで区別する仕様にし、お茶を濁したのだと思います。

    関連するトピックとして、English Forum に次のスレッドがあります。読むと参考になるかもしれません。

    Programming RZ/A1M with dual quad spi and J-link

  • 詳細なご返答ありがとうございます。
    シリアルフラッシュにプログラムするような場合の動作が異なるということで理解しました。
    e2studio(や内部で呼び出すツール)がシリアルフラッシュ2個つまり末尾「_DualSPI」の型番を指定した場合は、シリアルフラッシュ1個目にN番地データ、2個目にはN+1番地データが書き込まれるようなイメージをしています。

  • はい。二ブル単位ではなくバイト単位でインタリーブ、で正しいと思います。

  • Dualとそうでないものと両方でプロジェクトを作ってdiffを取ると、ビルドオプションもソースコードも違いはなく、ただデバイス名が違うだけでした。一方Segger J-Link(のDLL)ではDualありなしのデバイス名を区別するようになっています。
    以上の事からデバッガ経由で書き込み(ダウンロード)を行う際に最初からdualモードでアクセスできるようにするためにデバイス名で選択できるようにしていることが察せられます。(Seggerのローダではデフォルトはシングルになっています)
    実装するメモリの種類とボード上での実装に合わせて選択すれば良いでしょう。
    ボードがdualで使える実装になっていればどっちを選んでも動かないと言うことはないと思います。

  • そうそう、Okra さんのコメントを見て、RZ/A1 の内蔵 ROM のファームウェアに関連する注意事項に気付きました。

    • RZ/A1 の内蔵 ROM のファームウェアは、(多分)フラッシュメモリが Single か Dual かを判別出来ないので、Dual の場合であっても、ブートモード3で実行ロードする対象のブートプログラムは、1個目のフラッシュメモリのみに書き込む必要がある
    • 同ファームウェアは、アドレスフィールドが3バイトの READ コマンドを発行するので、ブートモード3で実行ロードする対象のブートプログラムは、フラッシュメモリの先頭から 16 MB 以内の領域に書き込む必要がある
  • お答えいただきありがとうございます。

  • Okraさん、egretさん、情報ありがとうございます。