完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于RISC-V代码密度低,想尽量压缩代码体积。采取了以下措施:
优化等级-Os体积优化,打开压缩指令RVC,链接器增加了以下选项 --gc-sections --specs=nano.specs --specs=nosys.specs 效果还是不理想,使用-flto选项打开Link-time optimizer以后代码体积减少不少,不过报_write函数找不到。 libg_nano.a(lib_a-writer.o): in function `.L0 ':writer.c:(.text._write_r+0x12): undefined reference to `_write' 看起来是_write函数被优化掉了,这个_write函数是为了使用printf函数实现的,代码中有,不加-flto选项正常。 其它项目都是重写fputc,WCH是重写_write函数,如何在打开-flto选项后如何避免_write函数被优化掉呢? 或者是否还有其它方法可以用来减小代码体积? 同样功能的源代码在ARM上面即使使用速度优化,FLASH空间也十分充足,RISC-V的代码密度还是太拉跨了。 |
|
相关推荐
2个回答
|
|
这个问题复现很容易,在CH32V103的EVT中,打开USART_Printf例子,工程设置里面打开-flto选项
先clean,然后build,就会弹出下面的错误提示。 libg_nano.a(lib_a-writer.o): in function `.L0 ':writer.c:(.text._write_r+0x12): undefined reference to `_write' EVT的代码在debug.c文件中实现了_write函数。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
333 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2797 浏览 2 评论
2293 浏览 1 评论
C#调用CH375 OpenDevice函数报错堆栈不对称怎么解决?
623浏览 2评论
961浏览 2评论
518浏览 2评论
214浏览 2评论
MounRiver Studio老是下载仿真的时候卡死怎么解决?
597浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-25 02:41 , Processed in 0.882471 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号