文档章节

SylixOS在t_main中使用硬浮点方法

z
 zhywxyy
发布于 06/21 21:36
字数 545
阅读 10
收藏 0
  1. 问题描述
    在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮点运算采用软浮点的方式实现,最终产生浮点运算性能下降的现象。

  2. SylixOS中的软硬浮点选项
    在 BSP 工程中,FPU_TYPE 类型通常会按照如下图所示方式定义。 BSP中默认采用软浮点
    此时,当 BSP 工程中有浮点运算的实现时,会采用软浮点的指令代替硬浮点的指令实现。 BSP 工程默认采用软浮点的原因在于使用硬浮点会操作 FPU 相关的寄存器,但是在函数调用过程中,硬浮点与软浮点的参数传递方式可能存在区别。硬浮点可能会使用 FPU 的寄存器完成参数或返回值的传递,而软浮点就会采用寄存器或是内存的方式完成参数和返回值的传递,所以硬浮点和软浮点的 ABI 可能存在不兼容。 为了保证 BSP 本身的兼容性,一般都采用软浮点方式实现。

  3. 解决方法
    在确保软硬浮点在 ABI 使用上不存在不兼容时,可以将应用程序采用如下的方式单独使用硬浮点进行编译。
    1、将 t_main 中的浮点运算逻辑新建“SylixOS Static Kernel Lib”实现;
    2、手动修改”SylixOS Static Kernel Lib”工程的 config.mk 文件,使其为 hard-float,如下图所示; 修改内核模块工程的config.mk
    3、将编译生成的 .a 文件链入 BSP 工程;
    4、在 t_main 中仍调用 .a 文件中生成的符号。

© 著作权归作者所有

共有 人打赏支持
z
粉丝 1
博文 16
码字总数 23366
作品 0
南京
SylixOS 在 t_main 中使用硬浮点方法

1. 问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中...

zhywxyy
06/21
0
0
SylixOS调试方法详解——性能分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
06/26
0
0
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
05/15
0
0
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
0
0
SylixOS线程堆栈大小浅析

目录 1. SylixOS线程、线程栈介绍 1 1.1 线程的介绍 1 1.2 线程栈的介绍 1 2. SylixOS线程栈大小的分配 1 2.1 线程、线程栈相关属性的设置 2 2.2 线程栈大小 2 2.3 线程堆栈警戒区 3 3. 总结...

Esc120
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上)...

九州暮云
36分钟前
1
0
面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
今天
4
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
今天
4
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
4
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部