最近、ある顧客からPEで生成されたTSIコードをIARに移行する方法について質問がありました。従来の方法では、ヘッダーファイルとライブラリファイルを1つずつインクルードするのは非常に面倒なので、関連操作について調査しました。IARの初期バージョンでは、ユーザーはチップ名、リンクファイル、インクルードパス情報を手動で追加する必要がありました。特に、PEでコンポーネントを追加または削除した後は、対応するファイルを追加または削除する必要があり、難易度が増していました。最新バージョンのIAR 6.7では、PEプロジェクトのリンクメカニズムが統合されています。PEプロジェクトのXMLファイルを簡単に読み取ることができるため、 PEで生成されたコードをIAR Embedded Workbenchに移行できます。IARの初期バージョンと比較して、主なタスクは次のとおりです。
IARはいくつかの面倒な作業を完了しましたが、インターネット上で参照できるリソースはそれほど多くありません。初めて使用する場合は、まだある程度の調査が必要です。皆様の時間を節約するために、以下に具体的な例を示し、PEプロジェクトをIARに統合する方法を段階的に紹介します。
1. Processor Expertソフトウェアを開き、新しいPEプロジェクトを作成し、生成されたコードを保存します。この手順は比較的簡単なので、ここでは説明しません。IARで使用する手順に焦点を当てます。
2. IAR Workbench で「新しいプロジェクトの作成」を選択して、新しい空のプロジェクトを作成します。
3. 新しく作成したプロジェクトファイルをPEプロジェクトのフォルダに保存します。ここで他のパスを選択することもできますが、簡素化とメンテナンスの容易さの観点から、PEプロジェクトに直接保存することをお勧めします。
4. 「ツール」->「オプション」->「プロジェクトオプション」を開き、「プロジェクト接続を有効にする」にチェックを入れます。このオプションの目的は、Freescale Processor ExpertやInfineon DAVEなどのサードパーティ製ツールによって生成された.XMLファイルをIARが読み取れるようにすることです。
5. PE プロジェクトの XML ファイルを追加し、[プロジェクト] -> [プロジェクト接続の追加] を選択すると、リンク選択ダイアログボックスがポップアップ表示されるので、 [Freescale Processor Expert] を選択します。デフォルトは [IAR プロジェクト接続] です。
6. [OK] をクリックした後、PE プロジェクトの作成時に生成されたプロジェクト記述子ファイルProjectinfo.xml を選択します。
7. 上記の手順を完了すると、IARでは以下の3つのタスクが自動的に完了します。PEによって生成されたファイルをIARに自動的にロードし、 LCFリンク設定ファイルを自動的にインストールし、ヘッダーファイルパスを自動的にインクルードします。これらの手順は、以前のバージョンのIARでは手動で追加する必要があり、PEでコードを再生成する際には、対応するファイルを再度追加する必要があります。
8. 上記の手順を完了したら、実際の状況に合わせてダウンローダー/デバッガーを設定する必要があります。「プロジェクト」->「オプション」->「デバッガー」->「セットアップ」を選択し、ドライバーをダウンロードします。実験ではKL25 FRDMボードを使用するため、「PEマクロ」で「OpenSDA」を選択し、「OK」をクリックして設定を完了します。
9. プロジェクトをコンパイルし、デバッグをダウンロードします。
要約すると、主に次の 2 つのタスクが完了します: (1) プロジェクト接続を構成して有効にし、PE によって生成された XML ファイルをインポートします。 (2) デバッガー エミュレーターを構成します。
問題は次のように回答できます。
"Libraries(-l)" にライブラリを追加すると、gcc リンカはこれが gcc ライブラリであることを知っていたため、'lib' プレフィックスと '.a' サフィックスを追加する必要はありません。
しかし、"Miscellaneous"にライブラリを追加すると、ファイルが 'lib'プレフィックスと '.a'サフィックスがない場合、gccリンカはそれをgccライブラリとは見なしません。
.xml 構成ファイルを確認すると、上記のライブラリ パスはプロジェクト フォルダーの下にあります。Containing Folderコマンドで開かれるパスはプロジェクトが配置されているパスでもありますが、ライブラリのパスではなく、その親パスです。これは認識されないはずです。
ご指摘いただいたオプション( atuoランタイムライブラリの選択)を確認しましたが、それでも動作しませんでした。ただし、オプションの「追加ライブラリ」にライブラリパスを追加したら、動作するようになりました。
2つ目の方法は、上で述べた方法です。リンクを解除した後、自分でライブラリを追加します。自動で追加されたライブラリは引用符で囲まれているのに、自分で追加したライブラリは引用符で囲まれていないことに気づきました。これはどういう意味でしょうか?
以下はXMLのパスフラグメントです。パスには中国語は含まれていません。
パス名を確認する必要があります デフォルトのパスはTSSのインストールディレクトリ内です。さらに、 IARのリンカー設定項目のライブラリオプション設定を確認し、ランタイムライブラリの選択を有効にする必要があります。
こんにちは!
記事に従ってPEを使ってTSSライブラリに関するプロジェクトをビルドしました。IARを使ってファイルをコンパイルしたところ、エラーが発生しました。
Error[Li005]: no definition for "TSS_Init" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]
Error[Li005]: no definition for "TSS_SetKeypadConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]
Error[Li005]: no definition for "TSS_SetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o]
Error[Li005]: no definition for "TSS_GetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS_SensorTSI.o]
Error while running Linker
エラーの原因は
上記のパスは IAR では無効なパスとして認識され、ライブラリ内の関数を参照できなくなります。
IARにファイルをロードした後、ご指摘の4番目のステップでプロジェクトリンクを解除し(「ツール」->「オプション」->「プロジェクト」オプションを開き、「プロジェクト接続を有効にする」にチェックを入れます)、IARプロジェクトに含まれるTSS_KXX_M4.aファイルを削除して、ファイルを再ロードしました。この時、コンパイルは成功しました。
これをどうすればよいのでしょうか?
私はIAR6.7.1、PE10.3を使用しています