Team for GR-PEACH Producer Meeting

mbed-RTOS(rev.92以降)使用時のコンパイルエラーについて

30 Sep 2015

9/EにCMSIS-RTOS RTX cortex-A9のNEON対応を行いました。
mbed-srcとmbed-lib及びmbed-RTOSが更新対象であり、
mbed-srcとmbed-RTOSへの反映は完了しましたが、mbed-libへの反映は時間がかかるため未反映です。
(mbed-src:rev.626、mbed-RTOS:rev.92)
そのため、rev.92以降のmbed-RTOSとmbed-libを使用したプログラムをコンパイルすると、下記のコンパイルエラーが発生してしまいます。
「Undefined symbol seen_id0_active(referred from HAL_CA9.c.RZ_A1H.o)」

そこでお手数ですが、mbed-libへの反映が完了するまで、mbed-RTOSをrev91に切り替えてご使用頂きます様お願いいたします。
/media/uploads/1050186/mbed-rtos_rev91.png
本件は、mbed-RTOSとmbed-libを使用する場合に発生する問題であり、mbed-srcをご使用中であれば、本変更は必要ありません。

05 Oct 2015

10/2にmbed-libへの反映が完了し、mbed-libが更新されました(rev.108)。
rev.108以降のmbed-libを使用していただくことで、上記コンパイルエラーが発生することなく、無事にコンパイルできます。

07 Oct 2015

10/6時点、mbed-RTOS(rev.92)とEthernetInterfaceライブラリを組み合わせたプログラムをコンパイルすると、正常に動作しない事を確認しております。
原因特定と修正(下記コード参照)が終わり、現在プルリクエスト中です。
お手数をおかけして申し訳ありません。

rev.92以降のmbed-RTOSと組み合わせて使用する場合は、EthernetInterfaceライブラリへの反映が完了するまで、下記の変更を行なってご使用頂きます様お願いいたします。

EthernetInterface\lwip-sys\arch\sys_arch.c

err_t sys_mutex_new(sys_mutex_t *mutex) {
#ifdef CMSIS_OS_RTX
#ifdef __MBED_CMSIS_RTOS_CA9
    memset(mutex->data, 0, sizeof(int32_t)*4);
#else
    memset(mutex->data, 0, sizeof(int32_t)*3);
#endif
    mutex->def.mutex = mutex->data;
#endif
    mutex->id = osMutexCreate(&mutex->def);
    if (mutex->id == NULL)
        return ERR_MEM;
    
    return ERR_OK;
}


EthernetInterface\lwip-sys\arch\sys_arch.h

// === MUTEX ===
typedef struct {
    osMutexId    id;
    osMutexDef_t def;
#ifdef CMSIS_OS_RTX
#ifdef __MBED_CMSIS_RTOS_CA9
    int32_t      data[4];
#else
    int32_t      data[3];
#endif
#endif
} sys_mutex_t;