OpenEdv-开源电子网

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

最新UCOSIII 3.06.00 内核浮点运算开启问题解决,分享

[复制链接]

29

主题

84

帖子

0

精华

高级会员

Rank: 4

积分
659
金钱
659
注册时间
2014-5-11
在线时间
87 小时
发表于 2017-6-15 17:02:25 | 显示全部楼层 |阅读模式
发帖比较少,想想不能总提问不分享。抽点时间,分享一下刚遇到的问题,由于本人喜欢尝鲜,什么都要玩玩新的,今天 想把项目上的UCOSIII 内核更新到最新版 的(我做好备份的,这个必须 的),但发现只要开启浮点数功能另一个系统就不跑了。调试发现程序停在下面代码里:

void  OSInitHook (void)
{
#if (OS_CPU_ARM_FP_EN > 0u)
    CPU_INT32U   reg_val;
#endif
                                                                /* 8-byte align the ISR stack.                          */
    OS_CPU_ExceptStkBase = (CPU_STK *)(OSCfg_ISRStkBasePtr + OSCfg_ISRStkSize);
    OS_CPU_ExceptStkBase = (CPU_STK *)((CPU_STK)(OS_CPU_ExceptStkBase) & 0xFFFFFFF8);

#if (OS_CPU_ARM_FP_EN > 0u)
    reg_val = CPU_REG_FP_FPCCR;                                 /* Check the floating point mode.                       */
    if ((reg_val & CPU_REG_FPCCR_LAZY_STK) != CPU_REG_FPCCR_LAZY_STK) {
        while (1u) {                                            /* See Note (1).                                        */
            ; // 死在这里
        }
    }
#endif
}


下面是笔记 :

官方移植的UCOSIII 3.06 版本有一个问题:
        当开启浮点运算后,系统启动后不跑。程序一直停在某个地方(可调试查看,在系统内核的某个while()中),
        网上查资料说是官方提供的μCOS-III移植工程中对于浮点寄存器的入栈和出栈处理是错误的,
        网上资料: http://www.stmcu.org/module/forum/thread-598225-1-1.html
       
        问题涉及到OSTaskStkInit()和OS_CPU_PendSVHandler() 两个函数。它们在os_cpu_c.c 和 os_cpu_a.asm 两个文件中
       
        考虑到3.04.05版本的没有这种问题,于是把3.04.05中的函数拷贝过来,但还是不好使,于是把3.04.04版本的这两个文件
        直接拷贝过来,运行,居然好了。

    奇怪的是,当再次使用原来的两个文件编译下载运行,居然也可以跑了!!!! 我没有看错,的确启动了。我再想为什么 刚才没有好,现在好了了???,于是我再次 Rebuild All  ,
   问题又再次复现了。刚才好使用可能是使用的上次的.o文件,
   于是,我再次把文件换成3.04.05版本的两个, 再次Rebuild All, 程序正常启动。

   这让我想到前一段时间把FATFS 更新到最新 ff13,   在一块板上正常,换了一块板居然不行(这好像与文件 系统没有半毛关系),我也想不到啊,我把文件系统直接退回到ff11b版本(中间试过12b,12c版本),都好使用了。我了个去。。。。。。新版本看起来功能更多,更强大,但实际我们感觉得到吗,基本上感觉 不到,但还有可能带来一些新的问题。一定要谨慎。

最近在研究UCOS II。。最新版2.92.12。^_^,  ,,,,,,    也许经过时间检验的才是真正可靠的。




bwu
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2016-5-23
在线时间
118 小时
发表于 2020-3-5 13:26:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-9-22
在线时间
53 小时
发表于 2020-3-5 15:11:41 | 显示全部楼层
用了快一年的UCOS3.07版本,IAR下官方给出的启动文件没有这个问题,建议用3.07,相比于3.04到3.06,去除了很多臃肿的部件,跑起来速度更快
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-7 15:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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