硬汉嵌入式论坛

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

[μCOS-II] 请教UCOS II 浮点功能的问题

[复制链接]

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-5-7 18:54:49 | 显示全部楼层 |阅读模式
本帖最后由 sysedoc 于 2021-5-7 18:56 编辑

在网上下载的2.93.01版本源码移植到F407上,会卡死在#if (OS_CPU_ARM_FP_EN > 0u)
    reg_val = OS_CPU_CM_FP_FPCCR;                               /* Check the floating point mode.                       */
    if ((reg_val & OS_CPU_CM_FPCCR_LAZY_STK) != OS_CPU_CM_FPCCR_LAZY_STK) {
        while (1u) {                                            /* See Note (2).                                        */
            ;
        }
    }
#endif



如注释掉startup.s中Reset_Handler里FPU的代码,就可以运行。                                
                IF {FPU} != "SoftVFP"
                                                ; Enable Floating Point Support at reset for FPU
                LDR.W   R0, =0xE000ED88         ; Load address of CPACR register
                LDR     R1, [R0]                ; Read value at CPACR
                ORR     R1,  R1, #(0xF <<20)    ; Set bits 20-23 to enable CP10 and CP11 coprocessors
                                                ; Write back the modified CPACR value
                STR     R1, [R0]                ; Wait for store to complete
                DSB

                                                ; Disable automatic FP register content
                                                ; Disable lazy context switch
                LDR.W   R0, =0xE000EF34         ; Load address to FPCCR register
                LDR     R1, [R0]
                AND     R1,  R1, #(0x3FFFFFFF)  ; Clear the LSPEN and ASPEN bits
                STR     R1, [R0]
                ISB                             ; Reset pipeline now the FPU is enabled
                ENDIF


请教一下是什么问题?

谢谢!



回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2021-5-7 21:26:45 | 显示全部楼层
对比下看看,启动文件.s有个注意的点,我之前是一执行浮点计算就异常中断,加了就不会

uCOS-II_GD32F4.7z

3.01 MB, 下载次数: 17

回复

使用道具 举报

6

主题

636

回帖

654

积分

金牌会员

积分
654
QQ
发表于 2021-5-7 22:20:35 | 显示全部楼层
建议直接使用最新版本的uCOS-II即可
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-5-8 08:41:33 | 显示全部楼层
这是很久以前的老问题了,你的程序设计混了,你启动文件里面关闭lazy stack特性,而你的程序里面启动FPU又要使用lazy staking(去年开源的uCOS-II和III都开始采用lazy stacking了,早期的没有使用,所以启动文件要关闭),这就bug了。

参考我的把,V5是F407

基于V5,V6和V7的最新版uCOS-II V2.93.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-20)
http://www.armbbs.cn/forum.php?m ... id=96928&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

13

主题

156

回帖

215

积分

高级会员

积分
215
发表于 2021-5-8 14:14:44 | 显示全部楼层
eric2013 发表于 2021-5-8 08:41
这是很久以前的老问题了,你的程序设计混了,你启动文件里面关闭lazy stack特性,而你的程序里面启动FPU又 ...

大佬,现在ucos开源了吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2021-5-9 08:10:47 | 显示全部楼层
本五心 发表于 2021-5-8 14:14
大佬,现在ucos开源了吗?

去年已经开源免费了。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 01:30 , Processed in 0.244700 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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