このページでは

C

Infineon ボードのフラッシュ手順

注: フラッシュ・プログラミングは完全に自動化できます。詳細については、OpenOCDベースのプログラミングを参照してください。

はじめに

内部および外部フラッシュ・メモリをプログラムする方法は複数あります。内部フラッシュメモリは、必要な基本プロトコルを実装したアプリケーションを使用して、SWDまたはJTAG接続でプログラムすることができます。Infineon TRAVEO T2G開発ボードの一部には、MCUのSWDピンに接続されたKitProgプログラマが搭載されています。

KitProgまたはMiniProgソリューションが使用されている場合、パッケージはプログラミングに活用できます。 Infineon/openocd">Infineon OpenOCD-basedパッケージをプログラミングに活用できます。これには、ModusToolbox Programming Toolsと Auto Flash Utilityの両方が含まれます。その他のSWDまたはJTAGベースのソリューションの場合、サードパーティ・ベンダーのIDEやデバッガも通常使用できます。

注: SWDとJTAGのどちらかを選択する場合、これら2つのプロトコルで最大定格クロック速度が異なることに注意してください。また、トレースやケーブルの物理的な長さも最大クロック速度に影響します。サポートされている評価ボードで作業する場合、SWDの標準的なクロック速度は10MHzで、JTAGのそれは50MHzです。

シリアル・メモリ・インターフェース(SMIF)デバイスのような外部メモリ・デバイスのプログラ ミングはより複雑です。一般的なアプローチは、デバイス上にサポート・アプリケーションをロードし、MCU自体から外部デバイスをプログラムすることです(つまり、デバッグ・プロトコルでデータを転送するだけです)。TRAVEO T2Gファミリシリーズの多くの開発ボードでは、このような機能はプログラミングツールによってすぐに提供されます。

OpenOCDベースのプログラミング

Infineon-固有のOpenOCDアプリケーションは、以下のソフトウェアパッケージから入手可能ですが、これに限定されません:

  • ModusToolbox プログラミングツール
  • Infineon オートフラッシュユーティリティ

OpenOCDアプリケーションは、openocd/bin ディレクトリの下の対応するソフトウェアのインストール場所にあります。サポートスクリプトはopenocd/scripts ディレクトリにあります。openocd/scripts/interface ディレクトリにはデバッグプローブ用のスクリプトがあり、openocd/scripts/target には実際のターゲットスクリプトがあります。

注: Infineon- カスタマイズされた OpenOCD はアップストリームの OpenOCD ディストリビューションと異なる場合があり、追加のソースが含まれている可能性があります。

: OpenOCD バイナリ・ディレクトリがシステム・パスに追加されるか、または上記のソフトウェア・パッケージが対応するデフォルトのインストール場所にインストールされると、ブートローダを含むすべてのQt Quick Ultralite ターゲットに適したフラッシュ・ターゲットが追加されます。例として、minimal に対するflash_minimal があります。このターゲットを使用すると、ターゲットのバイナリで OpenOCD が起動します。

プログラミング手順

フラッシュ・プログラミングの手順は以下の通りです:

  1. 選択したSWDまたはJTAGプローブと相互作用する適切なスクリプトを選択します。
    • オプションとして、外部メモリ・デバイス・プログラミングを処理する適切なユーティリティ・アプリケーションを選択します。
  2. ターゲットと対話する適切なスクリプトを選択します。
  3. 目的のアプリケーション(またはブートローダ)を選択し、そのプログラミング・コマンドを発行します。

同じメモリ・デバイスを複数のコアで共有する場合、特にフラッシュ・ベースのスト レージでは、以前に書き込んだデータを最初に消去しなければならないことを覚えておく必 要があります。消去操作のための最小セクタ・サイズまたは最小ブロック・サイズは、通常、対応する書き込みブロック・サイズよりも大きくなります。したがって、ELFのような複数のバイナリファイルからアプリケーション(およびブートローダ)をプログラミングする場合、消去ブロックが互いに重ならないようにしなければなりません。プログラミング・ツールはデータの消去と書き込みを行うだけで、データのマージは行いません。

注意: バイナリ・コンテナとしてELFを使用する場合、埋め込まれたデバッグ・セクションは適切に処理され、実際のデバイスには書き込まれません。これにより、デバッグ・シンボルをデバッガ用のELFファイルの所定の位置に残すことができるため、プログラミング手順が簡素化されます。

一般に、OpenOCD はツール・コマンド言語(Tcl)プログラミング言語を使って駆動します。コマンドは、既存のスクリプトファイル、コマンドライン、またはこれらの任意の組み合わせから供給することができます。

注意: OpenOCD のコマンドライン引数の引用に注意してください。パスにはバックスラッシュの代わりにフォワードスラッシュを使用します。空白で区切られたパラメータを持つ Tcl コマンドを呼び出す場合は、コマンドの呼び出し全体を引用符で囲みます。したがって、-c "program minimal.elf"-c program minimal.elf同じではない。後者はパラメータなしでprogram を呼び出し、minimal.elf は Tcl コマンドとしてではなく、OpenOCD の引数として評価されます。

スクリプトとプログラミング・コマンド

インターフェース・スクリプト

選択したインターフェース・スクリプトは、目的のデバッグ・プローブを設定します。

プログラマースクリプト
KitProg3またはMiniProg4interface/kitprog3.cfg
J-Linkプローブinterface/jlink.cfg

注: 上記のインターフェース・スクリプトは単なる例です。サポートされているインターフェースの詳細については、interface ディレクトリまたは OpenOCD のドキュメントを参照してください。

デバイススクリプト

選択したデバイス・スクリプトは、フラッシュ・アドレスやレジスタの位置など、目的のターゲット・デバイスのプロパティを設定します。

ボードスクリプト
TRAVEO T2G CYT3DL (4Mおよび4M LITE KIT)target/traveo2_c2d_4m.cfg
TRAVEO T2G CYT4DL (6M [327-BGA-REF]および6M LITE KIT)target/traveo2_c2d_6m.cfg
トラベオT2G CYT4DL(6M[327-BGA-REV-B)target/traveo2_c2d_6m_b1.cfg
トラベオT2G CYT4DL (6M DDR)target/traveo2_c2d_6m_ddr.cfg

プログラミング・コマンド

プログラミング・コマンドは、OpenOCD に組み込まれている個々の関数か、ベンダーが提供する Tcl スクリプトです。

アクションコマンド
トランスポートとして SWD を選択します。transport select swd
minimal.elf をプログラムし、プログラミングが成功したことを確認し、最後に終了します。program minimal.elf verify exit

注: program コマンドはinitreset init の両方を暗黙的に呼び出します。program スクリプトの詳細は、OpenOCD ソースパッケージのsrc/flash/startup.tcl で調べることができます。

外部メモリデバイス上での OpenOCD ベースのプログラミング

一般に、外部 SMIF メモリ・デバイスのプログラミングには、特別なローダー・アプリケーションを使用する必要があります。ローダーアプリケーションは、SMIF0_LOADERSMIF1_LOADER 変数を定義することで選択できます。以下のリストは完全ではありません。サポートされているSMIFローダーは、通常、target/traveo_c2d_4m.cfg のような選択されたデバイス・スクリプトにリストされています。

注: 以前のデバイススクリプトのバージョンでは、ENABLE_SEMPERFLASH_0ENABLE_SEMPERFLASH_1ENABLE_HYPERFLASH_0ENABLE_HYPERFLASH_1 変数を使用してローダーを選択していました。これらは非推奨であり、もう使用しないでください。

注意: 外部メモリー・デバイスをプログラミングする際には、MCUがこれらのデバイスを初期化し、有効にしていることを忘れないでください。プログラミング完了後にデバイスが初期化解除されるか、電源が落とされるかは、個々の実装の詳細によって異なります。したがって、後続のリセット信号がこれらの外部デバイスにも適切に伝搬されることを確認することが重要です。

そうでない場合、メモリ・デバイスは、システム初期化コードによるプログラム記憶領域の関係でサポートされないか、処理されないか、あるいはプログラム的に回復するのが非常に困難な状態になる可能性があります。リセット信号を調整するには、さまざまな方法を使用できます。例えば、OpenOCD 変数ADAPTER_SRST_DELAYADAPTER_SRST_PULSE を使用することができます。

SMIFローダー

ボードローダ(SMIFチャネル)
TRAVEO T2G CYT3DL (4Mおよび4M LITE)
  • TV2_C2D_4M_SemperFlash_0.elf (SMIF0)および
  • TV2_C2D_4M_SemperFlash_1.elf (SMIF1)
TRAVEO T2G CYT3DL (6M [327-BGA-REF])
  • TV2_6M_SI_A0_SemperFlash.elf (SMIF0)、
  • TV2_6M_SI_A0_HyperFlash.elf (および
  • TV2_6M_SI_A0_DualQuadSPI.elf (SMIF0)。
トラベオT2G cyt4dl(6m[327-bga-rev-b)
  • TV2C2D6MB1_S0_S28HS512T.elf (SMIF0)、
  • TV2C2D6MB1_S0_DDR_S28HS512T.elf (SMIF0)
  • TV2C2D6MB1_S1_S26HS01GT.elf (SMIF1)および
  • TV2C2D6MB1_S1_S27KL064.elf (SMIF1)。
トラベオT2G cyt4en (6m DDR)
  • TV2C2D6MDDRA0_S0_S28HS512T.elf (SMIF0)、
  • TV2C2D6MDDRA0_S0_eMMC.elf (SMIF0)および
  • TV2C2D6MDDRA0_S1_S27KS064.elf (SMIF1)。

OpenOCDの詳細

OpenOCD を使用する際には、対応する OpenOCD のドキュメントと付属のスクリプトを参照することをお勧めします。最も一般的な設定のうち、プロトコルリンク速度はADAPTER_SPEED 変数を設定することで変更できます。リセット設定はreset_config コマンドで変更できます。

注意: リセット設定は正しく行ってください。TRAVEO T2Gファミリでは、デバイスは外部リセット(通常XRST)とJTAGテストリセット(通常TRSTn)の両方のピンを持っています。しかし、これらのピンは同等ではありません。デバッガがこれらのピンを別々に駆動することは可能です:JTAG-APアクセス可能なデバッグ・レジスタがプログラムされている間、MCUをリセット状態に保持することができ、その後、外部リセットが解除されます。しかし、多くのTRAVEO T2G開発ボードのように、これらのピンが一緒に接続されている場合、デバッグソフトウェアはデバッグレジスタをプログラムしたと思うかもしれませんが、実際にはJTAG-APを含むチップ全体がリセット状態に保持されています。

OpenOCDの使用

OpenOCDには多くのオプションがありますが、一般的なアプリケーションでOpenOCDを使用するのは簡単です。以下の例では、ターゲットとして Traveo T2G 4M を使用しています。

.
openocd \
    -f interface/kitprog3.cfg \
    -c "set SMIF0_LOADER TV2_C2D_4M_SemperFlash_0.elf" \
    -f target/traveo2_c2d_4m.cfg \
    -c "program <PATH_TO_BINARY>/minimal.elf verify exit"
openocd ^
    -f interface/kitprog3.cfg ^
    -c "set SMIF0_LOADER TV2_C2D_4M_SemperFlash_0.elf" ^
    -f target/traveo2_c2d_4m.cfg ^
    -c "program <PATH_TO_BINARY>/minimal.elf verify exit"

高度な使用法

複数の-c-f 引数を与える代わりに、操作を実行する Tcl スクリプトを作成することも可能です。以下のスクリプトは、上のコマンドとまったく同じことを行う。

source [find interface/kitprog3.cfg] # Similar as `-f` argument.
transport select swd
set SMIF0_LOADER TV2_C2D_4M_SemperFlash_0.elf
source [find traveo2_c2d_4m.cfg]
program <PATH_TO_BINARY>/minimal.elf verify exit

詳しくは OpenOCD のドキュメントを参照してください。デフォルトでは、OpenOCD はスクリプトファイルを探すときに複数の異なるディレクトリを検索します。したがって、これらのデフォルトの検索ディレクトリにスクリプトを追加し、コマンドラインで名前だけを指定することも可能です。これらのディレクトリには以下のものが含まれますが、これらに限定されるものではありません:

  • カレントディレクトリ
  • ホームディレクトリ
    • %HOME%\.openocd
    • %APPDATA%\OpenOCD (Windowsのみ)
  • OpenOCDインストールディレクトリ内のscripts ディレクトリ。

注意: Windows では、デフォルトではHOME 環境変数が存在しない場合があります。OpenOCD はデフォルトのインクルードパスをコンパイルする際に、USERPROFILEHOMEDRIVE,HOMEPATH 環境変数から環境変数を構築しません。ただし、HOME 環境変数が存在しない場合は、手動で追加できます。


詳細はこちらをご覧ください。