aozima 发表于 2011-10-27 13:33:12

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

拿到 小苦 送的 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)

li3p 发表于 2011-10-27 15:13:57

好消息,刚拿到板子这边就移植好了呀。

linghu2 发表于 2011-10-27 15:21:07

回复【楼主位】aozima

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

还增加了DSP部分

gideon518j 发表于 2011-10-27 17:29:49

用的是什么编译器, MDK4.21好像没有F4系列的

knight_avr 发表于 2011-10-27 19:06:03

LZ强悍
记号

hyz_avr 发表于 2011-10-27 19:53:02

回复【3楼】gideon518j
用的是什么编译器, mdk4.21好像没有f4系列的
-----------------------------------------------------------------------

4.22

ffxz 发表于 2011-10-27 19:56:52

换GNU GCC,上应用模块吧

jeffwei 发表于 2011-10-27 21:26:03

ewarm 6214有 F4

qwerttt 发表于 2011-10-27 22:18:14

要是4.22就痛苦了,编辑代码上面,每页标题五颜六色的

bluelool 发表于 2011-10-27 22:23:46

mark

li3p 发表于 2011-10-27 23:01:23

回复【7楼】jeffwei
ewarm 6214有 f4
-----------------------------------------------------------------------

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

Excellence 发表于 2011-10-27 23:07:23

MARK.

jeffwei 发表于 2011-10-28 13:06:01

回复【10楼】li3p
回复【7楼】jeffwei
ewarm 6214有 f4
-----------------------------------------------------------------------
6214能找到和谐文件吗?我用之前的版本的不行哦/。
-----------------------------------------------------------------------

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

amwox 发表于 2011-10-29 11:51:51

标签的颜色有开关可以控制的
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_689829BUZ3F7.JPG
(原文件名:未命名.JPG)

cht-rtos 发表于 2011-10-29 15:10:53

五颜六色挺好

chewy 发表于 2011-10-29 21:45:26

回复【13楼】amwox
-----------------------------------------------------------------------

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

kiney1980 发表于 2011-10-30 19:53:34

增加了FPU和DSP部分在源码里增加和修改了那些东西?

avrwj 发表于 2011-12-1 11:48:58

Mark!!!!

honami520 发表于 2011-12-1 12:16:15

呵呵,我的小板子也可以跑一下试试看!!!!!!!

pdenjoh 发表于 2011-12-1 23:08:22

回复【楼主位】aozima
-----------------------------------------------------------------------

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

lixupeng 发表于 2011-12-1 23:28:00

mark!

seaso 发表于 2011-12-4 11:19:01

mark

aozima 发表于 2012-1-1 11:55:52

昨天晚上终于把FPU的上下文切换完成了。

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

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

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

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

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

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

aozima 发表于 2012-1-1 11:57:55

另外发现, STM32F4-Discovery 使用ST-LINK仿真时,无法显示 FPU 寄存器。而使用软件仿真时是可以显示的。
不知道其它仿真器是否有此现象?

hyskt 发表于 2012-1-2 19:53:06

mark!

zf8848 发表于 2012-1-8 07:59:06

IAR 6.3 不能识别 VSTMFD 指令,还是IAR设置错误?

changlyou77 发表于 2012-2-24 17:27:30

谢谢LZ分享

rellay 发表于 2012-9-7 22:58:41

本帖最后由 rellay 于 2012-9-7 23:00 编辑

aozima 发表于 2012-1-1 11:55 static/image/common/back.gif
昨天晚上终于把FPU的上下文切换完成了。

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


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

monkeynav 发表于 2012-9-7 23:09:45

其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态

aozima 发表于 2012-9-8 17:32:19

本帖最后由 aozima 于 2012-9-8 17:35 编辑

上面的操作看到是看懂了,就是不会代码实现。
前后矛盾。

希望老大分享个实现支持FPU的相关工程
楼主位的文件就是。

aozima 发表于 2012-9-8 17:33:19

monkeynav 发表于 2012-9-7 23:09 static/image/common/back.gif
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...

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

rellay 发表于 2012-9-8 21:22:24

aozima 发表于 2012-9-8 17:32 static/image/common/back.gif
前后矛盾。




先谢谢老大咯,慢慢学习

richards 发表于 2012-12-4 21:12:52

谢谢 老大。。

mysunmax 发表于 2013-1-16 19:57:03

顶起来~~~ 有没有什么学习教程啥的~就好了。

cbailjc 发表于 2013-1-21 15:44:51

最近看上这个了,学习,谢谢高手

aozima 发表于 2013-3-11 15:58:23

本帖最后由 aozima 于 2013-3-11 15:59 编辑

monkeynav 发表于 2012-9-7 23:09 static/image/common/back.gif
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...

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

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

aozima 发表于 2013-6-24 13:58:44

monkeynav 发表于 2012-9-7 23:09 static/image/common/back.gif
其实应该学习RTEMS,给进程增加是否使用浮点的属性,需要浮点的进程才保存FPU状态 ...

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

wudision 发表于 2013-9-18 22:03:08

支持rtt,非常喜欢感谢
页: [1]
查看完整版本: 移植 RT-Thread 到 STM32F4XX (支持FPU)