10 years, 6 months ago.

1114FN28のRTOSについて

RTOSを試してみました。すべてコンパイラはオンラインコンパイラ上です。 以下のコードはmbedライブラリ、mbed-rtosライブラリをインポートしています。 CODE1

#include "mbed.h"
#include "rtos.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);

void led2_thread(void const *argument) {
    while (true) {
        led2 = !led2;
        Thread::wait(1000);

    }
}

int main() {
    Thread thread(led2_thread);

    while (true) {
        led1 = !led1;
        Thread::wait(500);
    }
}

上記ではLED1,2とも出力しません。

同じライブラリをおいている状態で以下のコードも同じく出力しません。 CODE2

#include "mbed.h"
//#include "rtos.h"

DigitalOut led1(LED1);
//DigitalOut led2(LED2);

/*void led2_thread(void const *argument) {
    while (true) {
        led2 = !led2;
        Thread::wait(1000);

    }
}
*/
int main() {
//    Thread thread(led2_thread);

    while (true) {
        led1 = !led1;
//        Thread::wait(500);
        wait_ms(500);
    }
}

上記の2コードを出力するとバイナリサイズはincludeされているCODE1は13860byte,includeされてないCODE2は6160byteです。 そして、コード上からCODE2のようにコメントアウトするだけでなく、ターゲットのプログラムツリーの中からRTOSライブラリ(フォルダ)そのものを削除しCODE2でコンパイルするとサイズは1588byteです。そしてその場合は動作し出力します。

この状況は私だけでしょうか?上記のCODE2であればRTOSライブラリがオンラインコンパイラのプログラムのターゲットボードのプログラムツリーの中に存在していても、includeしていないので動くものと思います。

何か考えられる事があればご教示いただければ幸いです。

1 Answer

10 years, 6 months ago.

LPC1114FN28では、Flashサイズの都合でRTOSをサポートしておりません。 mbed-rtosライブラリをインポートせずにご利用ください。

Accepted Answer

返信ありがとうございました。RTOS内、RTX_Conf_CM.Cファイルにはdefined(TARGET_LPC1114)として記載されておりコンパイルはオンラインコンパイラ上から通りますが1114FN28はサポートされてないという理解をいたしました。ありがとうございます。

posted by Kazu Zamasu 19 Jun 2014

Assigned to Kazu Zamasu 10 years, 6 months ago.

This means that the question has been accepted and is being worked on.