Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
risc-v_RISCV
rt-smart
rt-smart编译器
[rt smart]rtthread中ci中utest提供的musl库riscv工具链令我无所适从
发布于 2024-12-30 20:44:05 浏览:52
订阅该版
在关于musl工具链的尝试中,我惊讶发现这条工具链尽管`--with-abi=lp64`,却能够编译出带有浮点指令的程序,并使用FPU,这令我感到十分困惑。 我通过移植whetstone基准测试判断确实如此,详细过程见rt-thread仓库 issue[#9812](https://github.com/RT-Thread/rt-thread/issues/9812) 我完全不能够理解,但是这个旧工具链竟然确实是编译出了带有浮点指令的程序,尽管它只能指定lp64的ABI而不能指定lp64f与lp64d。这实在是一个太出乎意料的工具链,我真是完全不能够理解。现在缺乏编译器知识的我是足够困惑的。有没有大佬能点拨一下为什么一个-mabi=lp64的工具链,在编译时接收的ABI参数也是lp64,却能够编译出带有浮点指令的程序。 话说回来,我是通过移植whetstone浮点计算基准测试确定了这一点。在QEMU中运行这种基准测试并不是好的做法,但以下结果应该仍然能够反映出结论。 rt smart:使用这个ci中的musl工具链,编译器信息如上条评论。 关闭fpu并设置rtconfig.py中-march=rv64imac, 保持-mabi=lp64 ``` Loops: 100000, Iterations: 1, Duration: 103 sec. C Converted Double Precision Whetstones: 97.1 MIPS ``` 开启fpu,改回rtconfig.py的-march=rv64ima, 保持-mabi=lp64 ``` Loops: 100000, Iterations: 1, Duration: 39 sec. C Converted Double Precision Whetstones: 256.4 MIPS ``` rt-thread standard: 使用的工具链是一个挺正常的工具链, ``` ❯ $RTT_EXEC_PATH/riscv64-unknown-elf-gcc -v Using built-in specs. COLLECT_GCC=/home/zhaocake/WorkSpace/Embeded/riscv64-unknown-elf-toolchain-for-rtt/bin/riscv64-unknown-elf-gcc COLLECT_LTO_WRAPPER=/home/zhaocake/WorkSpace/Embeded/riscv64-unknown-elf-toolchain-for-rtt/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper Target: riscv64-unknown-elf Configured with: /scratch/jenkins/workspace/tpp-freedom-tools/tpp03--build-binary-packages--parameterized/obj/x86_64-linux-ubuntu14/build/riscv64-unknown-elf-gcc/riscv-gcc/configure --target=riscv64-unknown-elf --host=x86_64-linux-gnu --prefix=/scratch/jenkins/workspace/tpp-freedom-tools/tpp03--build-binary-packages--parameterized/obj/x86_64-linux-ubuntu14/install/riscv64-unknown-elf-gcc-10.2.0-2020.12.8-x86_64-linux-ubuntu14 --with-pkgversion='SiFive GCC-Metal 10.2.0-2020.12.8' --with-bugurl=https://github.com/sifive/freedom-tools/issues --disable-shared --disable-threads --enable-languages=c,c++ --enable-tls --with-newlib --with-sysroot=/scratch/jenkins/workspace/tpp-freedom-tools/tpp03--build-binary-packages--parameterized/obj/x86_64-linux-ubuntu14/install/riscv64-unknown-elf-gcc-10.2.0-2020.12.8-x86_64-linux-ubuntu14/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=../riscv-gcc --with-system-zlib --enable-checking=yes --enable-multilib --with-abi=lp64d --with-arch=rv64imafdc CFLAGS=-O2 CXXFLAGS=-O2 'CFLAGS_FOR_TARGET=-Os -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os -mcmodel=medany' Thread model: single Supported LTO compression algorithms: zlib gcc version 10.2.0 (SiFive GCC-Metal 10.2.0-2020.12.8) ``` 可以看到它的`--with-abi=lp64d`。 关闭fpu并修改rtconfig.py中-march=rv64imac, -mabi=lp64 ``` Loops: 100000, Iterations: 1, Duration: 64 sec. C Converted Double Precision Whetstones: 156.2 MIPS ``` 开启fpu并修改rtconfig.py中-march=rv64imafdc, -mabi=lp64d。(如果不修改mabi理所当然地会报错,所以这个musl工具链令我头疼) ``` Loops: 100000, Iterations: 1, Duration: 26 sec. C Converted Double Precision Whetstones: 384.6 MIPS ``` 对比结果显然得出结论,该ci中的musl库工具链能够在lp64的目标ABI下编译出能够运行的带有浮点指令的程序。
查看更多
1
个回答
默认排序
按发布时间排序
bernard
1天前
这家伙很懒,什么也没写!
ci中使用的musl gcc工具链吗?那个工具链会相对老,可以试试这个: https://download.rt-thread.org/download/rt-smart/toolchains/riscv64gc-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2 这个链接应该会指向最新的musl gcc版本,这个是ci自动构建的,但有的时候其他分支更新了也会覆盖这个链接里的版本,所以本身来说也是一个非正式的版本。
撰写答案
登录
注册新账号
关注者
0
被浏览
52
关于作者
ZhaoCake
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
studio能否支持risc-v的工程,包括调试。
2
移植rt-nano至risc-v时,无法在main函数创建用户线程
3
risc-v移植rtthread,程序莫名跳转到异常Exception
4
GD32VF103出现to free a bad data block:错误
5
rtt os riscv Store address misaligned异常
6
仅实现机器模式的芯片是否可以移植RT-THREAD系统
7
nano版本移植finsh(基于risc-v)
8
C++在多核下cout打印引起崩溃
9
RT-SMART求助
10
RT-Thread在RISC-V架构的芯片上有成熟的市场项目吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
vscode插件 - RT-Thread Studio项目助手 & 跨平台开发
2
Console串口使用说明
3
WATCHDOG设备驱动开发
4
【NXP-MCXA153】eFlexPWM驱动移植
5
RT-Thread 下 Ethernet/IP 的支持
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部