This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

inaccurate gcc nrf_delay_us

There are a couple problems with the SDK 7.1.0 implementation of nrf_delay_us for GCC. The experiments I've run show the provided version generates delays 40-50% too long, as measured by before/after captures of TIMER0 running with undivided HFCLK.

First, the "static inline" technique does not guarantee inline on gcc. Inlining is critical for the intended delay to be exact. You need to force GNU inline semantics, and add an attribute that makes GCC inline even when not optimizing. (Below I've done that in a way that works with -std=c99.)

Second, implementing the loop control in C instead of assembly also makes the timing dependent on optimization levels.

Third, there are two too many NOPs in the loop body, compared to the other assembly variants.

The code below generates exact delays for me using gcc-arm-none-eabi-4_9-2014q4 for power-of-two (1..2048) delays. There is a constant 7 clock overhead, which probably includes triggering a capture.

extern void inline
__attribute__((__gnu_inline__,__always_inline__))
nrf_delay_us(uint32_t volatile number_of_us)
{
    __ASM volatile (
        "1:\tSUB %0, %0, #1\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "NOP\n\t"
        "BNE 1b\n\t"
        : "+r"(number_of_us)
    );
}
Parents
  • This wasn't a question, but the devzone API apparently lacks a category for "feedback to Nordic, please fix this sometime."

    SDK 8.0.0 has a reworked nrf_delay_us that combines elements of both solutions in this question. I haven't tested it but it looks plausible.

  • Hi pabigot,

    Thanks a lot for your sharing, it is very useful for me with a accurate delay function. it works fine with "make debug" option. But with "make release", it is error when linking, the command link and error message as:

    D:\wireless_UICC_terminal\gcc>make release rm -rf _build mkdir _build "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/wireless_sim_me.c -MF "_build/wireless_sim_me.d" -MT _build/wireless_sim_me.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/wireless_sim_me.o ../source/wireless_sim_me.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/simple_uart.c -MF "_build/simple_uart.d" -MT _build/simple_uart.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/simple_uart.o ../source/simple_uart.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/radio_config.c -MF "_build/radio_config.d" -MT _build/radio_config.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/radio_config.o ../source/radio_config.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/nrf_delay.c -MF "_build/nrf_delay.d" -MT _build/nrf_delay.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/nrf_delay.o ../source/nrf_delay.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/sim_file_structure.c -MF "_build/sim_file_structure.d" -MT _build/sim_file_structure.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/sim_file_structure.o ../source/sim_file_structure.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/transmission_protocol.c -MF "_build/transmission_protocol.d" -MT _build/transmission_protocol.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/transmission_protocol.o ../source/transmission_protocol.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/card_reader.c -MF "_build/card_reader.d" -MT _build/card_reader.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/card_reader.o ../source/card_reader.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/system_nrf51.c -MF "_build/system_nrf51.d" -MT _build/system_nrf51.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/system_nrf51.o ../source/system_nrf51.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -x assembler-with-cpp -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/gcc_startup_nrf51.o gcc_startup_nrf51.s "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -L"C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/lib/gcc/arm-none-eabi/4.9.3/armv6-m" -Xlinker -Map=_build/wireless_sim_me_gcc_xxaa.map -mcpu=cortex-m0 -mthumb -mabi=aapcs -L ./ -Tgcc_nrf51_blank_xxaa.ld --specs=nano.specs -lc -lnosys _build/wireless_sim_me.o _build/simple_uart.o _build/radio_config.o _build/nrf_delay.o _build/sim_file_structure.o _build/transmission_protocol.o _build/card_reader.o _build/system_nrf51.o _build/gcc_startup_nrf51.o -o _build/wireless_sim_me_gcc_xxaa.out C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s: Assembler messages: C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:624: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:654: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:683: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:712: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:741: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:770: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:799: Error: lo register required -- `sub ip,ip,#1' lto-wrapper: C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc returned 1 exit status c:/program files (x86)/gnu tools arm embedded/4.9 2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: lto-wrapper failed collect2.exe: error: ld returned 1 exit status

Reply
  • Hi pabigot,

    Thanks a lot for your sharing, it is very useful for me with a accurate delay function. it works fine with "make debug" option. But with "make release", it is error when linking, the command link and error message as:

    D:\wireless_UICC_terminal\gcc>make release rm -rf _build mkdir _build "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/wireless_sim_me.c -MF "_build/wireless_sim_me.d" -MT _build/wireless_sim_me.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/wireless_sim_me.o ../source/wireless_sim_me.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/simple_uart.c -MF "_build/simple_uart.d" -MT _build/simple_uart.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/simple_uart.o ../source/simple_uart.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/radio_config.c -MF "_build/radio_config.d" -MT _build/radio_config.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/radio_config.o ../source/radio_config.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/nrf_delay.c -MF "_build/nrf_delay.d" -MT _build/nrf_delay.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/nrf_delay.o ../source/nrf_delay.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/sim_file_structure.c -MF "_build/sim_file_structure.d" -MT _build/sim_file_structure.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/sim_file_structure.o ../source/sim_file_structure.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/transmission_protocol.c -MF "_build/transmission_protocol.d" -MT _build/transmission_protocol.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/transmission_protocol.o ../source/transmission_protocol.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/card_reader.c -MF "_build/card_reader.d" -MT _build/card_reader.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/card_reader.o ../source/card_reader.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -M ../source/system_nrf51.c -MF "_build/system_nrf51.d" -MT _build/system_nrf51.o "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_PCA10001 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -ffunction-sections -fdata-sections -fno-strict-aliasing -flto -fno-builtin -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/system_nrf51.o ../source/system_nrf51.c "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -x assembler-with-cpp -DNDEBUG -O3 -I"../include" -I"../include/gcc" -c -o _build/gcc_startup_nrf51.o gcc_startup_nrf51.s "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc" -L"C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/lib/gcc/arm-none-eabi/4.9.3/armv6-m" -Xlinker -Map=_build/wireless_sim_me_gcc_xxaa.map -mcpu=cortex-m0 -mthumb -mabi=aapcs -L ./ -Tgcc_nrf51_blank_xxaa.ld --specs=nano.specs -lc -lnosys _build/wireless_sim_me.o _build/simple_uart.o _build/radio_config.o _build/nrf_delay.o _build/sim_file_structure.o _build/transmission_protocol.o _build/card_reader.o _build/system_nrf51.o _build/gcc_startup_nrf51.o -o _build/wireless_sim_me_gcc_xxaa.out C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s: Assembler messages: C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:624: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:654: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:683: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:712: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:741: Error: lo register required -- sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:770: Error: lo register required --sub ip,ip,#1' C:\Users\JIACHE~1\AppData\Local\Temp\ccsa63jq.s:799: Error: lo register required -- `sub ip,ip,#1' lto-wrapper: C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/bin/arm-none-eabi-gcc returned 1 exit status c:/program files (x86)/gnu tools arm embedded/4.9 2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: lto-wrapper failed collect2.exe: error: ld returned 1 exit status

Children
No Data
Related