搜索
bottom↓
回复: 37

移植 RT-Thread 到 STM32F4XX (支持FPU)

[复制链接]

出0入0汤圆

发表于 2011-10-27 13:33:12 | 显示全部楼层 |阅读模式
拿到 小苦 送的 STM32F4-Discovery 很久了,谢谢 小苦 .

今天终于把RT-Thread移植好了.

1.外设基本和STM32F20X一致,内核增加了FPU部分,所以需要处理FPU的寄存器(如果使用的话).
2.STM32F4-Discovery上面UART1接到ST-LINK了,所以默认启用了UART2(PA2,PA3).

点击此处下载 ourdev_689145LU15RC.zip(文件大小:1.31M) (原文件名:RT-Thread_STM32F4XX.zip)

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2011-10-27 15:13:57 | 显示全部楼层
好消息,刚拿到板子这边就移植好了呀。

出0入0汤圆

发表于 2011-10-27 15:21:07 | 显示全部楼层
回复【楼主位】aozima  

1.外设基本和STM32F20X一致,内核增加了FPU部分
-----------------------------------------------------------------------

还增加了DSP部分

出0入0汤圆

发表于 2011-10-27 17:29:49 | 显示全部楼层
用的是什么编译器, MDK4.21好像没有F4系列的

出0入0汤圆

发表于 2011-10-27 19:06:03 | 显示全部楼层
LZ强悍  
记号

出0入0汤圆

发表于 2011-10-27 19:53:02 | 显示全部楼层
回复【3楼】gideon518j
用的是什么编译器, mdk4.21好像没有f4系列的
-----------------------------------------------------------------------

4.22

出0入0汤圆

发表于 2011-10-27 19:56:52 | 显示全部楼层
换GNU GCC,上应用模块吧

出0入0汤圆

发表于 2011-10-27 21:26:03 | 显示全部楼层
ewarm 6214有 F4

出0入0汤圆

发表于 2011-10-27 22:18:14 | 显示全部楼层
要是4.22就痛苦了,编辑代码上面,每页标题五颜六色的

出0入0汤圆

发表于 2011-10-27 22:23:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-27 23:01:23 | 显示全部楼层
回复【7楼】jeffwei
ewarm 6214有 f4
-----------------------------------------------------------------------

6214能找到和谐文件吗?我用之前的版本的不行哦/。

出0入0汤圆

发表于 2011-10-27 23:07:23 | 显示全部楼层
MARK.

出0入0汤圆

发表于 2011-10-28 13:06:01 | 显示全部楼层
回复【10楼】li3p  
回复【7楼】jeffwei
ewarm 6214有 f4
-----------------------------------------------------------------------
6214能找到和谐文件吗?我用之前的版本的不行哦/。
-----------------------------------------------------------------------

有和谐,老版本的和谐可用,今天看到6.3发布了.....

出0入0汤圆

发表于 2011-10-29 11:51:51 | 显示全部楼层
标签的颜色有开关可以控制的

(原文件名:未命名.JPG)

出0入0汤圆

发表于 2011-10-29 15:10:53 | 显示全部楼层
五颜六色挺好

出0入0汤圆

发表于 2011-10-29 21:45:26 | 显示全部楼层
回复【13楼】amwox  
-----------------------------------------------------------------------

额 这样不是得将UART2(PA2,PA3)外接个232片子么。。。
不过貌似没有别的办法

出0入0汤圆

发表于 2011-10-30 19:53:34 | 显示全部楼层
增加了FPU和DSP部分在源码里增加和修改了那些东西?

出0入0汤圆

发表于 2011-12-1 11:48:58 | 显示全部楼层
Mark!!!!

出0入90汤圆

发表于 2011-12-1 12:16:15 | 显示全部楼层
呵呵,我的小板子也可以跑一下试试看!!!!!!!

出0入0汤圆

发表于 2011-12-1 23:08:22 | 显示全部楼层
回复【楼主位】aozima
-----------------------------------------------------------------------

请问为什么不断往单片机发送 ( 号,RTT会死机的?

出0入0汤圆

发表于 2011-12-1 23:28:00 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-12-4 11:19:01 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-1-1 11:55:52 | 显示全部楼层
昨天晚上终于把FPU的上下文切换完成了。

1. 自动检查FPU是否打开,如果已经打开,则为FPU预留空间。

2. 线程切换时,把FPU的所有寄存器保存并切换。

笔记如下:
1.   为加快中断响应,当发生中断时,虽然会自动对FPU的S0~S15进行压栈,但没有真正压入,
只是预留了空间,并把地址写入FPCAR寄存器。如果在中断中使用硬件浮点指令,此时才真正
进行压栈。一般中断服务函数中都不会使用浮点运算,所以这样对中断延迟基本没有影响(相对cortex-M3)。

2. 对FPU寄存器的操作指令与普通指令基本一致,指令名称加了V前缀。
如切换上下文:

    VSTMFD  r1!, {d8 - d15}         ; push FPU register s16~s31
    STMFD   r1!, {r4 - r11}         ; push r4 - r11 register

    LDMFD   r1!, {r4 - r11}         ; pop r4 - r11 register
    VLDMFD  r1!, {d8 - d15}         ; pop FPU register s16~s31

出0入0汤圆

 楼主| 发表于 2012-1-1 11:57:55 | 显示全部楼层
另外发现, STM32F4-Discovery 使用ST-LINK仿真时,无法显示 FPU 寄存器。而使用软件仿真时是可以显示的。
不知道其它仿真器是否有此现象?

出0入0汤圆

发表于 2012-1-2 19:53:06 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-1-8 07:59:06 | 显示全部楼层
IAR 6.3 不能识别 VSTMFD 指令,还是IAR设置错误?

出0入0汤圆

发表于 2012-2-24 17:27:30 | 显示全部楼层
谢谢LZ分享

出0入0汤圆

发表于 2012-9-7 22:58:41 | 显示全部楼层
本帖最后由 rellay 于 2012-9-7 23:00 编辑
aozima 发表于 2012-1-1 11:55
昨天晚上终于把FPU的上下文切换完成了。

1. 自动检查FPU是否打开,如果已经打开,则为FPU预留空间。


老大好,刚接触RT-Thread 加 STM32F4。
关于支持FPU,具体要做哪些步骤呢?上面的操作看到是看懂了,就是不会代码实现。
单独的STM32F4 FPU的设置在网上找到了,加中断时线程(没说错吧)FPU的上下文切换,保存浮点寄存器值,其他的又不知道了
新接触这个,啥都不会,汗颜诶,希望老大分享个实现支持FPU的相关工程。

出215入169汤圆

发表于 2012-9-7 23:09:45 | 显示全部楼层
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态

出0入0汤圆

 楼主| 发表于 2012-9-8 17:32:19 | 显示全部楼层
本帖最后由 aozima 于 2012-9-8 17:35 编辑
上面的操作看到是看懂了,就是不会代码实现。

前后矛盾。

希望老大分享个实现支持FPU的相关工程

楼主位的文件就是。

出0入0汤圆

 楼主| 发表于 2012-9-8 17:33:19 | 显示全部楼层
monkeynav 发表于 2012-9-7 23:09
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...

这样好,不过没做过,不太懂,欢迎指导。

出0入0汤圆

发表于 2012-9-8 21:22:24 | 显示全部楼层
aozima 发表于 2012-9-8 17:32
前后矛盾。

先谢谢老大咯,慢慢学习

出0入0汤圆

发表于 2012-12-4 21:12:52 | 显示全部楼层
谢谢 老大。。

出0入0汤圆

发表于 2013-1-16 19:57:03 | 显示全部楼层
顶起来~~~ 有没有什么学习教程啥的~就好了。

出0入8汤圆

发表于 2013-1-21 15:44:51 | 显示全部楼层
最近看上这个了,学习,谢谢高手

出0入0汤圆

 楼主| 发表于 2013-3-11 15:58:23 | 显示全部楼层
本帖最后由 aozima 于 2013-3-11 15:59 编辑
monkeynav 发表于 2012-9-7 23:09
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...


最近看阅读《see MIPS run》里面有讲类似的操作:
默认关闭FPU,但编译生成FPU的指令,
所以当执行FPU指令时,会产生异常,
在这个异常中打开FPU,以后这个线程就是带FPU的了。

貌似所有CPU都可以用这个方式,先留着以后继续研究,欢迎拍砖。

出0入0汤圆

 楼主| 发表于 2013-6-24 13:58:44 | 显示全部楼层
monkeynav 发表于 2012-9-7 23:09
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...

多谢您的建议,已添加此功能:update libcpu/arm/cortex-m4: support lazy stack optimized.

出0入0汤圆

发表于 2013-9-18 22:03:08 | 显示全部楼层
支持rtt,非常喜欢感谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 00:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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