完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 jf_11671167 于 2021-10-9 10:24 编辑
关键词:RISC-V、集成开发环境、剑池CDK、调试、编译、软件模拟GCC,LLVM,GDB,QEMU,MDK ,IAR ,ECLIPSE 前言 最近RISC-V比较火,它的开放性和可扩展性打开了人们对可定制处理器的想象空间,因此众多半导体公司纷纷加入试水,也吸引了大规模的开发者涌入。RISC-V相关文章已经成为技术界的新生“网红”,成为开发者们的焦点。在这些文章中,“工具链”这个名词会被经常提到,但对它的介绍却寥寥无几,今天我们来揭开它的神秘面纱。 一、什么是工具链 “工具链”是英文“toolchain”的翻译,它指辅助开发者完成程序开发、调试、性能分析调优等开发优化行为的一系列工具集合。它一般包含编译器、汇编器、链接器、调试器、模拟器等基础工具,集成开发环境作为一种图形化的综合开发工具也可以被纳入其中。由于指令集和用户编程模型不同,因此每个架构都需要一套完整的、独有的工具链。 二、工具链的重要性 可能有人会提问,既然是辅助工具,那么就是个非必需品也没有那么重要。这句话一半对一半错。在计算机发展的早期,几乎没有工具链,科学家通过在程序卡片上打孔来表示不同指令的编码,计算机读取程序卡片的打孔信息执行指令流。随着制造工艺和计算机的发展,现代计算机的指令码存储于在ROM、RAM、Flash等介质中,把指令码下载到指定的存储空间需要经过复杂的控制流程,因此必须需要借助于程序下载器才能完成下载。 为了提升程序开发效率,涌现了众多的高级开发语言。目前99%以上的开发者都使用高级语言完成业务的开发,然后使用编译器把高级语言翻译成目标机器指令下载到机器中执行。因此编译器成了工具链中个必不可少的组件。另外,程序有了bug怎么办?需要调试系统辅助开发者找到程序运行出错的原因;程序性能不够怎么办?需要性能分析器辅助开发者进行性能调优。因此,对于现代计算机系统,一套稳定、完整的开发工具链是一个架构基础的基础,所有软件的运行都依赖工具链;没有工具链,CPU和硬件无法使用,开发者寸步难行。 上面是从功能完备性说明工具链的重要性,后面通过对工具链的关键指标介绍,从原理上阐述工具链已经不是单纯的辅助工具,它是影响目标架构各方面指标的关键路径。工具链的关键指标可分为高效性和易用性两个方面。高效性又包括编译高效性、调试高效性、性能分析高效等,其中编译的高效性尤为重要。通过上文介绍,编译器是用于把高级语言翻译成目标机器指令的软件;一段高级语言会被翻译成若干条机器指令,编译器在保证功能正确的前提下,翻译出的机器指令数量和质量也非常关键,直接影响程序运行所需花费的时间和程序占用空间,即影响了处理器的性能和代码密度表现。因此,处理器性能是硬件+工具链的综合能力体现,单比较硬件频率指标没有实际意义。另外调试高效性直接影响了开发者分析解决问题效率,也是决定了处理器能否开发者接受、是否可以被广泛应用。 三、RISC-V工具链的现状 既然工具链这么重要,那么RISC-V的工具链现状如何,能否满足当前的应用需求?由于RISC-V的开放特性,加上基金会对软件生态的持续运作,吸引了大量的开发者投入到工具链的补充和完善工作上。目前从编译工具(GCC+LLVM)、调试工具到集成开发环境,在基本功能上都已经支持,但在高效性和易用性上仍需要继续加强和提升。如编译得到的程序代码大小相对ARM仍然存在不少差距;缺少性能调优工具;缺少图形化实时操作系统调试工具;开源的集成开发环境只支持简单的调试插件等,这些方面都需要工具链开发者不断地进行完善,并通过应用场景的验证和打磨。 四、剑池系列工具链 剑池系列工具链以开源工具链为基础,根据应用场景和玄铁处理器微架构高度优化的开发工具集合(见图1)。配合玄铁Turbo指令集,在XT906上相对开源版本平均有13%的性能提升,在XT910上平均有20%的性能提升。开发了基于指令Trace的性能分析工具,配合集成开发环境的图形化界面,为开发者提供快速性能profiling和优化的能力。另外,开发了两套集成开发环境,分别面向MCU应用开发和通用应用开发,降低现有工程迁移到RISC-V架构芯片上的难度。关于剑池系列工具链的每个工具,在后续的文章中会做详细介绍。 五、小结 工具链是一个体系架构的重要且不可缺失的组成部分,它是基础软件的基础。RISC-V工具链经过几年的发展,在功能上已经日渐完善;相信接下来的几年里,经过开源社区开发者和商业公司的共同努力,在编译调试高效性和易用性方面会有明显的提升,RISC-V的芯片也会被更多的开发者接受,被应用到各种场景。 本文转自平头哥芯片开放社区(occ),更多详情请前往https://occ.t-head.cn/development/activities/cdk?channelName=1。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15375 浏览 1 评论
13407 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19384 浏览 2 评论
58402 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
85494 浏览 120 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】SDK下载及交叉编译
6301浏览 1评论
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15375浏览 1评论
RVB2601 Gravity扩展板上线啦!!!全IO引脚扩展支持,专为RVB2601定制
1662浏览 0评论
【平头哥Sipeed LicheeRV 86开发板试用体验】lvgl初体验
4110浏览 0评论
【平头哥Sipeed LicheeRV 86开发板试用体验】QT初体验
2195浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 09:31 , Processed in 0.468794 second(s), Total 37, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号