[AutoSar] S12XS 与Codewarrior v5.x 添加浮点数支持

本文档介绍了在开发ASW应用软件时遇到的TC397复位和ERROR代码问题,问题根源在于缺少浮点数运算支持。通过修改工程的库文件和编译器设置,可以分别实现32位和64位浮点数的支持。对于32位浮点数,需要将库文件从ansixbi.lib更改为ansixb.lib并移除-D__NO_FLOAT__选项;而要支持64位浮点数,还需将库文件改为ansixbf.lib并添加-Cf编译器选项。
摘要由CSDN通过智能技术生成

背景

最近开发ASW应用软件,系统集成的朋友反馈TC397复位,并且ERROR代码提示未栈错误。
可能是溢出了,但是我自己是没有397完整的工程,于是想用Codewarrior 在S12XS上面运行ASW软件。ASW涉及到了浮点数的运算,于是报错:没有声明相关浮点数运动的函数。于是原来是我初始化工程时没有选择支持浮点数。

在这里插入图片描述

细节原因

工程有没浮点数支持的差别就是库文件xxxxxx.lib不同,以及编译器选项中有一些差别,所以可以直接对原工程进行修改来添加浮点数支持。

浮点数支持有两种:

  • 一种只支持32位的;
  • 另一种float为32位,double为64位。

具体来说:

32位浮点数的支持

如果要将工程改成全32位浮点数的,需要把原先的工程中的ansixbi.lib库文件
在这里插入图片描述

改成ansixb.lib
在这里插入图片描述

这些库文件的位置都在 “(安装路径)\Freescale\CWS12v5.1\lib\hc12c\lib”。

然后,打开 Edit->Standard Settings->Compiler for HC12 删除 -D__NO_FLOAT__
在这里插入图片描述
在这里插入图片描述

这样就实现了对32位浮点数的支持。

64位浮点数的支持

如果还要实现对64位浮点数的支持,那就得把库文件改为ansixbf.lib
在这里插入图片描述

然后除了删除-D__NO_FLOAT__外,还得在编译器选项中加入-Cf
在这里插入图片描述

然后就可以使用浮点数了。

参考

https://blog.csdn.net/lin_strong/article/details/105795003

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值