(toppers-etrobo 53) 【質問】EV3の動的ローディング時におけるデータキューの利用について

Eiichiro Yamamoto (Nifty) eiyama-h @ nifty.com
2016年 1月 2日 (土) 17:24:29 JST


李様

イベントフラグの件で,お世話なった山本です.
その節は,大変ありがとうございました.

さて,イベントフラグで同期を取るだけではなく,データの送受信が必要な場合もあるので,データキューの使用も考えています.
NXTでデータキューのテスト用に作ったプログラムをEV3RT用に変換して動かしてみました.
静的ローディングの場合は,問題なく動作したのですが,動的ローディングでは,
cfg:../test_dtq1_ev3/app.cfg:70: error: E_NOSPT: CRE_DTQ is not supported in 
dynamic loading mode
というエラーが出て,コンパイル(make)が通りません.

コンフィギュレーション・ファイルは,下記のようになっています.
カラー・センサーからセンサー値を読み込むタスク(TSK_LIGHT,周期ハンドラCYC0で500msec周期で起動)で読み込んだ値を,データキューを使って,メインタスク(TSK_MAIN)に送信し,メインタスクで,この値を受信するようにしています.タッチ・センサーの押下によりメインタスクを終了させていますが,タッチ・センサーの押下は,タッチ・センサーのタスク(TSK_TOUCH,周期ハンドラCYC1で50msec周期で起動)で検出しているので,イベントフラグも併用しています.

====================
INCLUDE("app_common.cfg");

#include "app.h"
#include "testsensor.h"

DOMAIN(TDOM_APP) {
/* 周期ハンドラの定義 */
EV3_CRE_CYC(CYC0, { TA_STA, 0, cyc0, 500, 0});
EV3_CRE_CYC(CYC1, { TA_STA, 0, cyc1, 50, 0});

/*  タスクの定義 */
CRE_TSK(TSK_MAIN, { TA_ACT, 0, main_task, TMIN_APP_TPRI + 1, STACK_SIZE, 
NULL });
CRE_TSK(TSK_LIGHT, { TA_NULL, 0, light_sense, TMIN_APP_TPRI + 3, STACK_SIZE, 
NULL });
CRE_TSK(TSK_TOUCH, { TA_NULL, 0, touch_sense, TMIN_APP_TPRI + 2, STACK_SIZE, 
NULL });

/* イベントフラグの定義 */
CRE_FLG(EVT_FLGID, { TA_CLR, 0});

/* データキューの定義 */
CRE_DTQ(DT_QID, { TA_NULL, 2, NULL});
}

ATT_MOD("app.o");
ATT_MOD("testsensor.o");
ATT_MOD("Sensor.o");
ATT_MOD("TouchSensor.o");
ATT_MOD("LightSensor.o");
====================

どこに問題がありそうなのか,御教示いただければ幸いです.
よろしくお願いします.