Renesas Synergy™

FAQ 2000003 : SynergyプラットフォームにC++でプロジェクトを作成する方法は?

このガイドでは、SynergyプラットフォームにC++でプロジェクトを作成するための手順を説明します。
このガイド内容をマスターすることで、C++コンテンツをSynergyプラットフォームプロジェクトに追加することが可能になります。

Synergyプロジェクトを作成する
まず初めに、Synergyプロジェクトの作成と設定を開始します。
プロジェクトに対して要求する設定を行った後、下図に示すように「Build Artifact」を「Static Library」に変更します。

次いで、プロジェクトを再びビルドします。その結果、下図に示すとおり、現在のビルド設定で出力ディレクトリにスタチックライブラリがビルドされます(下図の場合は、デバッグ出力ディレクトリ内にlibS7_DK_GCC_SSP_LIBRARY.a)。

C++に対応するプロジェクトを作成する
さて、さらにC++に対応したISDEプロジェクトを作成し、設定した最初のプロジェクトからSSPをスタチックライブラリとして組み込む準備をします。

プロジェクトを新規作成するには、File -> New Projectと進み、次いで下図に示すとおりC/C++ -> C++ Projectを順に選択します。

その後、Nextをクリックし、C++プロジェクトをExecutable -> Hello World GNU ARM Embeddedの順に選択して、ご希望のプロジェクト名を入力します。

次いでNextをクリックし(本画面では何も変更する必要なし)、再度Nextをクリックします。

最後に、Finishをクリックします。

ここで、作成したばかりのプロジェクトのプロパティに進みます。
ウィンドウを最大化して「Tool settings」を選択した後、1) ARM Familyを「cortex-M4」に、2) Float ABIを「FP instructions (Hard)」に、3) FPU Typeを「fpv4-sp-d16」にそれぞれ変更します。これらの設定は、SSPライブラリプロジェクトの設定と一致しています。

Cross ARM C++ Linker -> Generalと選択し、事前に生成したSSPプロジェクトからリンカスクリプトを組み込みます。

さらに、Cross ARM C++ Linker -> Librariesセクションを選択し、スタチックSSPライブラリとライブラリのパスにリファレンスを組み込みます。

次いで、Cross ARM GNU Assemblerにインクルードパスを組み込みます。

Cross ARM C Compiler -> Includesについても対応する必要があります。

Cross ARM C++ Compiler -> Includesに追加します。

これらのインクルードパスは、元のSSPプロジェクトが参照したものです。

次いで、OKをクリックしてからFinishをクリックします。

プロジェクトウィザードがsrc\main.cppにファイルを作成しますので、削除されることを推奨します。

このファイルをsrcディレクトリに追加します。これは、GCCツールチェーンライブラリからStatic Constructorを呼び出します。

else if (BSP_WARM_START_POST_C == event)
{

/* Static Constructor */
__libc_init_array();
}


さらに、C++環境を正しくセットアップする必要があります。

最終的に、SSPで作成したスレッドのユーザコードのファイルを追加できます。
たとえば、「new_thread」と呼ばれるスレッドを最初のプロジェクトでSSPに追加した場合は、プロジェクトのsrc\ディレクトリにある.cppファイルをC++プロジェクトに追加し、少なくともSSPで作成したスレッドへのユーザエントリ関数を持たせる必要があります。すなわち、src\new_thread_entry.cppというファイルと、そのファイル内の基本的な要求コードは以下のようになります。

#ifdef __cplusplus
extern "C" {
#endif
#include "new_thread.h"
#include <stdio.h>
void new_thread_entry(void);
#ifdef __cplusplus
}
#endif
void new_thread_entry(void)
{
while(1)
{
tx_thread_sleep(1);
}
}


要求に応じて、最初のプロジェクトのSSPコンフィギュレーションに追加したすべてのスレッドにファイルを追加します。以上で、要求に応じてC++プロジェクトのスレッドにコードを追加できるようになります。


重要事項:予想外のエラーが発生し、ダブルチェックによってエントリがすべて正常であることが確認された場合は、エラーを取り除くためにリンカライブラリのインクルードファイルの順序を調整する必要があります。
また、お客様ご自身が実際にコードを書き、確認されることをお奨めします。

 

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア
他にご質問がございましたら、リクエストを送信してください