OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6772|回复: 5

UCOSIII keil compiler 6.10 移植笔记

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-12-11
在线时间
5 小时
发表于 2018-12-16 10:35:06 | 显示全部楼层 |阅读模式
昨天尝试用CubeMx生成FreeRTOS, 使用编译器6.10编译失败,忙活了小半天也没搞出来, 今儿寻思着换个系统用UCOSIII, 终于搞出来了, 以下是移植记录:
1. 为什么非要用6.10呢?
首先是因为快, HAL库我用V5版本全编译一遍要3分钟, 用V6只需要30s
其次是因为超级智能的错误提示, 从下面的例子中就能看出来, 新版本编译器的错误提示简直是神了
2.我用的例程:
是原子H7拓展例程->UCOS拓展例程->例4-1 UCOSIII移植
修改编译器6.10后,出现一些警告和报错,下面一步步解决:
1. 警告解决:
这里发现例程中一个宏定义错误, 新的编译器很智能的提出来了(V5版本就没有)

../HALLIB/STM32H7xx_HAL_Driver/Inc\stm32h7xx_hal_usart.h(39):warning: '__STM32H7xx_HAL_USART_H' is used as a header guard here, followed by#define of a different macro [-Wheader-guard]

../HALLIB/STM32H7xx_HAL_Driver/Inc\stm32h7xx_hal_usart.h(40):note: '__STM3H7xx_HAL_USART_H' is defined here; did you mean'__STM32H7xx_HAL_USART_H'?

观察警告代码发现:
1.png

修改为正确的宏定义即可(PS.我发现原子不少的例程中这里的宏定义都是错的, 希望什么时候能改一下)
2. 错误解决:
2.1 编译器语法差别:
观察到错误:
8.png

这里涉及到了V5和V6编译器支持的语法不同,
2.png

所以需要在options里面把宏定义替换一下:
在Misc Controls中填入:

[mw_shl_code=c,true]-D__align(x)="__attribute__((aligned(x)))" -D__weak="__attribute__((weak))" -D__INLINE="__inline__"[/mw_shl_code]

3.png


2.2 printf报错解决:
       4.png

观察到__FILE出现了重定义错误,本着能用就行的原则, 直接删掉例程中相关的代码即可:
5.png

2.3 未定义__isb解决:
再次编译, 报错如下:

..\OBJ\Template.axf:Error: L6218E: Undefined symbol __isb (referred from os_core.o).

搜索Keil官网相关文档(http://www.keil.com/support/man/docs/armclang_mig/armclang_mig_vvi1464869837179.htm),
发现__isb在arm_acle.h中支持,故在报错文件os_cpu.h中添加arm_acle.h即可:
6.png

2.4 再次编译
       7.png

无错误, 无警告, 使用阿波罗核心板测试例程,闪灯无问题, 更多例程将来有机会再测试

UCOSIII移植.zip

2.5 MB, 下载次数: 57

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

16

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4606
金钱
4606
注册时间
2018-11-3
在线时间
294 小时
发表于 2018-12-19 19:22:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2015-6-23
在线时间
110 小时
发表于 2018-12-21 19:04:41 来自手机 | 显示全部楼层
要试试新版本看看。
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2013-12-25
在线时间
18 小时
发表于 2019-1-12 11:58:28 | 显示全部楼层
ucos弄好了。。。cubemx生成的工程能直接用V6不?
回复 支持 反对

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2019-1-17 17:18:02 | 显示全部楼层
确实牛逼呀
回复 支持 反对

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2019-1-17 17:18:53 | 显示全部楼层
roguebear 发表于 2019-1-12 11:58
ucos弄好了。。。cubemx生成的工程能直接用V6不?

貌似是先使用 cubemx 生成工程,之后再移植 ucos 吧,因为 cubemx 不支持 ucos
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 00:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表