OpenEdv-开源电子网

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

怎么在驱动层支持浮点运算

[复制链接]

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
发表于 2020-3-27 12:08:33 | 显示全部楼层 |阅读模式
最近搞一个驱动需要用到浮点运算。
但是linux浮点运算有些问题:
ccflags-y += -mfloat-abi=softfp
ccflags-y += -mfpu=vfpv3-fp16
ccflags-y += -mfpu=vfpv3-d16-fp16

编译不出问题但是在驱动启动的过程中会出现如下错误:
BUG: FP instruction issued in kernel mode with FP unit disabled
Internal error: Oops - undefined instruction: 0 [#1] PREEMPT SMP ARM




微信截图_20200327120743.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-3-27 12:22:46 | 显示全部楼层
驱动程序里边不要用浮点数
森罗万象
回复 支持 反对

使用道具 举报

2

主题

172

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3141
金钱
3141
注册时间
2014-11-29
在线时间
183 小时
发表于 2020-3-27 12:37:32 | 显示全部楼层
路过………………
回复 支持 反对

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2020-3-27 13:06:11 | 显示全部楼层
xiaotaotao 发表于 2020-3-27 12:22
驱动程序里边不要用浮点数

但是这不合理啊,一些计算也需要用到浮点数的啊,毕竟芯片是支持硬件浮点数的。
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2013-9-23
在线时间
97 小时
发表于 2020-3-27 14:29:55 | 显示全部楼层
好像要弄NEON这个玩意,好像是内核移植编译要加入这个,具体什么弄没有整过
回复 支持 反对

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-27 14:40:44 | 显示全部楼层
在驱动指南里搜索“浮点”,-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2020-3-27 16:15:07 | 显示全部楼层
ou513 发表于 2020-3-27 14:29
好像要弄NEON这个玩意,好像是内核移植编译要加入这个,具体什么弄没有整过

是移植内核,还是直接在驱动模块添加,内核移植没试过,但是在驱动模块里面添加过NEON,虽然能编译,但是生成的烧录文件不能用MfgTool2工具烧录。
回复 支持 反对

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2020-3-27 16:15:58 | 显示全部楼层
茂茂2019 发表于 2020-3-27 14:40
在驱动指南里搜索“浮点”,-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard

能具体说一下,怎么设置吗?
回复 支持 反对

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-27 16:46:21 | 显示全部楼层
汪志鹏 发表于 2020-3-27 16:15
能具体说一下,怎么设置吗?

编译时候加上这些参数,看一下教程
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2013-9-23
在线时间
97 小时
发表于 2020-3-27 21:25:59 | 显示全部楼层
汪志鹏 发表于 2020-3-27 16:15
能具体说一下,怎么设置吗?

具体什么弄我不也不清楚,没玩过,不过好像就是要整个玩意就可以支持浮点,你自己查一下资料研究一下,
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-3-28 09:51:52 | 显示全部楼层
一般都不建议在内核里面用浮点,可以在应用程序用
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

21

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
449
金钱
449
注册时间
2018-10-19
在线时间
147 小时
 楼主| 发表于 2020-3-28 17:34:31 | 显示全部楼层
zuozhongkai 发表于 2020-3-28 09:51
一般都不建议在内核里面用浮点,可以在应用程序用

在文档里面看到"-march-armv7-a -mfpu-neon -mfloat=hard",但是怎么在驱动里面添加呢?
做的电池模块,linux + andorid,对安卓的接口都是固定。

不知道是只要改对应模块的makefile,还是要改整个内核

subdir-ccflags-$(CONFIG_POWER_SUPPLY_DEBUG) := -DDEBUG

power_supply-y                                := power_supply_core.o
power_supply-$(CONFIG_SYSFS)                += power_supply_sysfs.o
power_supply-$(CONFIG_LEDS_TRIGGERS)        += power_supply_leds.o

obj-$(CONFIG_POWER_SUPPLY)        += power_supply.o
obj-$(CONFIG_GENERIC_ADC_BATTERY)        += generic-adc-battery.o

obj-$(CONFIG_PDA_POWER)                += pda_power.o
obj-$(CONFIG_APM_POWER)                += apm_power.o
obj-$(CONFIG_AXP20X_POWER)        += axp20x_usb_power.o
obj-$(CONFIG_MAX8925_POWER)        += max8925_power.o
obj-$(CONFIG_WM831X_BACKUP)        += wm831x_backup.o
obj-$(CONFIG_WM831X_POWER)        += wm831x_power.o
obj-$(CONFIG_WM8350_POWER)        += wm8350_power.o
obj-$(CONFIG_TEST_POWER)        += test_power.o
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 09:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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