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"" 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编译器相关推荐
- keil工程 freertos+emwin AC5编译器移植到AC6编译器
keil工程 freertos+emwin AC5编译器移植到AC6编译器 本文基于正点原子的rtos工程进行移植. 打开工程,将其更换为AC6编译器,然后点击编译 编译完成之后,如下图,可以看到有很 ...
- STM32F4 之 keil 工程建立
注:该文是对自己搭建 keil 工程所做精简记录,详细内容可参考<STM32F4开发指南-库函数版本_V1.1> 1 下载 pack 包 在 MDK5 安装完成后,要让 MDK5 支持 S ...
- 灵动微电子MM32F0010A,替换STM32芯片,keil工程建立
1.正常KEIL中找不到灵动微电子芯片,灵动微官网下载PACK包,地址如下: http://www.mindmotion.com.cn/download.aspx?cid=2546 下载完后解压,选择 ...
- keil5工程 AC5 编译器升级 AC6编译器
keil5工程 AC5 编译器升级 AC6编译器 1.概述 2.移植 1.概述 传统keil mdk的编译速度远远落后于IAR,但自从keil新版发布之后,AC6编译器要超过了IAR的编译速度,接下来 ...
- 【软件入门】Keil:从AC5到AC6
Keil:从AC5到AC6 前一阵安装了新版本的Keil,搭配CubeMX使用没有出现什么问题.但是今天查看以前代码的时候发现了一个很尴尬的问题,编译莫名其妙会出现很多问题.先把问题复现一下,在后面会 ...
- CUBEMX+FreeRTOS使用ArmComplier6(AC6)编译器的设置方法
最新的 KEIL MDK 5.37版本不再内置ArmComplier5(AC5)编译器, 笔者决定尝试将cubemx生成的FreeRTOS工程迁移至ArmComplier6(AC6)编译器.由于AC5 ...
- STM32cube 生成freertos 使用AC6编译器编译
cubemx 5.6 keil 5.29 一.使用stm32cubemx使能FreeRTOS 二.打开新建完成的KEIL工程(版本5.29),点击RTT选项 三.在RTT配置界面下,将RTOS选 ...
- STM32不同型号单片机keil工程移植说明
STM32系列单片机如果库函数开发的话,那么不同型号单片机的工程是可以直接移植的.这样的话如果项目中更换了芯片,工程就可以直接移植过去,不用重新编写.这样就节约了很多时间. 下面说一下如何将 在STM ...
- Keil5使用AC6编译器
Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法 KEIL AC5到AC6需要注意的地方 从AC5移植到AC6 解决流程 关键步骤 最近同事咨询改用keil的最新版本编译器编译原来的 ...
最新文章
- 【转】Java中关于异常处理的十个最佳实践
- [C#1] 10-事件
- AChartEngine绘制图形
- Android之在ubuntu上过滤多条关键字日志
- P3329-[ZJOI2011]最小割【最小割树】
- php微信获取mediaid超出限制_Python实现每日微信自动打卡
- .net 下URL重写
- java获取公网ip_动态IP变固定IP,国内IP变海外IP,助力企业数据传输提高工作效率...
- php远程simplexml_load_string()出错,PHP simplexml_load_string无法正常工作
- XGBoost原理及在Python中使用XGBoost
- 找出符合下图的互联网产品实例
- C# 值类型和引用类型
- 36-基于51单片机的LED彩灯控制器设计
- python支持按指定字符串分割成数组_如何将js字符串分割指定的标签组成数组
- padavan mysql密码_[教程][搭建网站网盘] Padavan固件一键安装ONMP搭建Web环境,网站,网盘,相册等...
- 全流程东方时尚C1考试经历
- 对抗机器学习论文-Towards Deep Learning Models Resistant to Adversarial Attacks(PGD)
- sql server 使用 top WITH TIES
- php pdo 与对比mysql,php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例...
- java虚拟机栈(亦篇足以,吴懈可击)