SylixOS 使用 FPU 应该注意什么?

SylixOS 使用 FPU 应该注意什么?

Q: 使用 FPU 应该注意什么

SylixOS 支持浮点协处理器,每一个任务(线程有自己的 FPU 上下文,可以独立的进程浮点运算),但是, SylixOS 内核代码包括内核模块,中断函数,BSP包等等,强烈不建议使用 FPU 指令。因为没有独立的 FPU 上下文,除非操作系统启动时,参数 kfpu为 yes,这样操作系统在中断中会切换 FPU 的上下文,但是这将造成操作系统中断延迟加大。所以,除非兼容老的系统,其他情况不建议在内核和中断中使用 FPU。所以在编译操作系统内核,BSP,驱动程序,内核模块时,不要加入 FPU 支持。

特别是编译操作系统内核时,严禁加入 FPU 指令。应用程序中可以随意加入 FPU 的支持。


    • Related Articles

    • 编译参数浮点类型介绍

      Q:编译参数 -mcpu=cortex-a7、-mfloat-abi=softfp 和 -mfpu=neon-vfpv4 参数选项介绍 -mfloat-abi=softfp ABI 即 “application binary interface”,即编译器将 c 代码编译成汇编代码时使用的一种规则 使用规范如下: 在编译带有浮点参数的函数时,有三种可能的编译选项: -mfloat-abi=soft -mfloat-abi=softfp -mfloat-abi=hard "soft" ...
    • GCC浮点相关的编译选项配置

      gcc的浮点相关编译选项配置 GCC 中的浮点相关的编译选项属于依赖于不同平台的配置选项, 本文的相关配置都是在 ARM32 平台下. SylixOS 下常用的浮点编译配置有两个 -mfpu=name, -mfloat-abi=name 测试程序 #include <stdio.h> #include <time.h> float calc(float *src_mem_32, float *dst_mem_32) {    float mem_32;    int i, j;    for ...
    • GDB 调试时如何显示浮点寄存器

      Q:GDB 调试时如何显示浮点寄存器? SylixOS 的 IDE 对 64 位浮点寄存器的按 double 类型显示,如果是 float 类型的变量用 info all-reg 来查看:操作是需要选中 mips64-sylixos-elf-gdb 在 debugger console 里输入 info all-reg 或者 info float 如下图所示:                                                                     ...
    • SylixOS lite 版—基于 STM32F767 资源使用情况

      1、基本概念     代码段(text):顾名思义,代码存放的位置,在 STM32 中代码段一般存放于内置 FLASH 中; 已初始化数据段(data):已初始化数据段会分别体现在 FlASH 中和 RAM 中。因为是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM 空间。又因为有初始值,其初始值需要占用 FlASH 空间。   未初始化的数据段(bss):bss 与 data 相同的地方时它也是全局变量,运行过程中需要进行读写操作,因此占用一段 RAM ...
    • RealEvo-QtSylixOS 使用手册

      RealEvo-QtSylixOS 使用手册 详见:RealEvo-IDE (SylixOS IDE)安装目录如:F:\ACOINFO\RealEvo\doc 中 doc 文件夹下的 《RealEvo-QtSylixOS使用手册》 公开链接:SylixOS 手册获取