私が取り組んだ小さなプロジェクトは、RT1050の起動がさまざまなメモリタイプからどのように実行されるかを理解することでした。SDK の LED_blinky コードをベースラインとして使用し、EVKB ボードでいくつかのテストを実行しました。私が収集したデータと、より詳細なテスト手順を以下に説明します。
起動時間は、プロセッサが最初に電力を受け取る時間から、main() 関数からコードの最初の行を実行するまでの時間として定義されます。
オシロスコープ(Tektronix TDS 2014)を使用して、POR_B*信号の立ち上がりエッジから次の2点までの時間を測定しました。
*POR_B信号は、ヘッダーJ26-1を介してスコープに使用できました
**FlexSPI_CS信号は、ボード上の小さなプルアップ抵抗R356を介して利用できます。この抵抗器の横に細いワイヤーをはんだ付けし、オシロスコープでプローブしました。
使用されたGPIOピンは、USER_LEDに接続したものと同じものでした(アクティブロー)。このピンは、ヘッダー J22-5 を介してスコープを設定できます。
TP 2、3、4、および5は、オシロスコープのプローブを接地するために使用されます。これはすべてEVKB評価ボードで行われました。
ここでは、テストの実行に関する注目すべき点をいくつか紹介します。
ブート可能なイメージは、3 つのケースすべてで RT1050 にフラッシュされました。その後、MCUXpresso で、デバッガーは "Attach Only" を true に設定して構成されました。次に、デバッグ セッションが起動され、プロセッサがコードの実行を終了した後、RT1050 リファレンス マニュアルの第 18 章「CCM ブロック図」に従って一時停止し、レジスタ値が読み取られました。
ブート構成: | コアクロック (MHz) * | FlexSPIクロック(MHz) | SEMCクロック(MHz) |
FlexSPI | 130 | 99 | |
SDRAMの | 396 | 130 | 99 |
SRAM | 396 | 130 | 99 |
*コア クロック速度は、クロック速度を 8 で割った出力として clko1 を構成することでも検証されています。この周波数はオシロスコープを使用して測定され、396MHzであることが確認されました。
チップ選択ピンまでの時間は、RT1050プロセッサから最初のフラッシュ読み取りが発生する瞬間を表します。GPIO 出力までの時間は、起動時間を表します。
予想通り、XiP Hyperflashは他のメモリよりも高速に起動します。SRAM メモリと SDRAM メモリは、実行可能メモリにコピーする必要がありますが、これには時間がかかり、起動が遅くなります。
以下のセクションでは、これらのテストがどのように実行されたか、およびHyperflash XiPが最速であると予想される理由について、より詳細に説明します。
以下は、Hyperflash XiPの起動プロセスがどのようになるかの手順の概要です。
MCUXpresso では、マップ ファイルには次のものが表示されていました。
オシロスコープの画像は次のとおりです。
プロセッサはROMから起動し、シリアルNORフラッシュメモリからSDRAMにアプリケーションイメージをコピーするように指示されます(シリアルNORフラッシュはハイパーフラッシュ通信を使用します)。RT フラッシュローダ ツールを使用すると、アプリケーションをフラッシュにロードして、メモリを SDRAM にコピーして実行するように設定できます。
SDRAM へのコピーは、コピー アクション全体を実行する必要があるため、Hyperflash からインプレースで実行するよりも遅くなることが予想されます。
SDRAM の起動プロセスは次のようになります。
MCUXpresso では、マップ ファイルには次のものが表示されていました。
このテストを実行するために、私は次の手順に従い ました: https://community.nxp.com/docs/DOC-340655.
SRAMについては、SDRAMと同様の処理が予想されます。プロセッサは最初に内部ROMから起動し、次にHyperflashに移動します。次に、Hyperflashから内部SRAM DTCメモリにすべてをコピーし、そこから実行します。
SRAM の起動プロセスは次のとおりです。
MCUXpresso では、マップ ファイルには次のものが表示されていました。
このドキュメントは、次の議論から作成されました: javascript:;