Help us understand the problem. What is going on with this article?

fvIOサンプルプログラムの実行手順(開発環境のインストール~実行まで)

fvIO(functions-virtualized Input/OutPut)と呼ばれる、いろんなセンサを高帯域で同期制御できる技術が利用できるようになったので、とりあえず開発環境の構築からサンプルプログラム動作までの手順をメモっときます。

1.用意するモノ

ターゲットボード

以下のボードを組み合わせたスタックボードを使用。
- SEMB1401(IoT-Engine RZ/T1)
- SEMB1311(IoT-Engine RZ/T1ベースボード)
- SEMB1311-1(Grove拡張ボード)

センサ

デバッグツール

開発環境(アカウント登録が必要)

サンプルプログラム

2.開発環境のインストール

手間が増えるので、先にARMツールチェーンからインストールしときます。

ARMツールチェーンのインストール

gcc-renesas.comから取得したインストーラを実行し、「Default」設定でインストール。

gnu_inst1.jpg

e2studioのインストール

ルネサスエレクトロ二クスのHPから取得したインストーラを使う。
このとき、以下のように「デバイス・ファミリー」の設定でRZデバイスサポートにチェックを入れて、
e2_inst3.jpg

e2studioを日本語で使えるように「追加コンポーネント」で日本語言語パックにチェックを入れます。他はデフォルト設定でOK。

e2_inst4.jpg

インストール後、初めてe2studioを起動する時にツールチェーン登録画面が出るので登録する。(ツールチェーンの登録はARMツールチェーンをインストールした後でしかできないので注意)

e2_inst11.jpg

3.サンプルプログラムのマージ

各サンプルプログラムを解凍し、「an-r01an2554jj0141-rzt1-initial-settings」をベースにして以下のようにファイルを追加する。(「RZ_T_ram_sample」も同様)

★:fvio_rzt1_i2c_cmnから取得
◎:an-r01an3569jj0200-rzt1-encoderから取得

RZ_T_sflash_sample/
    ┣inc/
    ┃ ┗◎r_ecl_rzt1_if.h
    ┃
    ┣★lib/
    ┃ ┗ ★ecl/
    ┃   ┣ ◎r_ecl_rzt1.a
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_0.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_1.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_2.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_3.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_4.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_5.dat
    ┃   ┣ ★s_fvIO_rzt1_comn_i2c_6.dat
    ┃   ┗ ★s_fvIO_rzt1_comn_i2c_7.dat
    ┗src/
      ┣★fvio/
      ┃ ┣ ★dev_driver/
      ┃ ┃ ┣ ★adxl345/
      ┃ ┃ ┃    ┣★fvIO_rzt1_i2c_adxl345.c
      ┃ ┃ ┃    ┗★fvIO_rzt1_i2c_adxl345.h
      ┃ ┃ ┗ ★ssd1306/
      ┃ ┃      ┣★fvIO_rzt1_i2c_ssd1306.c
      ┃ ┃      ┗★fvIO_rzt1_i2c_ssd1306!
      ┃ ┣ ★fvio_driver/
      ┃ ┃ ┣ ★fvIO_cmn_if.h
      ┃ ┃ ┣ ★fvIO_rzt1_dma.c
      ┃ ┃ ┣ ★fvIO_rzt1_dma.h
      ┃ ┃ ┣ ★fvIO_rzt1_i2c_cmn.c
      ┃ ┃ ┣ ★fvIO_rzt1_i2c_cmn.h
      ┃ ┃ ┗ ★fvIO_dat.asm
      ┃ ┃
      ┃ ┗ ★fvio_if/
      ┃ ┣ ★fvIO_if.c
      ┃ ┗ ★fvIO_if.h
      ┃
      ┗sample/
        ┗ ★main.c

4.サンプルプログラムの修正

src/common/sflash_boot/spibsc_ioset_userdef.cを以下のように修正する。
(「RZ_T_ram_sample」の場合は不要)

修正前:

#define SPIBSC_BUS_WITDH    (4)
#define SPIBSC_OUTPUT_ADDR  (SPIBSC_OUTPUT_ADDR_32)

修正後:

#define SPIBSC_BUS_WITDH    (1)
#define SPIBSC_OUTPUT_ADDR  (SPIBSC_OUTPUT_ADDR_24)

ビルド

サンプルプログラムのマージ後、e2studioを開きプロジェクトのプロパティを以下のように修正してからビルドを実行する。

(1)Target Processor

set_target.jpg

(2)Cross ARM C Compiler/Includes

add_include.jpg

(3)Cross ARM C Linker/Other

add_lib.jpg

5.サンプルプログラムの書き込み

ターゲットボードとデバッガを以下のように接続し、e2studioのデバッグボタンから書き込みを実行。
cnct_diag.jpg

書き込み後、[デバッグ]パースペクティブで命令ポインタがmainの中で停止していれば書き込み成功。
write_ok.jpg

このとき、以下のような画面が表示されたら、再度書き込みを行う。
write_ng.jpg

6.サンプルプログラム実行

スタックボードのスロット0に加速度センサ、スロット1にディスプレイを接続して電源を入れると、
sensor_cnct_diag.jpg

加速度センサのX軸の情報がディスプレイに出力されます。

sample_run.jpg

このサンプルプログラムで、加速度センサとは約1.67[MHz]、ディスプレイとは約0.71[MHz]まで通信できました。
サンプリングレートに換算すると、加速度センサは16796[サンプル/s]、ディスプレイは51[フレーム/s]という驚異的なレートになります。

動作の様子は下記のyoutubeで。
(動画では、加速度センサは1933[サンプル/s]、ディスプレイは17[フレーム/s]で動いてます)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away