硬汉嵌入式论坛

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

[μCOS-II] UCOS II异常

[复制链接]

81

主题

735

回帖

978

积分

金牌会员

积分
978
发表于 2024-5-11 20:23:04 | 显示全部楼层 |阅读模式
同样的移植模板,同样是Cortex-M4的内核。有的没加下面的代码执行浮点运算不会异常

[Asm] 纯文本查看 复制代码
	    IF {FPU} != "SoftVFP"
				
		LDR.W   R0,=0xE000ED88
		LDR     R1,[R0]
		ORR     R1, R1,#(0xF<<20)
				 
		STR     R1,[R0]
		DSB
				 
		LDR.W   R0,=0xE000EF34
		LDR     R1,[R0]
		AND     R1,#(0x3FFFFFFF)
		STR     R1,[R0]
		ISB
		ENDIF

有的对浮点数赋值,在任务切换到高优先级任务的时候出现硬件错误。有大佬知道为啥吗?
回复

使用道具 举报

81

主题

735

回帖

978

积分

金牌会员

积分
978
 楼主| 发表于 2024-5-11 20:30:55 | 显示全部楼层
另外关系CP10和CP11,即使没有上边的代码,在SystemInit函数也设置了呀,为啥在Reset_Handler最前面设置才有作用呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2024-5-12 08:52:56 | 显示全部楼层
关于uCOS-II的浮点问题,改版过很多次了,推荐使用最终的port文件

https://www.armbbs.cn/forum.php?mod=viewthread&tid=96928
回复

使用道具 举报

81

主题

735

回帖

978

积分

金牌会员

积分
978
 楼主| 发表于 2024-5-12 10:19:22 | 显示全部楼层
eric2013 发表于 2024-5-12 08:52
关于uCOS-II的浮点问题,改版过很多次了,推荐使用最终的port文件

https://www.armbbs.cn/forum.php?mod ...

老项目了,换系统和配置文件估计得经过一群大佬同意,估计够呛。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2024-5-12 16:40:09 | 显示全部楼层
庄永 发表于 2024-5-12 10:19
老项目了,换系统和配置文件估计得经过一群大佬同意,估计够呛。

你们这个工程用的那个版本,我看下我这边有对应的版本不
回复

使用道具 举报

81

主题

735

回帖

978

积分

金牌会员

积分
978
 楼主| 发表于 2024-5-12 17:12:59 | 显示全部楼层
eric2013 发表于 2024-5-12 16:40
你们这个工程用的那个版本,我看下我这边有对应的版本不

2.92,应该是支持Lazy Stacking的,我看了移植文件也是做了支持的,不知道为啥不行
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2024-5-13 10:24:17 | 显示全部楼层
这个是2.92的例子,做了多任务的浮点测试,版本2.92


V6-801_uCOS-II实验_开启FPU(官方方案).rar (7.85 MB, 下载次数: 6)
回复

使用道具 举报

81

主题

735

回帖

978

积分

金牌会员

积分
978
 楼主| 发表于 2024-5-13 11:39:53 | 显示全部楼层
eric2013 发表于 2024-5-13 10:24
这个是2.92的例子,做了多任务的浮点测试,版本2.92

官方是关闭了Lazy Stacking的,感觉不优,浪费硬件提供的自动压栈功能。

另外我比较疑惑,不管开不开Lazy Satcking,我看原来的移植文件都是将浮点数所有寄存器压入任务栈的,为啥不关闭会触发硬件异常
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2024-5-13 11:55:37 | 显示全部楼层
庄永 发表于 2024-5-13 11:39
官方是关闭了Lazy Stacking的,感觉不优,浪费硬件提供的自动压栈功能。

另外我比较疑惑,不管开不开L ...

1、关于uCOS的浮点问题,有个完整的进化过程的,此贴做了说明
https://www.armbbs.cn/forum.php?mod=viewthread&tid=18010

2、三楼那个2.93版本是最终的Port版本开了lazy stacking特性的。七楼发的那个是他们中间过渡阶段出的一个方案,没有用lazy stacking,是整体入栈出栈处理的。

3、最早时候,我们也做过一个port 硬件fpu方案,也比较简单易用,开的lazy stacking,在原port的基础了简单修改,加入浮点入栈出栈处理了

V5-800_uCOS-II实验_任务的挂机,恢复,及其删除.rar (6.09 MB, 下载次数: 3)



回复

使用道具 举报

81

主题

735

回帖

978

积分

金牌会员

积分
978
 楼主| 发表于 2024-5-13 12:02:37 | 显示全部楼层
eric2013 发表于 2024-5-13 11:55
1、关于uCOS的浮点问题,有个完整的进化过程的,此贴做了说明
https://www.armbbs.cn/forum.php?mod=vie ...

不管开不开Lazy Stacking,只要软件自己对FPSCR和S0~S31管理,我感觉都不应该出问题,软件自己对这几个寄存器管理了,不关Lazy Staxking出问题,大佬有知道为什么吗
回复

使用道具 举报

20

主题

398

回帖

458

积分

高级会员

积分
458
发表于 2024-5-13 12:02:48 | 显示全部楼层
浮点设置:1. 软件要开启;2.硬件同时也要开启。
A. 只开硬件,不开软件,没问题(编译器不会生成硬件浮点代码)
B. 不开硬件,只开软件,肯定有问题(编译器生成硬件浮点代码)
C. 同时开启硬件和软件,不能保证,需要测试特定的OS支持版本号
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2024-5-14 09:16:17 | 显示全部楼层
庄永 发表于 2024-5-13 12:02
不管开不开Lazy Stacking,只要软件自己对FPSCR和S0~S31管理,我感觉都不应该出问题,软件自己对这几个寄 ...

7楼那个就是不开Lazy stacking特性,手动管理浮点入栈和出栈的。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-15 01:20 , Processed in 0.202184 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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