打印

STM32F4 Discovery开发板上移植UCOS2.91(带FPU)--!已修正错误!

[复制链接]
楼主: wangzhihai1986
手机看帖
扫描二维码
随时随地手机跟帖
21
hsbjb| | 2012-12-26 16:03 | 只看该作者 回帖奖励 |倒序浏览
代码还是很有参考价值的

使用特权

评论回复
22
火箭球迷| | 2012-12-26 16:17 | 只看该作者
做这个的人的确是不多

使用特权

评论回复
23
dfsa| | 2012-12-26 16:38 | 只看该作者
如果能多一些文档说明,代码的可读性可能更强一点

使用特权

评论回复
24
pluto55| | 2012-12-26 16:54 | 只看该作者
请教楼主,开FPU,用ucos的话,OSTaskStkInit 和PendSV_Handler一定要更改吗,能解释一下更改的意义是什么吗?看不太懂

使用特权

评论回复
25
hmdys| | 2012-12-31 13:35 | 只看该作者
以后可能用到,谢谢,支持一下

使用特权

评论回复
26
baidudz| | 2012-12-31 15:22 | 只看该作者
拿到开发板的各位,应该向LZ学习:lol

使用特权

评论回复
27
火箭球迷| | 2012-12-31 15:30 | 只看该作者
可以共享一些相关的移植经验

使用特权

评论回复
28
pluto55| | 2013-1-7 11:40 | 只看该作者
我发现我使能FPU,操作系统是ucosII 2.92 也使用了基本的加、乘浮点运算,但是并没有出现http://blog.csdn.net/skyfaller/article/details/8149153这里面所说的切换任务时出现问题,这是个什么情况?

使用特权

评论回复
29
pluto55| | 2013-1-12 09:16 | 只看该作者
发现如果在中断中进行浮点数计算的话,会进HARD_FALUT,需要对os_cpu_c.c和os_asm.a进行更改,但是发现有的移植代码和楼主的不一样,区别在
OSTaskStkInit()的第一句:
    *(--stk) = (INT32U)0x00000000u;              /* No Name Register                         */
区别在FPU的第一个寄存器,保留寄存器是否在堆栈初始化时赋值,具体图可以参考:http://www.amobbs.com/thread-5400648-1-1.html
问题:是否加上这一句都可以正常运行,有人能给解释下吗

使用特权

评论回复
30
wangzhihai1986|  楼主 | 2013-1-12 11:35 | 只看该作者
pluto55 发表于 2012-12-26 16:54
请教楼主,开FPU,用ucos的话,OSTaskStkInit 和PendSV_Handler一定要更改吗,能解释一下更改的意义是什么 ...

一定要改的,因为这两处是对FPU的寄存器进行入栈和出栈处理的。

使用特权

评论回复
31
pluto55| | 2013-1-12 11:53 | 只看该作者
wangzhihai1986 发表于 2013-1-12 11:35
一定要改的,因为这两处是对FPU的寄存器进行入栈和出栈处理的。

楼主请看28#、29#的问题~

使用特权

评论回复
32
wangzhihai1986|  楼主 | 2013-1-14 08:53 | 只看该作者
pluto55 发表于 2013-1-12 09:16
发现如果在中断中进行浮点数计算的话,会进HARD_FALUT,需要对os_cpu_c.c和os_asm.a进行更改,但是发现有的 ...

加不加都一样,在任务创建时会调用这个程序对堆栈进行初始化。加上这句后,以后也不会用到它的空间,只是保留的,可以不要。这是任务切换时CPU自动入栈的情况:

sdd.JPG (26.44 KB )

sdd.JPG

使用特权

评论回复
33
pluto55| | 2013-1-14 09:09 | 只看该作者
本帖最后由 pluto55 于 2013-1-14 09:10 编辑
wangzhihai1986 发表于 2013-1-14 08:53
加不加都一样,在任务创建时会调用这个程序对堆栈进行初始化。加上这句后,以后也不会用到它的空间,只是 ...

意思是说在创建任务的时候可以不对CPU自动保存的寄存器堆栈初始化,因为CPU会将 FPSCR--R0 自动入栈?

使用特权

评论回复
34
wangzhihai1986|  楼主 | 2013-1-14 12:17 | 只看该作者
pluto55 发表于 2013-1-14 09:09
意思是说在创建任务的时候可以不对CPU自动保存的寄存器堆栈初始化,因为CPU会将 FPSCR--R0 自动入栈? ...

*(--stk) = (INT32U)0x00000000u;              /* No Name Register                         */,我的意思是这行可以不要,别的都得有。

使用特权

评论回复
35
pluto55| | 2013-1-14 14:58 | 只看该作者
wangzhihai1986 发表于 2013-1-14 12:17
*(--stk) = (INT32U)0x00000000u;              /* No Name Register                         */,我的意 ...

谢谢了~~~

使用特权

评论回复
36
quyifei| | 2013-1-14 17:26 | 只看该作者
看起来不错,我也试试

使用特权

评论回复
37
hgamber| | 2013-1-14 19:37 | 只看该作者
谢谢楼主

使用特权

评论回复
38
zdx818| | 2013-1-16 15:43 | 只看该作者
有否电路板图,一起共享就好了。

使用特权

评论回复
39
quyifei| | 2013-1-16 15:47 | 只看该作者
有GUI库没有?

使用特权

评论回复
40
zjczm| | 2013-2-4 16:14 | 只看该作者
下来玩玩看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则