RISC-V 工具链可以开发新系统
实施可能是嵌入式软件开发的未来
(Source: Pixel B/Shutterstock.com)
RISC-V 仍然是嵌入式系统设计领域的一个相对较新的元素,但它已经被广泛采用,以取代现有的自定义架构并开发新的系统。RISC-V 是基于已建立的减少指令集计算机原理的开放标准指令集架构。开源结构的灵活性为开发人员提供了使 RISC-V 功能适应其设计特定需求的机会,同时仍然受益于周围的标准化生态系统。审查可用于 RISC-V 实现的设计工具和发展环境有助于跟踪其在嵌入式计算竞争世界中的进展.
启动项目
RISC-V的新颖性在它的采用率中起不到作用。相反,开源环境的普及正在显著加速其演变。RTOS 支持、用于网络、图形、人工智能 (AI)、物联网 (IoT)、安全和数字信号处理的中间件的扩展已经在加速。许多这些组件可供开发人员免费使用,并且可以分组到单个用户界面下,以简化开发过程。在这里,我们将带您完成此过程,并描述工程师用于创建嵌入式计算应用程序的工具。工程师使用各种软件开发工具和机制来创建嵌入式计算应用程序。RISC-V 开发环境为芯片开发和高端应用提供了广泛的工具,并具有功能齐全的操作系统实施(如 Linux)。以下只会简单地触及这些,以专注于软件开发.
攻克格努
GNU 是一个大规模协作免费软件开发项目,为用户提供运行计算机所需的所有软件。这包括操作系统(如流行的 Linux 操作系统)以及开发和运行应用程序所需的所有软件元素,如开发环境、编辑器、编译器、库和应用程序。GNU 编译器集合 (GCC) 是支持各种编程语言的编译器系统。它由 GNU 项目制作,由免费软件基金会分发。海合会是GNU操作系统的官方编译器,也是大多数Linux分布的编制者。它被广泛使用,并已被证明是许多现代IDE的一个重要元素.
综合发展环境
图1:RISC-V发展的综合发展环境。(来源:鼠标)
集成开发环境 (IDE) 被设计为软件开发的一站式商店。图 1显示了开发人员在典型 IDE 中可能遇到的关键组件和工具流。IDEs 通过在单个用户界面中提供一系列组件和功能,而不是要求开发人员精通各种未连接的工具,使开发过程更简单。Eclipse IDE 是用于嵌入式系统开发的广泛应用开发驾驶舱。它提供了一个用户友好的工作空间,包含所有重要的开发功能。Eclipse SDK 是免费的开源,是各种语言和目标微控制器(如 ARM 和 RISC-V)的热门 IDE。Eclipse CDT(C/C++开发手法)项目基于Eclipse平台提供了完整的IDE。它包括一系列标准插件和工具,用于多平台嵌入式 ARM 和 RISC-V 开发(可从 Eclipse 基金会获得)。
开发人员通常会使用项目经理创建项目,这为开发人员提供了指定关键项目属性的方法,如目标微处理器、板、包括库和中间件。然后,它创建项目的初始文件夹、源文件、配置设置和其他内务功能。进入代码之前的最后一步是配置和初始化项目。
编辑
项目初始化后,开发人员可以使用编辑器创建应用程序的代码。现代编辑器可以通过提供可以自动完成变量、列举、API 功能调用,甚至添加驱动程序堆栈的快捷方式来简化代码创建。标记潜在编译器错误的编辑器也有助于消除简单的代码错误。用户手动信息可以通过使用光标在代码上下文中调用或通过智能悬停操作来最大限度地减少为应用程序编程界面 (API) 定义或操作详细信息手动搜索其他文档的需要.
图书馆和中间件
添加代码后,综合库和中间件支持允许开发人员使用相关的高级 ABI,而不是从头开始创建它们。图形用户界面、数字信号处理、网络、安全库和中间件是 ABI 的几个例子,如果可用,可以显著加快开发时间.
Glibc 是 GNU C 库,提供 GNU 和 GNU/Linux 系统的核心库。它包括用于各种功能的 C 实现,包括文件系统、密码学、管道和 FIFO、数学、输入/输出流、搜索和排序以及虚拟内存等。Newlib 是一个 C 标准库,可在免费软件许可证下提供,并且针对嵌入式系统。它包括比Glib更轻量级的实现,Glib针对的是更基于操作系统的环境。Newlib 提供常见的功能,如串行输入/输出、文件系统访问、内存管理、算术、搜索和转换。它使用嵌入式系统板支持包访问 MCU 外围设备和其他特定硬件的元素.
实时操作系统 (RTOS)
RTOS 支持对于开发人员使用强健的元素(如信号灯、队列、消息和 mutex)连接应用程序的单个线程可能是一个关键因素。RTOS 通常是快速、安全地开发复杂应用程序的唯一方法,这些应用具有实时响应要求以及串行通信、用户界面、图形、传感器和安全性,这些是大多数现代物网应用的关键要素.
编译器和试用器
实施 API 功能后,代码已准备好编译。编译器通常被认为是IDE的操作心脏。它将编辑创建的开发人员代码转换为 RISC-V 目标的原生组装器说明。高级编译器具有各种设置,允许在不同级别优化生成的代码,以权衡性能和代码大小。由于其简化的指令集,RISC-V 架构适合简单的优化算法,从而最大限度地减少了理解复杂指令序列、指令交互以及程序分支和功能调用的影响所需的复杂算法的需求。RISC-V 对统一内存操作的依赖(代替本地 CPU 寄存器)进一步简化了优化。当基于内存的操作与高效的内存缓存相结合时,优化通常可以在飞行中完成——例如,在执行过程中,而不是在编译过程中。
一旦代码开发开始,测试和调试应用程序所花费的时间就会增加。大多数现代调试器提供程序执行的详细分析和跟踪,以便于跟踪变量、堆栈和缓冲区。变量的实时视觉更新也有助于确定典型的静态断点和单步分析可能难以捉摸的问题。一些试探器还集成了功率测量和详细的正时分析,这种组合在测试和分析物联网应用中普遍存在的低功率要求时特别有用。开发人员应确保他们选择的调试器提供广泛的功能,帮助识别错误并通过几个不同的镜头测试其应用程序,这些镜头符合他们的测试和调试要求。
GNU 试运行器 (GDB) 是 GNU 开源项目的一部分,是帮助解试代码的开源程序。它既为各种 ISD 提供调试引擎(许多经验丰富的嵌入式系统开发人员所熟悉),又提供跟踪和更改 IDE 内代码执行的功能。用户可以跟踪和更改程序变量的价值,并在程序的常规行为之外调用常规来精确定位错误。开放式芯片上诊断器 (OpenOCD) 项目提供免费的 GPL 许可界面,用于将远程诊断器连接到现代 MCUs 上的片上诊断硬件。OPENOCD 可以与广发银行合作,为 RISC-V MCUS 提供调试支持。
为您的实现找到合适的工具
许多其他第三方工具都超出了此处描述的范围,每个工具都有其优点和劣势。传统的嵌入式系统工具链(由设备制造商提供)包括编译器、编辑器、调试器、库、驱动程序、中间件和实时操作系统 (RTOS) 支持。MCU 制造商提供的工具链支持在库、驱动程序、中间件、文档、开发套件、示例项目和其他类似支持资源的稳健性和完整性方面差异很大。制造商通常有目标应用程序和市场,优先考虑其产品,因此探索具有竞争力的产品,看看它们与特定开发努力的匹配程度是有用的。详细评估的最重要元素之一是制造商驱动程序对 RISC-V MCU 中包含的外围设备的可用性。由于 RISC-V 的外围设备尚未标准化,制造商为串行通信、计时器、图形控制器、加密加速器和网络接口提供驱动程序。这些驱动程序提供 ABI 来控制任何嵌入式应用程序的关键方面,因此它们越完整、更易于使用,开发效率就越高。
其他几个 ID、RTOS、编译器、诊断器和库可用于 RISC-V 软件开发, 目前市场上。每个公司都拥有自己的一组关键功能和功能。确定哪些工具最适合您的开发需求取决于您的项目细节。大多数 IDEs 提供跨平台功能(Windows、macOS、Linux)和支持 32 位和 64 位内核,同时承诺降低代码大小并提高调试效率。少数甚至可以自由用于教育或评估目的,没有任何限制或限制。
结论
RISC-V 架构可能会改变嵌入式计算领域的游戏规则。其免费许可、开源开发环境以及参与式和不断增长的发展社区具有实现标准化嵌入式计算平台的快速开发和扩展的潜力。开发人员可以随着时间的推移自由改进和增强的开源平台有助于嵌入式系统和 IoT 为我们互联世界提供新功能的步伐的显著加快。RISC-V似乎只是时间问题,其开发生态系统在嵌入式系统设计领域处于领先地位