メインコンテンツまでスキップ
Knowledgebase
Home
Renesas Electronics Japan - Knowledgebase

Synergy上でスレッド_Thread形式のBlinkyを実行する方法

最終更新日:2017/07/05

Question:

Synergyプラットフォーム上でスレッド(Thread)形式のBlinkyを実行する方法は?

Answer:

このガイドでは、単純なスレッド処理を用いてBlinkyデザインを作成する(お客様のボード上でLEDを点滅させる)方法をご紹介します。
このガイドでは、ツールフロー内の共通する複数のアクションについて簡単に説明しています。
このガイドでは、お客様がe2 studioの各種操作についてある程度精通していることを前提としています。随時、e2 studioにお戻りになり、非スレッド形式のサンプルデザインをご参照ください。そこではすべてのステップを段階的に、ご説明しています。

初期設定
まずハードウェア内でBlinkyが動作しているかどうか確認するため、Synergy開発ツールとSSPをPCにインストールし、Synergyのターゲットボードを利用できるようにする必要があります。
そうでない場合は、以下に示すSynergy Knowledge BaseのGetting Started Howへのリンクに従います。

<Getting Started with the Synergy Platform>


プロジェクトを作成する
上記の手順を完了させれば、Synergyプラットフォームのツールフローを実行させ、非スレッド形式のBlinkyバージョンをターゲットボード上で動作させることができるようになります。
以上で、スレッドバージョンに対応する準備は完了です。

1.e2 studioを開いて、Synergyプロジェクトを新規作成します(必要に応じて上記の手引きを再度ご参照ください)。
2.ボードをターゲットにして、Thread-Xオプションを備えたBSPを選択します。
3.これで新しいBlinkyコードを追加する準備は完了です。

スレッド形式のBlinkyコードを追加する
この手順では、スレッドバージョンのBlinkyを実装するためのコードを追加します。

1.ConfigurationウィンドウのThreadsタブを開きます。
2.Newをクリックして、New Threadを立ち上げます。
3.Generate Project Contentボタンを押します。
4.new_thread_entry.cファイルを確認します。
5.new_thread_entry.cを開いて、1行目のコメントより下のコードをすべて、以下のコードに変更します。

#include <stdio.h>
#include "new_thread.h"
#include "r_ioport.h"
bsp_leds_t Leds;
void new_thread_entry(void) {
/* Get LED information for this board */
R_BSP_LedsGet(&Leds);
/* If this board has no LEDs then trap here */
if (!Leds.led_count)
{
while(1); // There are no LEDs on this board
}
ioport_level_t level = IOPORT_LEVEL_HIGH;
while (1) {
/* Toggle the LED */
level = !level;
g_ioport_on_ioport.pinWrite(Leds.p_leds[0], level);
/* Wait one second */
tx_thread_sleep(100);
}
}

6.ファイルに対して行った変更を保存し、プロジェクトのデバッグコンフィギュレーションをビルドします。これには数分かかる場合があります。

7.デザインは、エラーが発生することなくビルドされます。エラーが発生した場合は、追加したコードを慎重にご確認ください。何らかの文字抜けや追加が生じている可能性があります。
コードがエラーなくビルドされると、ターゲットボード上でスレッド形式のBlinkyを実行させることができます。

ボード上でスレッド形式のBlinkyを実行する
1.以前のサンプルデザインで実行したとおり、ボードを接続します。
2.デバッガを初期化し、新しいプロジェクトのビルドコンフィギュレーションを選択します。
3.Debugボタンをクリックしてデバッグパースペクティブを立ち上げます。
4.デバッグセッションは、デザイン開始時は停止していますので、Resumeボタンを2回押してボード上での実行を開始します。
5.ここで、LEDが点滅します。デバッグセッションを一時停止または終了するまで、点灯1秒と消灯1秒を繰り返します。
6.以上で、Synergyを使った初めてのスレッドデザインは完了です。

スレッド形式のBlinkyの仕組み
以前のサンプル(Hal Blinkyなど)でお気づきになられたかもしれませんが、スレッド形式のBlinkyは、hal_entry内ではなく、スレッドで動作を開始します。
Blinkyスレッドは、このデザインでは唯一のスレッドですので、これがデザインの開始場所となります。
複数のスレッドがある場合は、それぞれが固有の起点を持ちます。

スレッド形式のBlinkyコードの最初の部分は、Hal Blinkyのそれに似ています。このコードはボード上のLEDの場所を決めるもので、LEDがある場合は”High”に設定することで開始します。
次いで、出力レベルを切り換えるループに入ります。

スレッド形式のBlinkyは、tx_thread_sleepコマンドを使用して1秒間待機します。パラメータは「チック」単位でtx_thread_sleepに移ります。1チックが10msなので、100チックが1秒になります。

以上で、このサンプルデザインは終了です。今回のガイドをベースに、スレッド操作について、<ThreadX for the Synergy Platform>のPDFもご参照ください。

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア