メインコンテンツまでスキップ

プロジェクトの作成/インポート

このセクションでは、Utilitiesプラグインのさまざまなオプションを試すために、VK-RA6E1 を使用してプロジェクトを作成する方法について説明します。VK (Voice Kit) ボードには、データ収集用のマイクが付属しています。理想的には、データを収集し、機械学習モデルをテストするために、さまざまなルネサスRA MCU/ボードにセンサーを接続する必要があります。

このサンプルプロジェクトは説明のみを目的としています。RAシリーズの他のボード/MCUでも同じ手順を再現できます。このユーザーマニュアルには、参照可能な完全にセットアップされたサンプルプロジェクトも付属しています。

新規プロジェクトの作成

  1. 上部ナビゲーションメニューで、File > New をクリックします。

  2. File > New に移動し、Renesas C/C++ Project を選択してから、Renesas RA を選択します。

  3. 新規プロジェクトウィザードウィンドウで、Renesas RA C/C++ Project を選択し、Next をクリックします。 New C/C++ Project

  4. プロジェクト名を指定して、Next をクリックします。

  5. BSPおよびFSPのインストール環境に一致する FSP バージョン(例:5.5.0)を選択し、接続するボードを設定します。以下の例では、AIK-RA6M3 を使用しています。Debuggerが JLink ARM に設定されていることを確認し、Next をクリックします。 Renesas RA C/C++ Project

  6. 次のウィンドウでは、ExecutableNo RTOS が選択されたままにします。Next をクリックします。

  7. 新しいプロジェクトが作成されると、e² Studio はルネサスRAプロジェクトの開発に最適化されたレイアウトに切り替わります。

    • FSP Configuration ペインの下部にある Stacks タブを選択します。 FSP Configuration
    1. New Stack メニューにアクセスし、Connectivity > I2C Communication Device (rm_comms_i2c) を選択します。 Properties タブを使用して、この新しいモジュールに対して以下のプロパティを設定します:

I2C Communication Device のプロパティ

NameSlave AddressCallback
g_comms_i2c_device10x68rm_icm42670_comms_i2c_callback

なぜ rm_comms_i2c なのか?

センサーで使用されるI2C通信インターフェースを実装するためのミドルウェアだからです。このモジュールは Communications Middleware Interface を実装しています。

特徴:

  • I2Cバスを介したデータの読み書き
  • I2Cバスへの書き込み後、リスタートして読み取り
  • 複数のデバイスで使用される単一のI2Cバス

設定 (Configurations)

rm_comms_i2c のビルド時設定 以下のビルド時設定は fsp_cfg/rm_comms_i2c_cfg.h で定義されています。

rm_comms_i2c のビルド時設定

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) / Enabled / DisabledDefault (BSP)選択した場合、パラメータチェック用のコードがビルドに含まれます。

Connectivity > I2C Shared Bus (rm_comms_i2c) の設定

このモジュールは New Stack > Connectivity > I2C Shared Bus (rm_comms_i2c) から追加できます。

I2C Shared Bus (rm_comms_i2c) の設定

ConfigurationOptionsDefaultDescription
Name有効なCシンボルである必要がありますg_comms_i2c_bus0モジュール名。
Bus Timeout非負整数 ≤ 0xFFFFFFFF0xFFFFFFFFRTOSでのバスロックのタイムアウトを設定します。
Semaphore for Blocking (RTOS only)Unuse / UseUseRTOSでのブロッキング用セマフォを設定します。
Recursive Mutex for Bus (RTOS only)Unuse / UseUseRTOSでのバスロック用ミューテックスを設定します。
Channel手動入力0IICチャンネル
RateStandard / Fast-mode / Fast-mode plusStandard下位レベルドライバの転送レート。

Connectivity > I2C Communication Device (rm_comms_i2c) の設定

このモジュールは New Stack > Connectivity > I2C Communication Device (rm_comms_i2c) から追加できます。

I2C Communication Device (rm_comms_i2c) の設定

ConfigurationOptionsDefaultDescription
Name有効なCシンボルg_comms_i2c_device0モジュール名。
Semaphore Timeout (RTOS only)整数 ≤ 0xFFFFFFFF0xFFFFFFFFRTOSでのブロッキングのタイムアウトを設定します。
Slave Address非負整数0x00スレーブアドレスを指定します。
Address Mode7-Bit / 10-Bit7-BitI2Cアドレスモードを選択します。
Callback有効なCシンボルcomms_i2c_callbackユーザーコールバック関数。

ピン設定: このモジュールは、I2C Master、SCI I2C、IICA Master、および SAU I2C の SDA ピンと SCL ピンを使用します。


  1. I2C Communication Device モジュールの g_comms_i2c_bus1 I2C Shared Bus (rm_comms_i2c) で、Properties タブを使用して以下を設定します:

g_comms_i2c_bus1 のプロパティ

NameValue
Nameg_comms_i2c_bus1
Channel1
RateFast-mode

I2C Communication Device

  1. I2C Communications Peripherals の追加

I2C Communication Device モジュールで、スタックアイコンをクリックして Add I2C Communications peripherals を選択し、New をクリックして I2C Master (r_iic_master) を選択します。

Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。

I2C Master のプロパティ

PropertyValue
Common > DTC on Transmission and ReceptionEnabled
Nameg_i2c_master1
Interrupt priority12
Timeout ModeShort Mode
  1. 送信用の DTC Driver の追加 (オプション)

I2C Communication Device モジュールで、Add DTC Driver for Transmission [optional]スタックアイコン をクリックし、New をクリックして Transfer (r_dtc) を選択します。

  1. 再度 New Stack メニューにアクセスし、Input > External IRQ (r_icu) を選択します。

Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。

External IRQ のプロパティ

PropertyValue
Nameg_external_irq6_pmod1
Channel6
TriggerRising
Pin Interrupt PriorityPriority 12

注意: Channel6 に変更すると、ピン IRQ06P000 に更新されるはずです。

再度 New Stack メニューにアクセスし、AI > Data Shipper (rm_rai_data_shipper) を追加します。

なぜ rm_rai_data_shipper なのか?

これは、Reality AI アプリケーション用の Data Shipper を実装するためのミドルウェアです。 このモジュールは Data Shipper Interface を実装しています。

概要

RAI Data Shipper は主に、RAI Data Collector によって収集されたデータをPCに送信し、Reality AI モデルのトレーニングに使用できるようにするためのものです。 これは Communications Middleware Interface を利用しており、すべての通信は 完全に非同期 です。

転送されるデータは、以下の任意の組み合わせになります:

  • センサーデータ
  • システムイベント/エラー
  • デバッグデータおよび診断情報(RAIランタイム出力を含む)

センサーデータは、データ準備完了コールバック (data ready callback) を介して Data Collector インスタンス から提供されます。 システムイベントとデバッグデータはアプリケーションによって準備されます。 通信が終了したことをアプリケーションに通知するためにコールバックが使用されます。 センサーデータバッファが使用されない場合は、解放する必要があります。 データ送信中にエラーが発生した場合、エラーフラグが設定されます。

特徴

  1. 最大 8つの Data Collector インスタンス をサポートします。
  2. 以下のインターフェースをサポートします:
    • RM_COMMS_UART (CRC-8 あり/なし)
    • RM_COMMS_USB_PCDC (CRC-8 あり/なし)

設定 (Configurations)

fsp_cfg/rm_rai_data_shipper_cfg.h で定義されています。

rm_rai_data_shipper のビルド時設定

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) | Enabled | DisabledDefault (BSP)選択した場合、パラメータチェック用のコードがビルドに含まれます。
Max Number Of DC Instances正の整数 (1–8)8送信するDCインスタンスの最大数。

AI > Data Shipper (rm_rai_data_shipper) の設定

このモジュールは Stacks タブから New Stack > AI > Data Shipper (rm_rai_data_shipper) を介して追加できます。

AI > Data Shipper の設定

ConfigurationOptionsDefaultDescription
Name有効なCシンボルg_rai_data_shipper0モジュール名
Frame Rate Divider非負の値0書き込み要求をスキップする頻度
Callback有効なCシンボルrai_data_shipper0_callbackデータ送信時またはエラー時のユーザーコールバック関数

クロック設定 (Clock Configuration)

このモジュールには 必須のクロック設定はありません

ピン設定 (Pin Configuration)

このモジュールはI/Oピンを 使用しません

制限事項

  1. 双方向通信は サポートされていません — データは常にデバイスからホストへ送信されます。
  2. ユーザーは、複数の Data Collector インスタンスを使用する場合、競合状態を回避する必要があります。
  3. RM_COMMS_USB_PCDCFull Speed モード および DMA で使用する場合、8ビットチャンネルが使用されるときは、フレームバッファ長は2の倍数である必要があります。
  4. RM_COMMS_USB_PCDCHigh Speed モード および DMA で使用する場合:
    • 16ビットチャンネルの場合、フレームバッファ長は2の倍数である必要があります。
    • 8ビットチャンネルの場合、フレームバッファ長は4の倍数である必要があります。
  5. RAI Data Collector (スナップショットモード)RM_COMMS_USB_PCDC は異なるタイマーを使用する必要があります — これらは独立して動作します。

  1. g_rai_data_collector0 へのアクセス

Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。

Data Collector (g_rai_data_collector0) のプロパティ

PropertyValue
General > Frame Buffer Length512
Data Feed Mode > Channels3
Data Feed Mode > Channels 0–2チャンネル0、1、2のData Typeを Single Float に設定

なぜ g_rai_data_collector なのか?

Reality AI アプリケーション用の Data Collector を実装するためのミドルウェアだからです。このモジュールは Data Collector Interface を実装しています。

概要

Data Collector は、データサンプルがアプリケーションで利用可能になる前に固定長フレームに蓄積されるように、センサーからのデータ収集を抽象化します。バックグラウンドおよび協調的なデータ収集に対応するには、スナップショットモードデータフィードモード のサポートが必要です。各モードは最大 8つのセンサーチャンネル をサポートします。各センサーチャンネルは、個別のフレームバッファにキャプチャされます。フレームバッファは同じ量のデータサンプルを持つ必要がありますが、データ型は異なる場合があります (int32_t, float, uint8_t など)。ユーザーは、フレームバッファが同じレートで満たされるようにする必要があります。

すべてのフレームバッファが満たされると、データ準備完了コールバック (data ready callback) を介してアプリケーションに提供されます。それらが消費された後、アプリケーションは RM_RAI_DATA_COLLECTOR_BufferRelease() を呼び出してそれらを解放する必要があります。シームレスな操作のために、PING-PONG バッファが使用されます。理想的には、もう一方のバッファセットが満たされる前にバッファが解放されます。ただし、アプリケーションがデータの処理に時間がかかりすぎると、フレームバッファオーバーランが発生する可能性があります。これが発生した場合、アプリケーションはエラーコールバックを介して バッファオーバーラン (buffer-overrun) イベントで通知されます。ユーザーの介入は必要ありません。フレームバッファが解放されると、バッファオーバーランは解消されます。すべてのセンサーチャンネルが同じペースで動作するように構成されていない場合、アプリケーションは バッファ非同期 (buffer-out-of-sync) エラーを受け取ります。ユーザーはセンサーチャンネルを再構成し、すべてのチャンネルが同じペースで動作することを確認する必要があります。センサーチャンネルが同じレートで動作できない場合は、複数の Data Collector インスタンスが必要です。

特徴

  • スナップショットモードとデータフィードモードがサポートされています。
  • 各モードで最大8つのセンサーがサポートされています。
  • ミックスモードがサポートされています(スナップショットとデータフィードの両方が有効)。

スナップショットモード (Snapshot Mode)

スナップショットモードは、ユーザー指定のソースから定期的にデータをプルし、指定されたフレームバッファに保存します。これには DTC モジュールと タイマー モジュールが必要です。DTCはチェーンモードで動作し、非線形でサイズの異なる可能性のあるさまざまなソースからのデータ収集を可能にします。タイマー(GPTまたは非同期汎用タイマー)は、DTCを定期的に動作させるための起動ソースを提供します。この起動ソースを選択するには、タイマーモジュールで関連する割り込みを設定する必要があります。アプリケーションは、センサーソースアドレスが登録された後、タイマーを開始してDTCを有効にする必要があります。

データフィードモード (Data Feed Mode)

データフィードモードでは、データの準備ができるたびに、データプロデューサーが指定されたフレームバッファにデータを直接プッシュする必要があります。データは同期的または非同期的にプッシュできます。

  • 同期モード: フレームバッファへの短いデータコピー用。
  • 非同期モード: データ転送にDTC/DMACを使用します。アプリケーションはDTC/DMACモジュールを追加し、非同期転送用の転送記述子を初期化する必要があります。

使用上の注意

  1. データフィードモードの Data Collector インスタンスには、DTCスタックとタイマースタックを追加 しないでください
  2. ユーザーは、Data Collector インスタンスのすべてのチャンネルが同じペースで動作することを確認する必要があります。
  3. Data Collector インスタンス内のタイマースタックの割り込み優先レベルは、RM COMMS USB PCDC GPT Overflow 割り込みよりも高く(数値的に低く)なければなりません。

設定 (Configurations)

fsp_cfg/rm_rai_data_collector_cfg.h で定義されています。

rm_rai_data_collector のビルド時設定

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) / Enabled / DisabledDefault (BSP)選択した場合、パラメータチェック用のコードがビルドに含まれます。
Max Number Of Channels正の整数 ≤ 1616チャンネルの最大数。

AI > Data Collector (rm_rai_data_collector) の設定

New Stack > AI > Data Collector (rm_rai_data_collector) から追加します。

AI > Data Collector の設定

CategorySetting / FieldOptions / ConstraintsDefault ValueDescription
GeneralName有効なCシンボルである必要ありg_rai_data_collector0モジュール名
GeneralID正の整数0インスタンスID
GeneralFrame Buffer Length正の整数 > 0100データサンプル単位のフレームバッファ長
GeneralData Ready Callback有効なCシンボルである必要ありrai_data_collector0_callbackデータ準備完了時のコールバック関数
GeneralError Callback有効なCシンボルである必要ありrai_data_collector0_error_callbackエラーイベント用のコールバック関数
Data FeedChannel 0 Name有効なC変数名dc0_data_feed_ch0チャンネル名
Data FeedChannel 0 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 1 Name有効なC変数名dc0_data_feed_ch1チャンネル名
Data FeedChannel 1 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 2 Name有効なC変数名dc0_data_feed_ch2チャンネル名
Data FeedChannel 2 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 3 Name有効なC変数名dc0_data_feed_ch3チャンネル名
Data FeedChannel 3 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 4 Name有効なC変数名dc0_data_feed_ch4チャンネル名
Data FeedChannel 4 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 5 Name有効なC変数名dc0_data_feed_ch5チャンネル名
Data FeedChannel 5 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 6 Name有効なC変数名dc0_data_feed_ch6チャンネル名
Data FeedChannel 6 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannel 7 Name有効なC変数名dc0_data_feed_ch7チャンネル名
Data FeedChannel 7 Data TypeMCU固有のオプションチャンネルデータ型
Data FeedChannels (count)0〜8の整数0データフィードモードのチャンネル数
SnapshotSnapshot Channel 0 Name有効なC変数名dc0_snapshot_ch0チャンネル名
SnapshotSnapshot Channel 0 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 1 Name有効なC変数名dc0_snapshot_ch1チャンネル名
SnapshotSnapshot Channel 1 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 2 Name有効なC変数名dc0_snapshot_ch2チャンネル名
SnapshotSnapshot Channel 2 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 3 Name有効なC変数名dc0_snapshot_ch3チャンネル名
SnapshotSnapshot Channel 3 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 4 Name有効なC変数名dc0_snapshot_ch4チャンネル名
SnapshotSnapshot Channel 4 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 5 Name有効なC変数名dc0_snapshot_ch5チャンネル名
SnapshotSnapshot Channel 5 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 6 Name有効なC変数名dc0_snapshot_ch6チャンネル名
SnapshotSnapshot Channel 6 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotSnapshot Channel 7 Name有効なC変数名dc0_snapshot_ch7チャンネル名
SnapshotSnapshot Channel 7 Data TypeMCU固有のオプションチャンネルデータ型
SnapshotChannels (count)0〜8の整数0スナップショットモードのチャンネル数
SnapshotDTC Transfer Count正の整数 > 01各アクティベーション時のDTC転送カウント
Clock Configこのモジュールには必須のクロック設定はありません
Pin ConfigこのモジュールはI/Oピンを使用しません

  1. COMMS Driver — USB PCDC (rm_comms_usb_pcdc) の追加

Data Shipper モジュールの下で:

  1. Add COMMS Driver をクリックします。
  2. New → USB PCDC Communication Device (rm_comms_usb_pcdc) をクリックします。

Add COMMS Driver

概要 USB_PCDC上の汎用通信インターフェースを実装するためのミドルウェアです。このモジュールは Communications Middleware Interface を実装しています。

特徴

  • ベアメタル用のノンブロッキングAPI。
  • RTOS用のノンブロッキングおよびブロッキングAPI。

  1. g_timer0 Timer (General PWM - r_gpt) の設定

Timer g_timer0 のプロパティ

PropertyValue
General > Period500
General > Period UnitMicroseconds
Interrupts > Overflow/Crest Interrupt PriorityPriority 12

なぜ r_gpt なのか?

RA MCU上のGPT32およびGPT16ペリフェラル用のドライバだからです。このモジュールは Timer Interface を実装しています。


概要

GPTモジュールは、イベントのカウント、外部入力信号の測定、定期的な割り込みの生成、またはGTIOCピンへの定期的またはPWM信号の出力に使用できます。

このモジュールは、GPTペリフェラル GPT32EH, GPT32E, GPT32, および GPT16 をサポートします。 GPT16 は16ビットタイマーです。他のペリフェラル(GPT32EH, GPT32E, および GPT32)は32ビットタイマーです。APIの観点からは、32ビットタイマーはすべてこのモジュールで同じように扱われます。


特徴

  • 周期モード、ワンショットモード、PWMモードをサポート。
  • PCLK、GTETRGピン、GTIOCピン、またはELCイベントのカウントソースをサポート。
  • GTIOCピンのデバウンスフィルタをサポート。
  • 信号をピンに出力可能。
  • 設定可能な周期(タイマーサイクルあたりのカウント数)。
  • PWMモードでの設定可能なデューティサイクル。
  • 周期のランタイム再設定をサポート。
  • PWMモードでのデューティサイクルのランタイム再設定をサポート。
  • コンペアマッチ値のランタイム再設定をサポート。
  • カウンタの開始、停止、リセットを行うAPIを提供。
  • 現在の周期、ソースクロック周波数、カウント方向を取得するAPIを提供。
  • 現在のタイマーステータスとカウンタ値を取得するAPIを提供。
  • GTETRGピン、GTIOCピン、またはELCイベントからの外部ソースによる開始、停止、クリア、カウントアップ、カウントダウン、およびキャプチャをサポート。
  • 対称および非対称PWM波形生成をサポート。
  • ワンショット同期パルス波形生成をサポート。
  • デッドタイムの自動付加をサポート。
  • コンペアマッチ値でADCスキャンを開始するためのELCイベント生成(Event Link Controller (r_elc) を参照)およびコンペアマッチ値の更新をサポート。
  • POEGチャンネルとのリンクをサポートし、エラー状態が検出されたときにGPT出力を自動的に無効化。
  • タイマー停止中のカウンタ値設定をサポート。
  • 出力ピンの有効化と無効化をサポート。
  • 一度に最大7つのオーバーフロー/アンダーフロー(山/谷)割り込みのスキップをサポート。
  • 各コンペアマッチおよびサイクル終了時のピンの出力レベルを設定することにより、カスタムPWM波形の生成をサポート。

  1. r_usb_basic の設定

r_usb_basic のプロパティ

PropertyValue
Module > USBFS Interrupt PriorityPriority 10
Module > USBFS Resume PriorityPriority 10
Module > USBFS D0FIFO Interrupt PriorityPriority 10
Module > USBFS D1FIFO Interrupt PriorityPriority 10

  1. g_timeout_timer2 Timer (General PWM - r_gpt) の設定

Timer g_timeout_timer2 のプロパティ

PropertyValue
General > Nameg_timeout_timer2
General > Channel2
General > ModeOne-Shot
General > Period250
General > Period UnitMillisecond
Interrupts > Callbackgpt_timeout_callback
Interrupts > Overflow/Crest Interrupt PriorityPriority 13

  1. g_led_timer1 Timer (General PWM - r_gpt) の設定

Timer g_led_timer1 のプロパティ

PropertyValue
General > Nameg_led_timer1
General > Channel1
General > ModePeriodic
General > Period250
General > Period UnitMillisecond
Interrupts > Callbackrai_led_timer_callback
Interrupts > Overflow/Crest Interrupt PriorityPriority 15

  1. RA Configuration の適用

このセクションの RA Configuration は完了です。Configuratorウィンドウの右上にある Generate Project Content ボタンをクリックして、変更をプロジェクトソースに適用します。

Proceed with save and generate というプロンプトが表示されたら、Always save and generate without asking の横にあるボックスにチェックを入れ、Proceed をクリックします。

Generate Project Content


  1. コードの生成

FSP Configurator は必要なすべてのドライバを抽出し、Properties タブで提供された設定に基づいてコードを生成します。 これで、必要な Reality AI Model ファイルを追加し、プロジェクトを実行してモデルをテストし、データを収集できます。


既存プロジェクトのインポート

このオプションを使用して、既存のプロジェクト(このドキュメントで提供されているサンプルプロジェクトを含む)を読み込みます。

  1. 上部ナビゲーションメニューで、File > Import をクリックします。

Import Project

  1. Import ダイアログボックスで、General > Existing Projects into Workspace を選択します。

Select Existing Projects into Workspace

  1. Select root directory をクリックし、Browse をクリックしてプロジェクトの場所に移動します。

Select root directory

  1. 必要なプロジェクトを選択し、Finish をクリックします。