GCC libmDot for offline build

Home Forums mDot/xDot GCC libmDot for offline build

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #14616
    Damian Christie
    Participant

    Hi,

    I’m trying to build the AT command firmware using the GCC toolchain in Eclipse. I’m getting a bunch of “undefined reference” errors, all concerning the mDot class, leading me to believe the library is not being read correctly. I’m using the latest libmDot library from the downloads page. If I change the name of the library under the linker settings in Eclipse I get an error saying the library is not found, so this makes me think the linker is finding the library just fine when I use the correct name. Any idea why it might not be reading the contents of the library???

    Thanks.

    #14617
    Mike Fiore
    Blocked

    Damian,

    Are you using an IDE or the mbed offline SDK? Did you export from the online compiler?

    Cheers,

    Mike

    #14618
    Damian Christie
    Participant

    I’m using Eclipse CDT, basically following this tutorial, altered to suit the mDot. I exported from the mbed browser IDE and copied in the mbed-src folder and the libmDot library from the download page.

    #14619
    Mike Fiore
    Blocked

    Damian,

    What version of mbed-src and libmDot did you use?

    Can you post compile output?

    Cheers,

    Mike

    #14620
    Damian Christie
    Participant

    Hi Mike,

    I’m pretty sure I used the latest version of mbed-src, downloaded from here. I used libmDot-1.0.8. My compile output is below.

    Thanks.

    
    17:10:25 **** Build of configuration Debug for project test02 ****
    make all 
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal.o" "../system/src/stm32f4-hal/stm32f4xx_hal.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_cortex.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_cortex.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_cortex.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_cortex.o" "../system/src/stm32f4-hal/stm32f4xx_hal_cortex.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_cortex.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.o" "../system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_flash.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_flash.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_flash.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_flash.o" "../system/src/stm32f4-hal/stm32f4xx_hal_flash.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_flash.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_gpio.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_gpio.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_gpio.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_gpio.o" "../system/src/stm32f4-hal/stm32f4xx_hal_gpio.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_gpio.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_iwdg.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_iwdg.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_iwdg.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_iwdg.o" "../system/src/stm32f4-hal/stm32f4xx_hal_iwdg.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_iwdg.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_pwr.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_pwr.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_pwr.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_pwr.o" "../system/src/stm32f4-hal/stm32f4xx_hal_pwr.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_pwr.c
     
    Building file: ../system/src/stm32f4-hal/stm32f4xx_hal_rcc.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-bad-function-cast -Wno-conversion -Wno-sign-conversion -Wno-unused-parameter -Wno-sign-compare -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"system/src/stm32f4-hal/stm32f4xx_hal_rcc.d" -MT"system/src/stm32f4-hal/stm32f4xx_hal_rcc.o" -c -o "system/src/stm32f4-hal/stm32f4xx_hal_rcc.o" "../system/src/stm32f4-hal/stm32f4xx_hal_rcc.c"
    Finished building: ../system/src/stm32f4-hal/stm32f4xx_hal_rcc.c
     
    Building file: ../system/src/newlib/_cxx.cpp
    Invoking: Cross ARM C++ Compiler
    arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../libmDot" -I"../" -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -I"../mbed-rtos/rtos" -I"../mbed-rtos/rtx/TARGET_CORTEX_M" -I"../libmDot/MTS-Utils" -I"../mbed-src/api" -I"../mbed-src/targets/hal/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/hal" -std=gnu++11 -fabi-version=0 -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -MMD -MP -MF"system/src/newlib/_cxx.d" -MT"system/src/newlib/_cxx.o" -c -o "system/src/newlib/_cxx.o" "../system/src/newlib/_cxx.cpp"
    Finished building: ../system/src/newlib/_cxx.cpp
     
    Building file: ../system/src/newlib/_exit.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/newlib/_exit.d" -MT"system/src/newlib/_exit.o" -c -o "system/src/newlib/_exit.o" "../system/src/newlib/_exit.c"
    Finished building: ../system/src/newlib/_exit.c
     
    Building file: ../system/src/newlib/_sbrk.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/newlib/_sbrk.d" -MT"system/src/newlib/_sbrk.o" -c -o "system/src/newlib/_sbrk.o" "../system/src/newlib/_sbrk.c"
    Finished building: ../system/src/newlib/_sbrk.c
     
    Building file: ../system/src/newlib/_startup.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -DOS_INCLUDE_STARTUP_INIT_MULTIPLE_RAM_SECTIONS -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/newlib/_startup.d" -MT"system/src/newlib/_startup.d" -c -o "system/src/newlib/_startup.o" "../system/src/newlib/_startup.c"
    Finished building: ../system/src/newlib/_startup.c
     
    Building file: ../system/src/newlib/_syscalls.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/newlib/_syscalls.d" -MT"system/src/newlib/_syscalls.o" -c -o "system/src/newlib/_syscalls.o" "../system/src/newlib/_syscalls.c"
    Finished building: ../system/src/newlib/_syscalls.c
     
    Building file: ../system/src/newlib/assert.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/newlib/assert.d" -MT"system/src/newlib/assert.o" -c -o "system/src/newlib/assert.o" "../system/src/newlib/assert.c"
    Finished building: ../system/src/newlib/assert.c
     
    Building file: ../system/src/diag/Trace.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/diag/Trace.d" -MT"system/src/diag/Trace.o" -c -o "system/src/diag/Trace.o" "../system/src/diag/Trace.c"
    Finished building: ../system/src/diag/Trace.c
     
    Building file: ../system/src/diag/trace_impl.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/diag/trace_impl.d" -MT"system/src/diag/trace_impl.o" -c -o "system/src/diag/trace_impl.o" "../system/src/diag/trace_impl.c"
    Finished building: ../system/src/diag/trace_impl.c
     
    Building file: ../system/src/cortexm/_initialize_hardware.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/cortexm/_initialize_hardware.d" -MT"system/src/cortexm/_initialize_hardware.o" -c -o "system/src/cortexm/_initialize_hardware.o" "../system/src/cortexm/_initialize_hardware.c"
    Finished building: ../system/src/cortexm/_initialize_hardware.c
     
    Building file: ../system/src/cortexm/_reset_hardware.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/cortexm/_reset_hardware.d" -MT"system/src/cortexm/_reset_hardware.o" -c -o "system/src/cortexm/_reset_hardware.o" "../system/src/cortexm/_reset_hardware.c"
    Finished building: ../system/src/cortexm/_reset_hardware.c
     
    Building file: ../system/src/cortexm/exception_handlers.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/cortexm/exception_handlers.d" -MT"system/src/cortexm/exception_handlers.o" -c -o "system/src/cortexm/exception_handlers.o" "../system/src/cortexm/exception_handlers.c"
    Finished building: ../system/src/cortexm/exception_handlers.c
     
    Building file: ../system/src/cmsis/startup_stm32f411xe.S
    Invoking: Cross ARM GNU Assembler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -x assembler-with-cpp -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -MMD -MP -MF"system/src/cmsis/startup_stm32f411xe.d" -MT"system/src/cmsis/startup_stm32f411xe.o" -c -o "system/src/cmsis/startup_stm32f411xe.o" "../system/src/cmsis/startup_stm32f411xe.S"
    Finished building: ../system/src/cmsis/startup_stm32f411xe.S
     
    Building file: ../system/src/cmsis/system_stm32f4xx.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"system/src/cmsis/system_stm32f4xx.d" -MT"system/src/cmsis/system_stm32f4xx.o" -c -o "system/src/cmsis/system_stm32f4xx.o" "../system/src/cmsis/system_stm32f4xx.c"
    Finished building: ../system/src/cmsis/system_stm32f4xx.c
     
    Building file: ../src/Timer.cpp
    Invoking: Cross ARM C++ Compiler
    arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../libmDot" -I"../" -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -I"../mbed-rtos/rtos" -I"../mbed-rtos/rtx/TARGET_CORTEX_M" -I"../libmDot/MTS-Utils" -I"../mbed-src/api" -I"../mbed-src/targets/hal/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/hal" -std=gnu++11 -fabi-version=0 -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -MMD -MP -MF"src/Timer.d" -MT"src/Timer.o" -c -o "src/Timer.o" "../src/Timer.cpp"
    Finished building: ../src/Timer.cpp
     
    Building file: ../src/_initialize_hardware.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"src/_initialize_hardware.d" -MT"src/_initialize_hardware.o" -c -o "src/_initialize_hardware.o" "../src/_initialize_hardware.c"
    ../src/_initialize_hardware.c: In function 'SystemClock_Config':
    ../src/_initialize_hardware.c:104:2: warning: #warning "Please check if the SystemClock_Config() settings match your board!" [-Wcpp]
     #warning "Please check if the SystemClock_Config() settings match your board!"
      ^
    Finished building: ../src/_initialize_hardware.c
     
    Building file: ../src/_write.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -MMD -MP -MF"src/_write.d" -MT"src/_write.o" -c -o "src/_write.o" "../src/_write.c"
    Finished building: ../src/_write.c
     
    Building file: ../src/main.cpp
    Invoking: Cross ARM C++ Compiler
    arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../libmDot" -I"../" -I"../include" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -I"../mbed-rtos/rtos" -I"../mbed-rtos/rtx/TARGET_CORTEX_M" -I"../libmDot/MTS-Utils" -I"../mbed-src/api" -I"../mbed-src/targets/hal/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F4XX" -I"../mbed-src/hal" -std=gnu++11 -fabi-version=0 -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -MMD -MP -MF"src/main.d" -MT"src/main.o" -c -o "src/main.o" "../src/main.cpp"
    In file included from ../src/main.cpp:2:0:
    ../libmDot/mDot.h:25:38: warning: unused parameter 'args' [-Wunused-parameter]
             static void idle(void const* args) {
                                          ^
    Finished building: ../src/main.cpp
     
    Building file: ../src/stm32f4xx_hal_msp.c
    Invoking: Cross ARM C Compiler
    arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -DDEBUG -DUSE_FULL_ASSERT -DOS_USE_SEMIHOSTING -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F411xE -DUSE_HAL_DRIVER -DHSE_VALUE=8000000 -I"../include" -I"../libmDot" -I"../system/include" -I"../system/include/cmsis" -I"../system/include/stm32f4-hal" -std=gnu11 -Wno-missing-prototypes -Wno-missing-declarations -MMD -MP -MF"src/stm32f4xx_hal_msp.d" -MT"src/stm32f4xx_hal_msp.d" -c -o "src/stm32f4xx_hal_msp.o" "../src/stm32f4xx_hal_msp.c"
    Finished building: ../src/stm32f4xx_hal_msp.c
     
    Building target: test02.elf
    Invoking: Cross ARM C++ Linker
    arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall -Wextra  -g3 -T mem.ld -T libs.ld -T sections.ld -nostartfiles -Xlinker --gc-sections -L"../libmDot" -L"../ldscripts" -Wl,-Map,"test02.map" --specs=nano.specs -o "test02.elf"  ./system/src/stm32f4-hal/stm32f4xx_hal.o ./system/src/stm32f4-hal/stm32f4xx_hal_cortex.o ./system/src/stm32f4-hal/stm32f4xx_hal_dfsdm.o ./system/src/stm32f4-hal/stm32f4xx_hal_flash.o ./system/src/stm32f4-hal/stm32f4xx_hal_gpio.o ./system/src/stm32f4-hal/stm32f4xx_hal_iwdg.o ./system/src/stm32f4-hal/stm32f4xx_hal_pwr.o ./system/src/stm32f4-hal/stm32f4xx_hal_rcc.o  ./system/src/newlib/_cxx.o ./system/src/newlib/_exit.o ./system/src/newlib/_sbrk.o ./system/src/newlib/_startup.o ./system/src/newlib/_syscalls.o ./system/src/newlib/assert.o  ./system/src/diag/Trace.o ./system/src/diag/trace_impl.o  ./system/src/cortexm/_initialize_hardware.o ./system/src/cortexm/_reset_hardware.o ./system/src/cortexm/exception_handlers.o  ./system/src/cmsis/startup_stm32f411xe.o ./system/src/cmsis/system_stm32f4xx.o  ./src/Timer.o ./src/_initialize_hardware.o ./src/_write.o ./src/main.o ./src/stm32f4xx_hal_msp.o   -lmDot-1.0.8-1-g7ae9ef7-GCC_ARM
    ./src/main.o: In function 'main':
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:24: undefined reference to 'mDot::getId[abi:cxx11]()'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:48: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:52: undefined reference to 'mDot::setNetworkName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:53: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:57: undefined reference to 'mDot::setNetworkPassphrase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:58: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:66: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:72: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:87: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:89: undefined reference to 'osDelay'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:99: undefined reference to 'mDot::getReturnCodeString[abi:cxx11](long const&)'
    C:\Users\christda\workspace\test02\Debug/../src/main.cpp:105: undefined reference to 'osDelay'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::~LoRaMac()':
    LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0xc): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0x14): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0x1c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0x24): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0x2c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o):LoRaMac.cpp:(.text._ZN7LoRaMacD2Ev+0x34): more undefined references to 'rtos::RtosTimer::~RtosTimer()' follow
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::GetNextTxMs()':
    LoRaMac.cpp:(.text._ZN7LoRaMac11GetNextTxMsEv+0x10): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac11GetNextTxMsEv+0x9c): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac11GetNextTxMsEv+0xb6): undefined reference to 'mbed::Timer::read_ms()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnDutyCycleCentEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleCentEventBottomEv+0x8): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleCentEventBottomEv+0x34): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnDutyCycleMillEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleMillEventBottomEv+0x8): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleMillEventBottomEv+0x34): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnDutyCycleDeciEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleDeciEventBottomEv+0x8): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleDeciEventBottomEv+0x34): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnDutyCycleVariEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleVariEventBottomEv+0x8): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac26OnDutyCycleVariEventBottomEv+0x34): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::ResetRadio()':
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x22): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x2a): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x32): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x3a): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x40): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o):LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x48): more undefined references to 'rtos::RtosTimer::stop()' follow
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::ResetRadio()':
    LoRaMac.cpp:(.text._ZN7LoRaMac10ResetRadioEv+0x92): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::FindNextChannel()':
    LoRaMac.cpp:(.text._ZN7LoRaMac15FindNextChannelEv+0x1ac): undefined reference to 'mbed::Timer::read_ms()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::Init()':
    LoRaMac.cpp:(.text._ZN7LoRaMac4InitEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac4InitEv+0xac): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::LoRaMac(SxRadio&, LoRaMacEvent*)':
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0xb6): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0xd4): undefined reference to 'mbed::Timer::Timer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0xee): undefined reference to 'mbed::Timer::Timer()'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0xfc): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x10a): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x118): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x126): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x134): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o):LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x142): more undefined references to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)' follow
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::LoRaMac(SxRadio&, LoRaMacEvent*)':
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x2b2): undefined reference to 'mbed::Timer::start()'
    LoRaMac.cpp:(.text._ZN7LoRaMacC2ER7SxRadioP12LoRaMacEvent+0x2b8): undefined reference to 'mbed::Timer::start()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::InitNwkIds(unsigned long, unsigned long, unsigned char*, unsigned char*)':
    LoRaMac.cpp:(.text._ZN7LoRaMac10InitNwkIdsEmmPhS0_+0x18): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac10InitNwkIdsEmmPhS0_+0x4c): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::LinkCheckReq()':
    LoRaMac.cpp:(.text._ZN7LoRaMac12LinkCheckReqEv+0x1a): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac12LinkCheckReqEv+0x54): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::PrepareFrame(LoRaMac::TxChannel, LoRaMac::Header*, LoRaMac::UpFrameControl*, unsigned char*, unsigned char, void*, unsigned short)':
    LoRaMac.cpp:(.text._ZN7LoRaMac12PrepareFrameENS_9TxChannelEPNS_6HeaderEPNS_14UpFrameControlEPhhPvt+0x2c): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac12PrepareFrameENS_9TxChannelEPNS_6HeaderEPNS_14UpFrameControlEPhhPvt+0x368): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::UpdateDutyCycle(unsigned long, unsigned long)':
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x12): undefined reference to 'mbed::Timer::start()'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x62): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x8e): undefined reference to 'mbed::Timer::reset()'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0xa8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x106): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x1b0): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x1bc): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac15UpdateDutyCycleEmm+0x1c8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::SendFrameOnChannel(LoRaMac::TxChannel)':
    LoRaMac.cpp:(.text._ZN7LoRaMac18SendFrameOnChannelENS_9TxChannelE+0x1a): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac18SendFrameOnChannelENS_9TxChannelE+0x1ae): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnNbRepTimeoutTimerEventBottom() [clone .part.30]':
    LoRaMac.cpp:(.text._ZN7LoRaMac30OnNbRepTimeoutTimerEventBottomEv.part.30+0x134): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::SendOnChannel(LoRaMac::TxChannel, LoRaMac::Header*, LoRaMac::UpFrameControl*, unsigned char*, unsigned char, void*, unsigned short)':
    LoRaMac.cpp:(.text._ZN7LoRaMac13SendOnChannelENS_9TxChannelEPNS_6HeaderEPNS_14UpFrameControlEPhhPvt+0x22): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac13SendOnChannelENS_9TxChannelEPNS_6HeaderEPNS_14UpFrameControlEPhhPvt+0x40): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::Send(LoRaMac::Header*, unsigned char*, unsigned char, void*, unsigned short)':
    LoRaMac.cpp:(.text._ZN7LoRaMac4SendEPNS_6HeaderEPhhPvt+0x1c): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac4SendEPNS_6HeaderEPhhPvt+0x4c): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac4SendEPNS_6HeaderEPhhPvt+0x78): undefined reference to 'rtos::Mutex::unlock()'
    LoRaMac.cpp:(.text._ZN7LoRaMac4SendEPNS_6HeaderEPhhPvt+0xb8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::JoinReq(unsigned char*, unsigned char*, unsigned char*)':
    LoRaMac.cpp:(.text._ZN7LoRaMac7JoinReqEPhS0_S0_+0x26): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac7JoinReqEPhS0_S0_+0xba): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac7JoinReqEPhS0_S0_+0x128): undefined reference to 'rtos::Mutex::unlock()'
    LoRaMac.cpp:(.text._ZN7LoRaMac7JoinReqEPhS0_S0_+0x158): undefined reference to 'mbed::Timer::read()'
    LoRaMac.cpp:(.text._ZN7LoRaMac7JoinReqEPhS0_S0_+0x17e): undefined reference to 'mbed::Timer::read()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::Wakeup()':
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0x20): undefined reference to 'mbed::Timer::start()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0x26): undefined reference to 'mbed::Timer::start()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0x30): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0x60): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0xa0): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0xea): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6WakeupEv+0xf8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::TxDone()':
    LoRaMac.cpp:(.text._ZN7LoRaMac6TxDoneEv+0x18): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6TxDoneEv+0x142): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6TxDoneEv+0x14e): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6TxDoneEv+0x1b8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6TxDoneEv+0x136): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnRxWindow1TimerEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac27OnRxWindow1TimerEventBottomEv+0xde): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o):LoRaMac.cpp:(.text._ZN7LoRaMac27OnRxWindow2TimerEventBottomEi+0xde): more undefined references to 'rtos::RtosTimer::start(unsigned long)' follow
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnRxWindow2TimerEventBottom(int)':
    LoRaMac.cpp:(.text._ZN7LoRaMac27OnRxWindow2TimerEventBottomEi+0x15e): undefined reference to 'mbed::Timer::read_ms()'
    LoRaMac.cpp:(.text._ZN7LoRaMac27OnRxWindow2TimerEventBottomEi+0x17a): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::TxTimeout()':
    LoRaMac.cpp:(.text._ZN7LoRaMac9TxTimeoutEv+0x20): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::RxTimeout()':
    LoRaMac.cpp:(.text._ZN7LoRaMac9RxTimeoutEv+0x20): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac9RxTimeoutEv+0x48): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::RxError()':
    LoRaMac.cpp:(.text._ZN7LoRaMac7RxErrorEv+0x14): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::Config(LoRaConfig&)':
    LoRaMac.cpp:(.text._ZN7LoRaMac6ConfigER10LoRaConfig+0x14): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6ConfigER10LoRaConfig+0x1b4): undefined reference to 'rtos::Mutex::unlock()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6ConfigER10LoRaConfig+0x308): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::RxDone(unsigned char*, unsigned short, short, signed char)':
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x2e): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x2aa): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x59a): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x624): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x6aa): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x81c): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x848): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x882): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0x8f4): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0xca2): undefined reference to 'rtos::RtosTimer::stop()'
    LoRaMac.cpp:(.text._ZN7LoRaMac6RxDoneEPhtsa+0xe96): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(LoRaMac.o): In function 'LoRaMac::OnAckTimeoutTimerEventBottom()':
    LoRaMac.cpp:(.text._ZN7LoRaMac28OnAckTimeoutTimerEventBottomEv+0x132): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::blinkActivityLed()':
    mDot.cpp:(.text._ZN4mDot16blinkActivityLedEv[_ZN4mDot16blinkActivityLedEv]+0x36): undefined reference to 'mbed_assert_internal'
    mDot.cpp:(.text._ZN4mDot16blinkActivityLedEv[_ZN4mDot16blinkActivityLedEv]+0x4c): undefined reference to 'mbed_assert_internal'
    mDot.cpp:(.text._ZN4mDot16blinkActivityLedEv[_ZN4mDot16blinkActivityLedEv]+0x6c): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::waitForLinkCheck()':
    mDot.cpp:(.text._ZN4mDot16waitForLinkCheckEv+0x8): undefined reference to 'mbed::Timer::Timer()'
    mDot.cpp:(.text._ZN4mDot16waitForLinkCheckEv+0xe): undefined reference to 'mbed::Timer::start()'
    mDot.cpp:(.text._ZN4mDot16waitForLinkCheckEv+0x24): undefined reference to 'mbed::Timer::read_ms()'
    mDot.cpp:(.text._ZN4mDot16waitForLinkCheckEv+0x30): undefined reference to 'osDelay'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::setActivityLedState(unsigned char const&)':
    mDot.cpp:(.text._ZN4mDot19setActivityLedStateERKh+0x20): undefined reference to 'mbed::Ticker::detach()'
    mDot.cpp:(.text._ZN4mDot19setActivityLedStateERKh+0x7c): undefined reference to 'mbed_assert_internal'
    mDot.cpp:(.text._ZN4mDot19setActivityLedStateERKh+0x92): undefined reference to 'mbed_assert_internal'
    mDot.cpp:(.text._ZN4mDot19setActivityLedStateERKh+0x72): undefined reference to 'mbed::Ticker::setup(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::mDot()':
    mDot.cpp:(.text._ZN4mDotC2Ev+0x4e): undefined reference to 'rtos::Thread::Thread(void (*)(void const*), void*, osPriority, unsigned long, unsigned char*)'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x5e): undefined reference to 'mbed::TimerEvent::TimerEvent()'
    mDot.cpp:(.text._ZN4mDotC2Ev+0xec): undefined reference to 'attach_rtc'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x318): undefined reference to 'vtable for mbed::Ticker'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x328): undefined reference to 'rtc_read'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x32c): undefined reference to 'rtc_write'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x330): undefined reference to 'rtc_init'
    mDot.cpp:(.text._ZN4mDotC2Ev+0x38c): undefined reference to 'set_time'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::joinBase(unsigned long const&)':
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x84): undefined reference to 'mbed::Timer::Timer()'
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x8c): undefined reference to 'mbed::Timer::start()'
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x10c): undefined reference to 'mbed::Timer::Timer()'
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x112): undefined reference to 'mbed::Timer::start()'
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x148): undefined reference to 'mbed::Timer::read_ms()'
    mDot.cpp:(.text._ZN4mDot8joinBaseERKm+0x174): undefined reference to 'osDelay'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(mDot.o): In function 'mDot::sendBase(std::vector<unsigned char, std::allocator<unsigned char> > const&, bool const&, bool const&, bool const&)':
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x234): undefined reference to 'mbed::Timer::Timer()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x23a): undefined reference to 'mbed::Timer::start()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x290): undefined reference to 'mbed::Timer::read_ms()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x2c6): undefined reference to 'osDelay'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x2d8): undefined reference to 'mbed::Timer::Timer()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x2de): undefined reference to 'mbed::Timer::start()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x33c): undefined reference to 'mbed::Timer::read_ms()'
    mDot.cpp:(.text._ZN4mDot8sendBaseERKSt6vectorIhSaIhEERKbS6_S6_+0x350): undefined reference to 'osDelay'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(MdotRadio.o): In function 'MdotRadio::SetAntSw(unsigned char)':
    MdotRadio.cpp:(.text._ZN9MdotRadio8SetAntSwEh+0x5c): undefined reference to 'mbed_assert_internal'
    MdotRadio.cpp:(.text._ZN9MdotRadio8SetAntSwEh+0x68): undefined reference to 'mbed_assert_internal'
    MdotRadio.cpp:(.text._ZN9MdotRadio8SetAntSwEh+0x74): undefined reference to 'mbed_assert_internal'
    MdotRadio.cpp:(.text._ZN9MdotRadio8SetAntSwEh+0x80): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(MdotRadio.o): In function 'MdotRadio::MdotRadio(osPriority)':
    MdotRadio.cpp:(.text._ZN9MdotRadioC2E10osPriority+0x50): undefined reference to 'gpio_init_out_ex'
    MdotRadio.cpp:(.text._ZN9MdotRadioC2E10osPriority+0x6c): undefined reference to 'gpio_init_out_ex'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(MdotRadio.o): In function 'MdotRadio::~MdotRadio()':
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0xc): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x14): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x1c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x24): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x2c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x34): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x3c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x44): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x4c): undefined reference to 'rtos::Thread::~Thread()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD2Ev[_ZN9MdotRadioD5Ev]+0x58): undefined reference to 'rtos::Mutex::~Mutex()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(MdotRadio.o): In function 'MdotRadio::~MdotRadio()':
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0xc): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x14): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x1c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x24): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x2c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x34): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x3c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x44): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x4c): undefined reference to 'rtos::Thread::~Thread()'
    MdotRadio.cpp:(.text._ZN9MdotRadioD0Ev[_ZN9MdotRadioD5Ev]+0x58): undefined reference to 'rtos::Mutex::~Mutex()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::read_status()':
    SpiFlash25.cpp:(.text._ZN10SpiFlash2511read_statusEv+0x18): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2511read_statusEv+0x20): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2511read_statusEv+0x3e): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2511read_statusEv+0x4a): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::wait_for_write()':
    SpiFlash25.cpp:(.text._ZN10SpiFlash2514wait_for_writeEv+0x6): undefined reference to 'wait_us'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::enable_write()':
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512enable_writeEv+0x18): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512enable_writeEv+0x32): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512enable_writeEv+0x3e): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::read(int, int, char*)':
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x2e): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x38): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x42): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x4a): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x5a): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x7e): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash254readEiiPc+0x8a): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::clear_sector(int)':
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x1e): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x28): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x32): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x3a): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x5c): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2512clear_sectorEi+0x68): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::write_page(int, int, char const*)':
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x22): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x2c): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x36): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x3e): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x50): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x76): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash2510write_pageEiiPKc+0x82): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::wakeup()':
    SpiFlash25.cpp:(.text._ZN10SpiFlash256wakeupEv+0x18): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash256wakeupEv+0x32): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash256wakeupEv+0x3e): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SpiFlash25.o): In function 'SpiFlash25::SpiFlash25(PinName, PinName, PinName, PinName, PinName, PinName, int)':
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x1c): undefined reference to 'mbed::SPI::SPI(PinName, PinName, PinName, PinName)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x32): undefined reference to 'gpio_init_out'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x4c): undefined reference to 'mbed::SPI::format(int, int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x54): undefined reference to 'mbed::SPI::frequency(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x70): undefined reference to 'gpio_init_out'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x9c): undefined reference to 'gpio_init_out'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0xca): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0xd2): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0xde): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0xea): undefined reference to 'mbed::SPI::write(int)'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x118): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x124): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x130): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x13c): undefined reference to 'mbed_assert_internal'
    SpiFlash25.cpp:(.text._ZN10SpiFlash25C2E7PinNameS0_S0_S0_S0_S0_i+0x148): undefined reference to 'mbed_assert_internal'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SetChannel(unsigned long)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127210SetChannelEm+0x10): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210SetChannelEm+0x5c): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SetRxConfig(SxRadio::RadioModems_t, unsigned long, unsigned long, unsigned char, unsigned long, unsigned short, unsigned short, bool, unsigned char, bool, bool, unsigned char, bool, bool)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetRxConfigEN7SxRadio13RadioModems_tEmmhmttbhbbhbb+0x54): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetRxConfigEN7SxRadio13RadioModems_tEmmhmttbhbbhbb+0x1b0): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetRxConfigEN7SxRadio13RadioModems_tEmmhmttbhbbhbb+0x2d4): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Rssi(SxRadio::RadioModems_t)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12724RssiEN7SxRadio13RadioModems_tE+0x10): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724RssiEN7SxRadio13RadioModems_tE+0x20): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724RssiEN7SxRadio13RadioModems_tE+0x38): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724RssiEN7SxRadio13RadioModems_tE+0x52): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Write(unsigned char, unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12725WriteEhh+0x18): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725WriteEhh+0x2c): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Read(unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12724ReadEh+0x12): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724ReadEh+0x28): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Terminate()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x16): undefined reference to 'mbed::InterruptIn::disable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x1e): undefined reference to 'mbed::InterruptIn::disable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x26): undefined reference to 'mbed::InterruptIn::disable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x2e): undefined reference to 'mbed::InterruptIn::disable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x36): undefined reference to 'mbed::InterruptIn::disable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x3e): undefined reference to 'rtos::Thread::terminate()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TerminateEv+0x48): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::TimeOnAir(SxRadio::RadioModems_t, unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TimeOnAirEN7SxRadio13RadioModems_tEh+0x16): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12729TimeOnAirEN7SxRadio13RadioModems_tEh+0x2a): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SignalMacEvent()':
    SxRadio1272.cpp:(.text._ZN11SxRadio127214SignalMacEventEv+0x4): undefined reference to 'rtos::Thread::signal_set(long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::OnRxTxTimeoutIrq(void const*)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127216OnRxTxTimeoutIrqEPKv+0x8): undefined reference to 'rtos::Thread::signal_set(long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::OnSyncTimeoutIrq(void const*)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127216OnSyncTimeoutIrqEPKv+0x8): undefined reference to 'rtos::Thread::signal_set(long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SX1272OnDioIrq()':
    SxRadio1272.cpp:(.text._ZN11SxRadio127214SX1272OnDioIrqEv+0x4): undefined reference to 'rtos::Thread::signal_set(long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SX1272IrqFskSyncMatch() [clone .part.2]':
    SxRadio1272.cpp:(.text._ZN11SxRadio127221SX1272IrqFskSyncMatchEv.part.2+0x8): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SetTxConfig(SxRadio::RadioModems_t, signed char, unsigned long, unsigned long, unsigned long, unsigned char, unsigned short, bool, bool, bool, unsigned char, bool, unsigned long)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetTxConfigEN7SxRadio13RadioModems_tEammmhtbbbhbm+0x48): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetTxConfigEN7SxRadio13RadioModems_tEammmhtbbbhbm+0x1d2): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211SetTxConfigEN7SxRadio13RadioModems_tEammmhtbbbhbm+0x2b2): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::ReadBuffer(unsigned char, unsigned char*, unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x16): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x38): undefined reference to 'mbed::SPI::write(int)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x4a): undefined reference to 'mbed::SPI::write(int)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x78): undefined reference to 'mbed_assert_internal'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x84): undefined reference to 'mbed_assert_internal'
    SxRadio1272.cpp:(.text._ZN11SxRadio127210ReadBufferEhPhh+0x6e): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::WriteBuffer(unsigned char, unsigned char const*, unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x16): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x38): undefined reference to 'mbed::SPI::write(int)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x4c): undefined reference to 'mbed::SPI::write(int)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x76): undefined reference to 'mbed_assert_internal'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x82): undefined reference to 'mbed_assert_internal'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211WriteBufferEhPKhh+0x6c): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SxRadio1272(PinName, PinName, PinName, PinName, PinName, PinName, PinName, PinName, PinName, PinName, osPriority)':
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x50): undefined reference to 'rtos::Mutex::Mutex()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x6a): undefined reference to 'rtos::Thread::Thread(void (*)(void const*), void*, osPriority, unsigned long, unsigned char*)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x8a): undefined reference to 'gpio_init_inout'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x9e): undefined reference to 'mbed::InterruptIn::InterruptIn(PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0xa6): undefined reference to 'mbed::InterruptIn::InterruptIn(PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0xae): undefined reference to 'mbed::InterruptIn::InterruptIn(PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0xc8): undefined reference to 'mbed::InterruptIn::InterruptIn(PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0xd2): undefined reference to 'mbed::InterruptIn::InterruptIn(PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0xe8): undefined reference to 'mbed::SPI::SPI(PinName, PinName, PinName, PinName)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x104): undefined reference to 'gpio_init_out_ex'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x118): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x126): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x134): undefined reference to 'rtos::RtosTimer::RtosTimer(void (*)(void const*), os_timer_type, void*)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x148): undefined reference to 'mbed::InterruptIn::mode(PinMode)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x150): undefined reference to 'mbed::InterruptIn::mode(PinMode)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x158): undefined reference to 'mbed::InterruptIn::mode(PinMode)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x160): undefined reference to 'mbed::InterruptIn::mode(PinMode)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x168): undefined reference to 'mbed::InterruptIn::mode(PinMode)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x184): undefined reference to 'gpio_irq_set'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x1a0): undefined reference to 'gpio_irq_set'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x1bc): undefined reference to 'gpio_irq_set'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x1d8): undefined reference to 'gpio_irq_set'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x1f4): undefined reference to 'gpio_irq_set'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x1fe): undefined reference to 'mbed::SPI::format(int, int)'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272C2E7PinNameS0_S0_S0_S0_S0_S0_S0_S0_S0_10osPriority+0x206): undefined reference to 'mbed::SPI::frequency(int)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Reset()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12725ResetEv+0xa): undefined reference to 'gpio_dir'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725ResetEv+0x10): undefined reference to 'wait_ms'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725ResetEv+0x18): undefined reference to 'gpio_dir'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725ResetEv+0x22): undefined reference to 'wait_ms'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Init(SxRadioEvents*)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x10): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x2a): undefined reference to 'mbed::InterruptIn::enable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x32): undefined reference to 'mbed::InterruptIn::enable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x3a): undefined reference to 'mbed::InterruptIn::enable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x42): undefined reference to 'mbed::InterruptIn::enable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x4c): undefined reference to 'mbed::InterruptIn::enable_irq()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724InitEP13SxRadioEvents+0x84): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Random()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12726RandomEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12726RandomEv+0x3a): undefined reference to 'wait_ms'
    SxRadio1272.cpp:(.text._ZN11SxRadio12726RandomEv+0x62): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Sleep()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SleepEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SleepEv+0x16): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SleepEv+0x20): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SleepEv+0x28): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SleepEv+0x44): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Standby()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12727StandbyEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12727StandbyEv+0x16): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12727StandbyEv+0x1e): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12727StandbyEv+0x28): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12727StandbyEv+0x44): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Rx(unsigned long)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12722RxEm+0x12): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12722RxEm+0x1b8): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12722RxEm+0x1c4): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12722RxEm+0x60): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12722RxEm+0x1d6): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SetTx(unsigned long)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SetTxEm+0x10): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SetTxEm+0x54): undefined reference to 'rtos::RtosTimer::start(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12725SetTxEm+0x66): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::Send(unsigned char const*, unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12724SendEPKhh+0x16): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724SendEPKhh+0x34): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio12724SendEPKhh+0x142): undefined reference to 'wait_ms'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::StartCad()':
    SxRadio1272.cpp:(.text._ZN11SxRadio12728StartCadEv+0xe): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12728StartCadEv+0x50): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SetModem(SxRadio::RadioModems_t)':
    SxRadio1272.cpp:(.text._ZN11SxRadio12728SetModemEN7SxRadio13RadioModems_tE+0x10): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio12728SetModemEN7SxRadio13RadioModems_tE+0x64): undefined reference to 'rtos::Mutex::unlock()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::OnTimeoutIrqBottom()':
    SxRadio1272.cpp:(.text._ZN11SxRadio127218OnTimeoutIrqBottomEv+0x86): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SX1272IrqTxDone()':
    SxRadio1272.cpp:(.text._ZN11SxRadio127215SX1272IrqTxDoneEv+0x8): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SX1272IrqFskRxDone(unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127218SX1272IrqFskRxDoneEh+0x42): undefined reference to 'rtos::RtosTimer::stop()'
    SxRadio1272.cpp:(.text._ZN11SxRadio127218SX1272IrqFskRxDoneEh+0x118): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::SX1272IrqLoraRxDone(unsigned char)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127219SX1272IrqLoraRxDoneEh+0xcc): undefined reference to 'rtos::RtosTimer::stop()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o):SxRadio1272.cpp:(.text._ZN11SxRadio127219SX1272IrqLoraRxDoneEh+0x114): more undefined references to 'rtos::RtosTimer::stop()' follow
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::RadioThread(void const*)':
    SxRadio1272.cpp:(.text._ZN11SxRadio127211RadioThreadEPKv+0x28): undefined reference to 'rtos::Mutex::unlock()'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211RadioThreadEPKv+0x34): undefined reference to 'rtos::Thread::signal_wait(long, unsigned long)'
    SxRadio1272.cpp:(.text._ZN11SxRadio127211RadioThreadEPKv+0x40): undefined reference to 'rtos::Mutex::lock(unsigned long)'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::~SxRadio1272()':
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0xc): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x14): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x1c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x24): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x2c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x34): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x3c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x44): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x4c): undefined reference to 'rtos::Thread::~Thread()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D2Ev[_ZN11SxRadio1272D5Ev]+0x58): undefined reference to 'rtos::Mutex::~Mutex()'
    ../libmDot\libmDot-1.0.8-1-g7ae9ef7-GCC_ARM.a(SxRadio1272.o): In function 'SxRadio1272::~SxRadio1272()':
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0xc): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x14): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x1c): undefined reference to 'rtos::RtosTimer::~RtosTimer()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x24): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x2c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x34): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x3c): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x44): undefined reference to 'mbed::InterruptIn::~InterruptIn()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x4c): undefined reference to 'rtos::Thread::~Thread()'
    SxRadio1272.cpp:(.text._ZN11SxRadio1272D0Ev[_ZN11SxRadio1272D5Ev]+0x58): undefined reference to 'rtos::Mutex::~Mutex()'
    collect2.exe: error: ld returned 1 exit status
    makefile:62: recipe for target 'test02.elf' failed
    make: *** [test02.elf] Error 1
    
    17:10:35 Build Finished (took 10s.360ms)
    
    #14626
    Mike Fiore
    Blocked

    Damian,

    If you only included mbed-src in your project, you didn’t get any of the RTOS source files. They’re required by the mDot library because it uses the RTOS.

    Even if you got all the source files, I think you’d still run into issues. Your eclipse environment needs to be configured exactly right in order for the build to succeed.

    I think instead of configuring the environment yourself, you should do something similar to this example:

    https://developer.mbed.org/users/c1728p9/notebook/debugging-mbed-50-projects-with-eclipse-and-pyocd/

    This example uses mbed 5.x, but you could do approximately the same with mbed 2.0. You can get the mbed offline sdk (build tools and source code) from:

    https://github.com/ARMmbed/mbed-os

    for now, you’ll need to use an earlier revision as we don’t have full mbed 5.x support for the mDot yet. Check out tag mbed_lib_rev121 with “git checkout mbed_lib_rev121”.

    Our wiki page has some info on how to properly run the workspace tools build and make commands to build mDot projects:

    https://developer.mbed.org/teams/MultiTech/wiki/Using-the-mbed-SDK-for-mDot-development

    Hope this helps!

    Cheers,

    Mike

    Cheers,

    Mike

    #14630
    Damian Christie
    Participant

    Your eclipse environment needs to be configured exactly right in order for the build to succeed.

    That’s the goal!!!

    I just checked my workspace and I appear to already have the RTOS files found here. Are there others I need?

    Thanks.

    #14631
    Mike Fiore
    Blocked

    Damian,

    What I’m saying is that there is a potentially easier and more future proof way of using Eclipse with the mDot and mbed libraries. Did you take a look at the link I posted about using mbed with Eclipse?

    Cheers,

    Mike

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.