1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > keil工程 freertos AC5编译器移植到AC6编译器

keil工程 freertos AC5编译器移植到AC6编译器

时间:2019-06-18 07:00:22

相关推荐

keil工程 freertos AC5编译器移植到AC6编译器

keil工程 freertos AC5编译器移植到AC6编译器

本文基于正点原子的rtos工程进行移植。

打开工程,将其更换为AC6编译器,然后点击编译

编译完成之后,我们可以看到有很多的错误,这里要先改基本的文件。

具体的可以参考这篇文章,本文不再过多赘述。

keil5工程 AC5 编译器升级 AC6编译器

在按照上述文章做了修改之后,再次编译

可以看到错误明显的变少了,这里的报错需要从源文件动手,因为AC5用的是GCC编译,AC6用的是clang编译,我们需要源文件的移植。

把上面这些文件复制过去,再次编译

可以看到错误又减少了很多,接下来打开port.c文件,可以看到有很多的错误

把这个函数换成下面这个

void xPortPendSVHandler( void ){/* This is a naked function. */__asm volatile("mrs r0, psp\n""isb\n""\n""ldrr3, pxCurrentTCBConst\n" /* Get the location of the current TCB. */"ldrr2, [r3]\n""\n""tst r14, #0x10\n" /* Is the task using the FPU context? If so, push high vfp registers. */"it eq\n""vstmdbeq r0!, {s16-s31}\n""\n""stmdb r0!, {r4-r11, r14}\n" /* Save the core registers. */"str r0, [r2]\n" /* Save the new top of stack into the first member of the TCB. */"\n""stmdb sp!, {r0, r3}\n""mov r0, %0 \n""msr basepri, r0\n""dsb\n""isb\n""bl vTaskSwitchContext\n""mov r0, #0\n""msr basepri, r0\n""ldmia sp!, {r0, r3}\n""\n""ldr r1, [r3]\n" /* The first item in pxCurrentTCB is the task top of stack. */"ldr r0, [r1]\n""\n""ldmia r0!, {r4-r11, r14}\n" /* Pop the core registers. */"\n""tst r14, #0x10\n" /* Is the task using the FPU context? If so, pop the high vfp registers too. */"it eq\n""vldmiaeq r0!, {s16-s31}\n""\n""msr psp, r0\n""isb\n""\n"#ifdef WORKAROUND_PMU_CM001 /* XMC4000 specific errata workaround. */#if WORKAROUND_PMU_CM001 == 1"push { r14 }\n""pop { pc }\n"#endif#endif"\n""bx r14\n""\n"".align 4\n""pxCurrentTCBConst: .word pxCurrentTCB\n"::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY));}

当然还有这里,

凡是遇到这种函数报错,全部换成上面或者下面的这种形式,之后也是如此,不再赘述。

static void vPortEnableVFP( void ){__asm volatile("ldr.w r0, =0xE000ED88\n" /* The FPU enable bits are in the CPACR. */"ldr r1, [r0]\n""\n""orr r1, r1, #( 0xf << 20 )\n" /* Enable CP10 and CP11 coprocessors, then save back. */"str r1, [r0]\n""bx r14");}

共计修改四个文件,有两个文件参考上面那篇文章修改,本文修改了两个文件。

修改这两个文件完成之后编译。

可以看到AC6编译零错误零警告。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。