注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
Moiiiiilter的个人空间 https://home.eeworld.com.cn/space-uid-1180423.html [收藏] [复制] [分享] [RSS]
日志

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

已有 447 次阅读2022-10-17 14:00 |个人分类:RISC-V开发

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

 

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

 

 

如果在MRS中部分工程使用此选项后,发现代码运行错误,可能的原因有如下几种:

  1. flto选项对汇编文件不起作用
  2. 为了防止单片机代码中启用中断,却未写中断服务函数,导致芯片跑飞的问题,在汇编文件中声明了原地跳转的中断服务程序。导致了部分程序在开启此选项时,使用了汇编中的原地跳转程序替代了中断服务子程序。
  3. 代码自身写法错误

 

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

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章