We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I tried to switch my compiler from ARM V5 to V6, and I faced a inline assembly funciton conversion issue:
[Original]
DATA_RAM_FUNCTION __asm void prvEnableVFP_RTT(void) { PRESERVE8 /* The FPU enable bits are in the CPACR. */ ldr.w r0, = 0xE000ED88 ldr r1, [r0] /* Enable CP10 and CP11 coprocessors, then save back. */ // orr r1, r1, #( 0xf << 20 ) orr r1, r1, #0xf00000 str r1, [r0] bx r14 nop }
[After Conversion]
DATA_RAM_FUNCTION void prvEnableVFP_RTT(void) { __asm volatile( ".eabi_attribute Tag_ABI_align_preserved, 1 \n" "ldr.w r0, = %0 \n" "ldr r1, [r0] \n" "orr r1, r1, #0xf00000 \n" "str r1, [r0] \n" "bx r14 \n" "nop \n" : /* no outputs */ : "r"(0xE000ED88) : "r0", "r1", "r14" ); }
There is a error:
./.rtt-studio/Debug\rtthread.axf: Error: L6218E: Undefined symbol r2 (referred from lto-llvm-293411.o).
What's going wrong?
And fnially I found that project is past project, so some image in flash are not compatible(in the correct memory address) with defined address in code.