RISC-V IDE MRS使用笔记(四):链接时优化

59 篇文章 36 订阅
51 篇文章 6 订阅
本文介绍了RISC-V MRS系统中链接时优化(LTO)的概念,强调了LTO如何通过合并多个中间文件来优化程序,以及可能导致代码运行错误的原因,如汇编文件不支持LTO、中断处理不当和代码错误。解决方法包括检查中断处理代码和避免使用汇编中的原地跳转。
摘要由CSDN通过智能技术生成

RISC-V IDE MRS使用笔记(四):链接时优化

链接时优化,即LTO(Link Time Optimization),部分介绍如下(详细的可翻看GCC文档关于FLTO的介绍):当用源代码调用时,它生成GIMPLE(GCC的内部表示之一),并将其写入对象文件中的特殊ELF部分。当对象文件链接在一起时,从这些ELF部分读取所有函数体,并实例化它们,就像它们是同一个翻译单元的一部分一样。多个中间文件通过链接器合并在一起,并将它们组合为一个程序,缩减代码体积,因此链接时优化是对整个程序的分析和跨模块的优化。同时,这就要求所有参与链接的部分在编译时都要有这个参数,否则链接时可能会引起错误。

MRS中在工程属性页面开启链接时优化的入口如下:

在这里插入图片描述
如果在MRS中部分工程使用此选项后,发现代码运行错误,可能的原因有如下几种:
1. flto选项对汇编文件不起作用
2. 为了防止单片机代码中启用中断,却未写中断服务函数,导致芯片跑飞的问题,在汇编文件中声明了原地跳转的中断服务程序。导致了部分程序在开启此选项时,使用了汇编中的原地跳转程序替代了中断服务子程序。
3. 代码自身写法错误

解决方法:
检查代码写法,确保程序中启用的中断都有C代码的级的处理程序,删除启动文件中的中断原地跳转程序(如下图所示)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值