文档章节

SylixOS在t_main中使用硬浮点方法

z
 zhywxyy
发布于 06/21 21:36
字数 545
阅读 11
收藏 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
博文 18
码字总数 25163
作品 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线程堆栈大小浅析

目录 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
SylixOS上EtherCAT实现

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

Jackstraw瑞
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式锁的实现

redis实现分布式锁 方法1:普通实现方案 实现方式: 使用指令: set key 随机值 ex 5 nx.意思是当key不存在的时候设置key. 如果key存在返回OK,否则返回nil. 实现过程: 1.执行命令set key true ...

grace_233
22分钟前
1
0
解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题

关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题。 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡。 资源无法加载 [imgupload] ( Uncaught E...

Eller
25分钟前
0
0
限制php解析、user_agent、php相关配置

11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置 11.28、限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upl...

zgxlinux
30分钟前
1
0
博客园首页新随笔联系订阅管理 随笔

注解Annotation实现原理与自定义注解例子 什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的...

onedotdot
48分钟前
4
1
Spring boot + redis 用RedisTemlate实现简单的String key value 操作

springboot集成redis, 简单的key, value缓存操作. 1. application-local.properties # redis on local#spring.redis.port=6379#spring.redis.host=localhost#spring.redis.password=......

园领T
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部