这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » IAR工程移植到KEIL下时的种种Bug?

共7条 1/1 1 跳转至

IAR工程移植到KEIL下时的种种Bug?

高工
2013-06-05 22:06:52     打赏

    由于种种原因,不得不由IAR转战KEIL的学习,计划将原来IAR下的工程搬运到KEIL下运行,随之而来的一个问题就是二者的兼容性,不得不说一山容不得二虎啊,种种的Bug,闹心啊!

    1.首先一点就是二者的启动文件不同,习惯了IAR下的自动添加启动文件,而KEIL好像略胜一筹,在选择了器件型号之后自动复制启动文件到工程中。这一点必须要注意啊。

    2、第二个不同点就是二者支持的一些变量类型的特殊字符不同, IAR不识别EXPORT;PUBLIC  PendSV_Handler   /*此处IAR识别PUBLIC,需要进行一下替换方能实现正常的工作,// EXTERN  PendSV_Handler /*若用此语句则会出现重复定义的错误。

    3、就是在汇编下,KEIL不识别“//”的注释语言,需要用“;”来代替,还有就是一系列的编程规则,注释必须顶头写,代码空一格或是一个“Tab”.

    4、另外说一下,uCOSII的由IAR搬运KEIL,直接过来肯定是必挂无疑的,最好参考Micrium 官方原文件,利用Micrium 原文件D:\Micrium\Software\uCOS-II\Ports\arm-cortex-m3\Generic\RealView代替原来IAR下的uCOS-II\Ports中的文件,并略做修改使得工程得以正常运行。完成了keil下的正常运行,实现了预期的功能,在此感谢大牛jobs的指点,在此表示衷心的感谢。

同时将我的移植工程贴出来供大家参考之用。

KEIL4.5.3版本+ST3.5的库+uCOSII2.86版。

Uvision V4_project.zip






关键词: KEIL      UCOSII移植    

高工
2013-06-05 23:01:40     打赏
2楼

如果不愿剔除再添加os_cpu_a.asm文件,也可以在原来IAR下的该文件进行如下的修改:

修改os_cpu_a.asm

将原来的 RSEG CODE:CODE:NOROOT(2)

 改成:

AREA |.text|, CODE, READONLY, ALIGN=2         ;AREA |.text| 选择段 |.text|。

                                                     ;CODE表示代码段,READONLY表示只读(缺省)

                                                     ;ALIGN=2表示4字节对齐。若ALIGN=n,这2^n对齐

THUMB                                         ;Thumb 代码

REQUIRE8                                      ;指定当前文件要求堆栈八字节对齐

PRESERVE8                                     ;令指定当前文件保持堆栈八字节对齐


高工
2013-06-05 23:03:54     打赏
3楼

除此之外os_dbg.c文件还需要做如下的修改:

修改os_dbg.c

由于编译器不同,使用keil时,需要把

#define  OS_COMPILER_OPT  __root

改成:

#define  OS_COMPILER_OPT  //__root

否则会出现如下的BUG:


高工
2013-06-05 23:04:34     打赏
4楼

高工
2013-06-06 00:55:03     打赏
5楼

推荐个比较不错的移植教程吧,一直完了,再回头看这篇文章,觉得相当的亲切啊

jcl-在stm32上用官方函数库移植uCOS-II的总结.pdf


菜鸟
2013-07-24 11:56:01     打赏
6楼

楼主还有在IAR下的工程吗?我正在从KEIL移植到IAR,出了好多错误


院士
2013-07-24 20:05:57     打赏
7楼
如果楼主的英语还好,建议看一下IAR帮助文档里的移植指导教程 。

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]