在项目应用中,随着代码量的增加,Keil的编译速度实在是难以忍受,虽然最新的Keil版本在编译速度上有了很大的提升,但是在一些地方和IAR还是有一些差距,虽然IAR的兼容性是真的让人头疼,但是项目要求,现在要将一个可运行的Keil工程移植到IAR上。
虽然代码不会更改,但是移植过程还是让很多新手头疼的,现在记录一下移植过程。
我使用的是stm32F103REt6 使用的是标准库V3.5.0 FreeRtos V8.2.1
现在我们的cubmx已经很好用了,可以直接生成工程,但是有时开发项目对IAR的版本及RTOS的版本有要求,而且目前使用的都是stm32的HAL库。目前只说移植方法,不纠结更好的工具。
首先在将我们的文件都移植到IAR工程中。
1.右键项目名称--》options--》General Options--》target,选择自己的芯片
2.在options-->c/C++ compiler-->Preprocessor中
添加上自己各个文件夹的路径,不然会因为找不到指定文件而报错的。
同时Defined symbols 添加宏定义
USE_STDPERIPH_DRIVER
STM32F10X_HD(是MD,HD根据芯片选择)
3.Assembler-->Preprocessor中
添加上FreeRtosConfig.h所在的路径,不然.s文件会报一个找不到该文件的错误
4.linker中添加上我们的.icf文件路径
在我们的keil中我们可能没有这个文件,那么这个文件从哪去找呢??
在我们下载的st标准库3.50的这个路径下可以找到
W_STM32054_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM
.icf中定义了定义了芯片存储空间的大小,ROM的大小和起始、结束地址。
,定义RAM的大小和起始、结束地址。
所以这个文件是十分重要的。
5.Freertos相关文件的复制,具体的可以看一下我之前写的FreeRTos的移植方法。但是这里出现问题了,本能的将Keil下的rtos相关文件移植到IAR下,编译出现了很多报错,主要集中在port.c中,这个文件是平台相关的文件,keil的和IAR的这个文件是不一样的,故从FreeRtos v8.1.0的源码中找到IAR适配的文件复制到该路径下进行替换
FreeRTOSV8.2.1\FreeRTOSV8.2.1\FreeRTOS\Source\portable\IAR\ARM_CM3
其他的配置如debug的都是常规的不细说了。
6.如果你想在之前的项目上直接更改变成新的项目,需要改项目名称
只需要在你的IAR工程路径下\toolchain\EWARM
将这几个格式的文件以Text的格式打开,然后修改里面的标题,然后在将他们本身在重命名一下就可以了。
注:需要标准库3.5.0的和Freertos V8.1.0包的可以留言邮箱
lzs_blog 原创文章 109获赞 51访问量 3万+ 关注 私信 展开阅读全文