硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2501|回复: 28
收起左侧

[其它] 大家试试浮点库Qfplib测试效果

  [复制链接]

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2022-3-8 07:52:51 | 显示全部楼层 |阅读模式
本帖最后由 em78p156 于 2022-3-8 14:09 编辑

https://www.armbbs.cn/forum.php?mod=viewthread&tid=111292
看到老师在《安富莱嵌入式周报》第255期介绍的浮点库Qfplib。
我在原贴没法回复,在这开新帖讲一下:
测试了下我用的是国产M0,主频32MHz,调用atan2()是超过700us,调用qfp_fatan2()只需40us。
附件是把汇编转成的库,大家可以在keil中测试一下M0的速度。
1.png

libafplib.a

15.93 KB, 下载次数: 40

m0浮点运算库

qfplib-m0-full.h

3.51 KB, 下载次数: 25

m0浮点运算库头文件

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-8 09:28:57 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-8 09:29:30 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-8 10:33:40 | 显示全部楼层
请问大佬是怎么转成MDK能编译的文件啊?
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 12:15:30 | 显示全部楼层
汇编是gnu的格式,所以用arm-none-eabi-ar把汇编文件编译成.a文件,然后再keil中调用
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 12:20:44 | 显示全部楼层
回复内容马上看不到的呀
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-8 13:14:04 | 显示全部楼层
em78p156 发表于 2022-3-8 12:15
汇编是gnu的格式,所以用arm-none-eabi-ar把汇编文件编译成.a文件,然后再keil中调用

ok,我去试试看
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-8 13:32:41 | 显示全部楼层
本帖最后由 blackfire531 于 2022-3-8 13:35 编辑
em78p156 发表于 2022-3-8 12:15
汇编是gnu的格式,所以用arm-none-eabi-ar把汇编文件编译成.a文件,然后再keil中调用

我试了,怎么编译还是不成功啊。
用下边两个命令
arm-none-eabi-gcc -c qfplib-m3.s
arm-none-eabi-ar -rc qfplib-m3.a qfplib-m3.o
确实生成了qfplib-m3_gcc.a文件,但是包含进工程之后,在asm选项里,选择了所有编译风格,每个都有error,求大佬指点!
我用的IDE是MDK 5.35,AC6编译器。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-8 13:55:50 | 显示全部楼层
blackfire531 发表于 2022-3-8 13:32
我试了,怎么编译还是不成功啊。
用下边两个命令
arm-none-eabi-gcc -c qfplib-m3.s

知道了,静态库不能像C文件一样包含,直接在linker选项卡的misc controls里添加.a库的路径就可以。
无标题.png

包含头文件之后可以直接调用里边的函数了,三角函数的参数应该是弧度吧,没找到详细说明。
qfplib-m3.h (1.28 KB, 下载次数: 9) qfplib-m3_gcc.a (13.82 KB, 下载次数: 18)




回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 14:09:49 | 显示全部楼层
blackfire531 发表于 2022-3-8 13:32
我试了,怎么编译还是不成功啊。
用下边两个命令
arm-none-eabi-gcc -c qfplib-m3.s

我用keil设置gcc编译的,汇编代码要增加一条指令 .eabi_attribute Tag_ABI_align_preserved, 1
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 14:12:52 | 显示全部楼层
是弧度,atan2()从-3.1415926 ~ 3.1415926
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 14:15:18 | 显示全部楼层
blackfire531 发表于 2022-3-8 13:55
知道了,静态库不能像C文件一样包含,直接在linker选项卡的misc controls里添加.a库的路径就可以。

可以比较下M3上两种浮点速度
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-8 14:44:26 | 显示全部楼层
em78p156 发表于 2022-3-8 14:09
我用keil设置gcc编译的,汇编代码要增加一条指令 .eabi_attribute Tag_ABI_align_preserved, 1

我用的是AC6,编译的时候没有报错,是否还要在汇编前增加这个语句啊?
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2022-3-8 15:01:32 | 显示全部楼层
blackfire531 发表于 2022-3-8 14:44
我用的是AC6,编译的时候没有报错,是否还要在汇编前增加这个语句啊?

这句是告诉编译器函数堆栈以8字节对齐。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-9 18:25:33 | 显示全部楼层
em78p156 发表于 2022-3-8 15:01
这句是告诉编译器函数堆栈以8字节对齐。

测了一天,这个库还挺好的。把三角函数相关函数代替之后,cpu占用率明显下降!
回复

使用道具 举报

73

主题

1194

回帖

1413

积分

至尊会员

积分
1413
发表于 2022-3-9 19:41:40 | 显示全部楼层
直接上传一个工程模版呗
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2022-3-9 20:13:28 | 显示全部楼层
做了一个F103ZET的MDK工程模板,用CubeMX生成的,只配置了时钟为72MHz,其他没添加,AC6编译器,编译正常,Main文件主循环里有三角函数的使用,有需求的人可以测试一下。 F103_qfplib.rar (8.22 MB, 下载次数: 40)




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-10 01:29:32 | 显示全部楼层
blackfire531 发表于 2022-3-9 20:13
做了一个F103ZET的MDK工程模板,用CubeMX生成的,只配置了时钟为72MHz,其他没添加,AC6编译器,编译正常, ...

谢谢分享。
回复

使用道具 举报

6

主题

638

回帖

656

积分

金牌会员

积分
656
QQ
发表于 2022-3-10 20:46:07 | 显示全部楼层
感谢分享。。。
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2022-3-11 01:59:24 | 显示全部楼层
不带硬浮点的M33是属于M3吗?规格书说是M33,但FAE说没硬浮点
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-11 09:44:23 | 显示全部楼层
kirito 发表于 2022-3-11 01:59
不带硬浮点的M33是属于M3吗?规格书说是M33,但FAE说没硬浮点

有那种不带硬件浮点的,是可选的。像M4就有M4F和M4。
回复

使用道具 举报

21

主题

125

回帖

188

积分

初级会员

积分
188
发表于 2022-3-11 11:15:34 | 显示全部楼层
是哪一个?
image.png
回复

使用道具 举报

0

主题

18

回帖

18

积分

新手上路

积分
18
发表于 2022-3-13 13:15:59 | 显示全部楼层
请问使用AC6的话 文件ASM选项卡 Assemler Option 选择GNU Syntax是不是就不用编译成库了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-13 16:29:03 | 显示全部楼层

ARMCM33
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-13 16:29:13 | 显示全部楼层
hustkema 发表于 2022-3-13 13:15
请问使用AC6的话 文件ASM选项卡 Assemler Option 选择GNU Syntax是不是就不用编译成库了?

测试过,不行。
回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2022-3-16 15:07:25 | 显示全部楼层

硬汉大佬,这个必须使用 GCC才能编译吗。有没有简化简易的操作。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-16 15:46:05 | 显示全部楼层
终极菜鸟 发表于 2022-3-16 15:07
硬汉大佬,这个必须使用 GCC才能编译吗。有没有简化简易的操作。

楼主位,作者那种做了个.a库文件也可以。
回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2022-3-16 16:23:33 | 显示全部楼层
eric2013 发表于 2022-3-16 15:46
楼主位,作者那种做了个.a库文件也可以。

那就是使用库,绕开GCC环境?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2022-3-16 16:30:57 | 显示全部楼层
终极菜鸟 发表于 2022-3-16 16:23
那就是使用库,绕开GCC环境?

对,就是通过这么个操作实现的。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 21:53 , Processed in 0.270797 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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