硬汉嵌入式论坛

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

[μCOS-III] uCOS FPU支持移植

[复制链接]

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
发表于 2022-10-21 00:39:46 | 显示全部楼层 |阅读模式
参考硬汉大佬的uCOS-III教程移植FPU支持过程,发现最新版uCOS-III的FPU支持更方便了,好像只需要修改函数
[C] 纯文本查看 复制代码
OSTaskStkInit
就可以。疫情被隔离在家,没有板子,不知道对不对。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2022-10-21 01:03:56 | 显示全部楼层
新版3.08基本不用修改port文件了,直接就可以使用。
回复

使用道具 举报

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
 楼主| 发表于 2022-10-21 10:18:27 | 显示全部楼层
eric2013 发表于 2022-10-21 01:03
新版3.08基本不用修改port文件了,直接就可以使用。

可能现在官网上的做了修改,FPU的使用还是要做一些修改。不像我昨晚想的那样,还是得按照你3.0.8的模板修改,修改了几个函数才搞定
[C] 纯文本查看 复制代码
OSTaskSwHook、OSTaskStkInit
,添加了函数
[C] 纯文本查看 复制代码
OS_CPU_FP_Reg_Push,OS_CPU_FP_Reg_Pop
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2022-10-21 10:40:01 | 显示全部楼层
1. 硬件支持FPU的(如M4等),默认开启
2. 要强制关闭的话,需要在配置加上预定义宏:__SOFTFP__(GCC),SoftVFP(ARMCC),__ARMVFP__(IAR)
回复

使用道具 举报

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
 楼主| 发表于 2022-10-21 13:02:11 | 显示全部楼层
感谢硬汉大佬的3.0.8模板,下面是我参照硬汉大佬的模板在官方github下载源码移植FPU过程做的修改。能稳定跑起来。

os_cpu.c修改报告.html

378.21 KB, 下载次数: 28

os_cpu.h报告.html

76.49 KB, 下载次数: 8

os_cpu_a.asm报告.html

108.58 KB, 下载次数: 8

回复

使用道具 举报

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
 楼主| 发表于 2022-10-21 13:03:17 | 显示全部楼层
h_007 发表于 2022-10-21 10:40
1. 硬件支持FPU的(如M4等),默认开启
2. 要强制关闭的话,需要在配置加上预定义宏:__SOFTFP__(GCC), ...

UCOS默认port文件不支持FPU,需要移植的。
回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2022-10-21 15:42:46 | 显示全部楼层
庄永 发表于 2022-10-21 13:03
UCOS默认port文件不支持FPU,需要移植的。

我用uCOS III v3.0.8的,默认是不需要移植
下面是官方自带的GCC移植文件:os_cpu_a.S

OS_CPU_PendSVHandler:
    CPSID   I                                                   @ Cortex-M7 errata notice. See Note #5
    MOVW    R2, #:lower16:OS_KA_BASEPRI_Boundary                @ Set BASEPRI priority level required for exception preemption
    MOVT    R2, #:upper16:OS_KA_BASEPRI_Boundary
    LDR     R1, [R2]
    MSR     BASEPRI, R1
    DSB
    ISB
    CPSIE   I

    MRS     R0, PSP                                             @ PSP is process stack pointer
#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
                                                                @ Push high vfp registers if the task is using the FPU context
    TST       R14, #0x10
    IT        EQ
    VSTMDBEQ  R0!, {S16-S31}
#endif
回复

使用道具 举报

85

主题

781

回帖

1036

积分

至尊会员

积分
1036
 楼主| 发表于 2022-10-21 18:34:04 | 显示全部楼层
h_007 发表于 2022-10-21 15:42
我用uCOS III v3.0.8的,默认是不需要移植
下面是官方自带的GCC移植文件:os_cpu_a.S

GCC的没试过,ARMCC的自带的port不行,跑不起来。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-1-13 01:55:54 | 显示全部楼层
庄永 发表于 2022-10-21 13:02
感谢硬汉大佬的3.0.8模板,下面是我参照硬汉大佬的模板在官方github下载源码移植FPU过程做的修改。能稳定跑 ...

具体要修改哪些地方
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-13 09:41:55 | 显示全部楼层
latiao 发表于 2025-1-13 01:55
具体要修改哪些地方

参考这个,然后使用比较软件,可以方便查看修改的地方,你试试方便不

基于V5,V6和V7的最新版uCOS-III V3.08.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-19)
https://www.armbbs.cn/forum.php? ... 6918&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

186

回帖

198

积分

初级会员

积分
198
发表于 2025-1-13 16:18:21 | 显示全部楼层
记得之前用ucos 开启fpu直接卡死,然后开ucos 开启fpu太麻烦,就用freertos了,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-14 14:21:44 | 显示全部楼层
fyyxxm 发表于 2025-1-13 16:18
记得之前用ucos 开启fpu直接卡死,然后开ucos 开启fpu太麻烦,就用freertos了,

使用新的port文件,没有这种问题了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 22:00 , Processed in 0.314330 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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