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""  ldr r3, pxCurrentTCBConst           \n" /* Get the location of the current TCB. */"   ldr r2, [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编译零错误零警告。

keil工程 freertos AC5编译器移植到AC6编译器相关推荐

  1. keil工程 freertos+emwin AC5编译器移植到AC6编译器

    keil工程 freertos+emwin AC5编译器移植到AC6编译器 本文基于正点原子的rtos工程进行移植. 打开工程,将其更换为AC6编译器,然后点击编译 编译完成之后,如下图,可以看到有很 ...

  2. STM32F4 之 keil 工程建立

    注:该文是对自己搭建 keil 工程所做精简记录,详细内容可参考<STM32F4开发指南-库函数版本_V1.1> 1 下载 pack 包 在 MDK5 安装完成后,要让 MDK5 支持 S ...

  3. 灵动微电子MM32F0010A,替换STM32芯片,keil工程建立

    1.正常KEIL中找不到灵动微电子芯片,灵动微官网下载PACK包,地址如下: http://www.mindmotion.com.cn/download.aspx?cid=2546 下载完后解压,选择 ...

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

    keil5工程 AC5 编译器升级 AC6编译器 1.概述 2.移植 1.概述 传统keil mdk的编译速度远远落后于IAR,但自从keil新版发布之后,AC6编译器要超过了IAR的编译速度,接下来 ...

  5. 【软件入门】Keil:从AC5到AC6

    Keil:从AC5到AC6 前一阵安装了新版本的Keil,搭配CubeMX使用没有出现什么问题.但是今天查看以前代码的时候发现了一个很尴尬的问题,编译莫名其妙会出现很多问题.先把问题复现一下,在后面会 ...

  6. CUBEMX+FreeRTOS使用ArmComplier6(AC6)编译器的设置方法

    最新的 KEIL MDK 5.37版本不再内置ArmComplier5(AC5)编译器, 笔者决定尝试将cubemx生成的FreeRTOS工程迁移至ArmComplier6(AC6)编译器.由于AC5 ...

  7. STM32cube 生成freertos 使用AC6编译器编译

    cubemx 5.6    keil 5.29 一.使用stm32cubemx使能FreeRTOS 二.打开新建完成的KEIL工程(版本5.29),点击RTT选项 三.在RTT配置界面下,将RTOS选 ...

  8. STM32不同型号单片机keil工程移植说明

    STM32系列单片机如果库函数开发的话,那么不同型号单片机的工程是可以直接移植的.这样的话如果项目中更换了芯片,工程就可以直接移植过去,不用重新编写.这样就节约了很多时间. 下面说一下如何将 在STM ...

  9. Keil5使用AC6编译器

    Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法 KEIL AC5到AC6需要注意的地方 从AC5移植到AC6 解决流程 关键步骤 最近同事咨询改用keil的最新版本编译器编译原来的 ...

最新文章

  1. 【转】Java中关于异常处理的十个最佳实践
  2. [C#1] 10-事件
  3. AChartEngine绘制图形
  4. Android之在ubuntu上过滤多条关键字日志
  5. P3329-[ZJOI2011]最小割【最小割树】
  6. php微信获取mediaid超出限制_Python实现每日微信自动打卡
  7. .net 下URL重写
  8. java获取公网ip_动态IP变固定IP,国内IP变海外IP,助力企业数据传输提高工作效率...
  9. php远程simplexml_load_string()出错,PHP simplexml_load_string无法正常工作
  10. XGBoost原理及在Python中使用XGBoost
  11. 找出符合下图的互联网产品实例
  12. C# 值类型和引用类型
  13. 36-基于51单片机的LED彩灯控制器设计
  14. python支持按指定字符串分割成数组_如何将js字符串分割指定的标签组成数组
  15. padavan mysql密码_[教程][搭建网站网盘] Padavan固件一键安装ONMP搭建Web环境,网站,网盘,相册等...
  16. 全流程东方时尚C1考试经历
  17. 对抗机器学习论文-Towards Deep Learning Models Resistant to Adversarial Attacks(PGD)
  18. sql server 使用 top WITH TIES
  19. php pdo 与对比mysql,php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例...
  20. java虚拟机栈(亦篇足以,吴懈可击)

热门文章

  1. Connext DDSQoS参考
  2. 教你如何用腾讯云服务器备案
  3. android pc 模拟器哪个好,安卓模拟器电脑版哪个好?
  4. 特斯拉神器TeslaMate一键安装,终于来了
  5. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解
  6. java筆試題,Java筆試題附答案 | 學步園
  7. python无向加权图_NetworkX:无向加权图的近似/不精确子图同构
  8. ABAQUS运行问题总结
  9. 第七章第八章思维导图
  10. 基于搜狗微信爬取微信公众号的文章