307 rtthread 浮点无法编译

已经照这个设置配置ide:RISC-V IDE MRS使用笔记(三):提升浮点计算效率_riscv 浮点计算 不同的优化编译等级,精确度不一样_MounRiver_Studio的博客-CSDN博客

但是没说rtthread怎么配,我就在cpuport.h设置如下:

/* bytes of register width 浮点开启,还有ide设置也要开启 */

#define ARCH_RISCV_FPU

//#define ARCH_RISCV_FPU_D

但是还是编译不过:

G:/svn_new/zx-multifuncbrd/trunk/common/rtthread/libcpu/risc-v/common/context_gcc.S: Assembler messages:

G:/svn_new/zx-multifuncbrd/trunk/common/rtthread/libcpu/risc-v/common/context_gcc.S:47: Error: unrecognized opcode `fsd f0,0*8(sp)'

G:/svn_new/zx-multifuncbrd/trunk/common/rtthread/libcpu/risc-v/common/context_gcc.S:48: Error: unrecognized opcode `fsd f1,1*8(sp)'

G:/svn_new/zx-multifuncbrd/trunk/common/rtthread/libcpu/risc-v/common/context_gcc.S:49: Error: unrecognized opcode `fsd f2,2*8(sp)'

要怎么配呢?


只定义 ARCH_RISCV_FPU 和ARCH_RISCV_FPU_S编译通过了,但是运行还是hardfault


一进到任务切换就挂了



有没高手解答一下?


您好,你可以按照下图将相应栈的大小修改一下,如下图1图2,

image.png

图1

image.png

图2

此外,若要使用浮点打印,还需要按照下图3配置一下

image.png

图3

附件为参考例程,可以参考一下,后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通

icon_rar.gifCH32V307 RT-Thread FPU.zip



好使,非常感谢。有个疑问,你最后一个图 :

stk  = (rt_uint8_t *)RT_ALIGN_DOWN((rt_ubase_t)stk, REGBYTES);

改成:

stk  = (rt_uint8_t *)RT_ALIGN_DOWN((rt_ubase_t)stk, 8);

那宏定义REGBYTES不用改成8吗?


您好,不用


只有登录才能回复,可以选择微信账号登录