このドキュメントでは、SPIFIライブラリバージョン1.03をLPC4370で使用するプロジェクトの作成方法について説明します。このためには、次のツールが必要になります。
まず、必要なすべてのツールをダウンロードしてインストールします。
MCUXpressoのワークスペースに、LPC4370用のLPCOpen v2_12の (1) 3つのプロジェクト( periph_blinky、 lpc_board_nxp_lpclink2_4370 、 lpc_chip_43xx)をインポートします。LPCOpen zip ファイルは、PC の次のパスにあります: C:\nxp\MCUXpressoIDE_10.2.1_795\ide\Examples\LPCOpen (2)
lpclibspifi_lpcxpresso_1.03_68という名前のzipファイルを抽出します以前にダウンロードしたもの。必要なフォルダは spifilib_m4fです。このフォルダをLPC4370のワークスペースのプロジェクトエクスプローラーにドラッグアンドドロップし、[コピー]を選択した後、プロジェクトエクスプローラーに spifilib_m4f が表示されます。
SPIFI ライブラリを正しくインポートしたら、プロジェクト エクスプローラー ウィンドウでライブラリ (1) を選択し、ビルド (2) します。これを行うと、Debug という新しいフォルダが表示されます (3)。
次に、 periph_blinky 例のプロパティを編集して、ライブラリ spifilib_m4f をプロジェクトに追加する必要があります。これを行うには、プロジェクトを右クリックして[プロパティ]をクリックします。
プロパティウィンドウで、C/C++ビルド (1) > 設定 (2) > インクルード (MCU Cコンパイラのセクションの下) (3)をクリックします。
インクルードウィンドウで、[追加...] をクリックします。 (1) >ワークスペース (2) > spifilib_m4f (3) >inc (4) >フォルダ選択ウィンドウでOK (5) をクリックし>ディレクトリパスの追加ウィンドウでOK (6) をクリックします。
インクルードパスには次のように表示されます。
次に、MCUリンカのセクションにあるライブラリ (1) オプションに移動し、ライブラリ(-I)のセクションで[追加]をクリックします。 (2) 最後にライブラリの名前(spifilib_m4f)( 3) を書き、[OK ](4)をクリックします。
[ライブラリ検索パス](-L)セクションで、[追加]をクリックします...(1) >ワークスペース (2) > spifilib_m4f (3) > デバッグ (4) > OK (5)
下の画像に示すように表示されている場合は、問題ないので、[適用]をクリックして閉じます。
以下の手順が正しく行われたかどうかを確認するために、次の手順を実行しましょう。プロジェクトperiph_blinkyファイルsystick.c内spifilib_api.h ファイルを含めますそして、プロジェクトをコンパイルします。プロジェクトが問題なくコンパイルされた場合は、spifi ライブラリを正しくインポートしたことを意味します。問題が見つかった場合は、停止して、前述のすべての手順を繰り返してください。
ライブラリを正常に追加したので、以前にダウンロードしたLPC1830の例の移行を開始できます。まず、 lpcopen_2_12_lpcxpresso_ngx_xplorer_1830_SPIFI_v1.0 ファイルを解凍します。ファイルを解凍したら、次のパスに移動します: spifilib_blinky >例>src。Blinky.cという名前のファイルを開きますをクリックし、ファイルのすべての内容をコピーします。次に、プロジェクトperiph_blinky内のMCUXpressoのワークスペースにあるsystick.cファイルに移動し、このファイルのすべてのコンテンツを削除して、前にコピーしたものを貼り付けます。この時点でコンパイルしないと、複数のエラーが表示されます。
PC spifilib_blinky >src>パス の例に戻ります。spifi_setup.cというファイルをドラッグアンドドロップしますワークスペース上のプロジェクトperiph_blinkyのフォルダsrcに格納します。
ワークスペースにコピーしたばかりのファイルを開き、コードの46行目に移動します。ここでは、後でSPIFIに書き込むために使用する64KBのバッファを作成しています。__BSS(RAM3)は、このバッファをメモリのRAMブロック3に保存することです。ここでの問題は、LPC4370内のRAM3のブロックが64KBのバッファを格納するのに十分な大きさではないため(下の画像を参照)、バッファを格納するのに十分な大きさのRAMまたはRAM2のいずれかにこれを変更しましょう。
spifi_setupファイルを追加したので、systick.cに戻りましょう。ファイルを作成し、関数 spifiSetUp の外部宣言を追加します。この時点で、プロジェクトをコンパイルすると、問題は発生せず、使用していない関数と変数による警告が表示されるだけです。
私たちはほとんど終わっていますが、最も重要なことを見逃しています。このデモでは、SPIFIメモリの書き込み、削除、および読み取りを行うため、SPIFIフラッシュメモリから実行することはできません。これを作成するすべての機能をRAMメモリに移動する必要があります。これが、systick.cファイルでSPIFIと直接対話する関数はありませんが、これにより、SPIFIメモリと対話するすべての関数をRAMに移動する作業がはるかに簡単になります。関数 spifiSetUp は、SPIFI ですべてのテストを行う関数であり、 spifi_setup ファイルに含まれているため、このファイル全体を SPIFI ライブラリと共に RAM に移動する必要があります。
3つの異なるスクリプトを使用して、ライブラリとファイルspifi_setup RAMに移動します。これについての詳細は、次のコミュニティ投稿で学ぶことができます: https://community.nxp.com/thread/389110.まず、 プロジェクトのフォルダ>新しい>フォルダを右クリックし、フォルダの名前は linkscriptsである必要があります。
前述のコミュニティ投稿の「特定のオブジェクトをRAMに再配置する」および「特定のライブラリをRAMに再配置する」のセクションによると、この新しいフォルダに3つのファイルを作成する必要があります: main_text。ldt、main_rodata.ldt、および main_data.ldt。これを行うには、新しい>ファイル>フォルダlinkscriptsを右クリックします。
作成したばかりの3つのファイルに必要なコンテンツは次のとおりです。太字のテキストはファイルに含まれないでください、それは参照用です!
File main_data.ldt
*libspifilib_m4f.a:(.text*)
*libspifilib_m4f.a:(.rodata.rodata.* .constdata.constdata.*)
*spifi_setup.o(.text*)
*spifi_setup.o(.rodata .rodata.* .constdata.constdata.*)
. = ALIGN(${text_align});
*(.data*)
ファイル main_rodata.ldt
*(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).rodata)
*(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).rodata.*)
*(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).constdata)
*(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).constdata.*)
. = ALIGN(${text_align});
ファイル main_text.ldt
*(EXCLUDE_FILE(*libspifilib_m4f.a: *spifi_setup.o).text*)
3つのファイルを使い終えたら、デモは完了です。デバッグ中に関数spifiSetUpの内部に入る場合は、関数内にブレークポイントを設定する必要があることに言及することが重要です。
デバッグ中は、関数 spifiSetUp を呼び出す前に SPIFI フラッシュ メモリから実行し、関数に入ると RAM メモリから実行していることがわかります。
デモを正常に実行すると、ターミナルに次のように表示され、LED1が点滅します。
このガイドがお役に立てば幸いです。
よろしくお願いいたします
ビクター。