前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么我们应当将 Rust 用于嵌入式开发?

为什么我们应当将 Rust 用于嵌入式开发?

作者头像
niqin.com
发布2022-09-01 15:43:42
1.5K0
发布2022-09-01 15:43:42
举报
文章被收录于专栏:Rust 生态与实践Rust 生态与实践

笔者最近在了解嵌入式 Rust 开发方面的知识,网络搜索中,阅读到了 Pawan Bisht 于 2021 年 5 月 4 日发表在 knoldus 博客的文章 Why Rust for Embedded Development?。此文阐述了将 Rust 用于嵌入式的诸多优势,特此分享。

Rust 是一门系统编程语言,专注于三个要素:安全性、并发性,以及高性能。在语法上,Rust 类似于 C++,但具有内存安全性。

今天,我们将尝试理解:为什么我们应当将 Rust 用于嵌入式开发?以及在嵌入式开发领域,Rust 比其它编程语言更合适、更重要的几个原因。

较少的内存管理问题

众所周知,70% 的安全漏洞,都是由于内存错误而造成的。在防止内存安全问题方面,Rust 语言自身有其机制发挥着重要作用。Rust 语言中,有一个名为借用检查器(borrow checker)的组件,该组件旨在强制执行内存和资源的所有权(ownership),确保在编译时,捕获对内存的任何滥用。Rust 迫使开发者思考,让开发者意识到他们到底在做什么。

以前的开发中,面临的问题是:开发人员要么可以获得低层次的控制,要么可以获得更安全的权限。

例如:在 C/C++ 中,当程序员进行低层次的控制时,必须多加谨慎,他们必须考虑很多事情,以确保内存安全。

但是,在 Rust 出现之后,程序员进行低层次控制时,语言自身和编译器确保了内存安全。

高性能

Rust 语言中,性能提升的主要原因之一是:没有垃圾收集器。在编译时,确定何时不再需要内存,并且清理内存。与其它编程语言不同,Rust 没有运行时(runtime)检查。也就是说,Rust 所有的检查,都仅在编译时验证。

因为我们可以直接访问硬件和内存,所以 Rust 是嵌入式和裸机式(bare-metal)开发的理想程序设计语言。并且可以对我们的程序进行优化,使之接近机器硬件的最大理论性能。

跨平台支持

使用 Rust,我们可以在各种操作系统上,轻松构建完美工作的跨平台解决方案。此外,在 Rust 中有一些 web 框架可用,我们可以编写前端应用程序,如 Rocket、Actix 等。

丰富的生态系统

在软件的生产环境中,需要更多方面的因素,以保持其质量。Rust 具有丰富的生态系统:软件包管理器 Cargo、软件包社区站点 crates.io、文档中心站点 doc.rs 等等。当然还有更多生态工具,包括 Clippy,其提供的编译器扩展工具 lint 和 rustfmt,可自动进行语法检查、代码分析,以及格式化代码。

此外,Rust 还有一些官方和非官方的帮助渠道,比如聊天室、用户论坛、reddit 网站的 Rust 子站点、Stack Overflow 和其开设的 Rust 交谈频道。类似其它技术,Rust 也有许多全球交流研讨会议,如 RustConf、Rust Belt Rust、RustFest、RustCon Asia 等等。因此,我们可以说,Rust 有一个充满活力和受欢迎的社区。

好吧!我们已经介绍了使用 Rust 进行嵌入式开发的部分优点。现在我们来讨论:Rust 能否满足嵌入式系统的一些需求?

上述优势分析,是关于在嵌入式开发中,使用 Rust 的原因。然而,嵌入式开发中还有一些条件,使得 Rust 语言更值得选择。

可移植性

简而言之,可移植性即是“系统独立性(system Independence)”。在嵌入式系统中,如果一个产品能够在不同的环境中运行,那么,它可以被称为便携式产品。实现可移植性的一种方法,是通过硬件抽象层(HAL,Hardware Abstraction Layer)。

硬件抽象,是指软件中的一组类和例程,用于模拟某些特定于平台的细节。换句话说,硬件抽象提供了对硬件资源的直接访问。

那么,Rust 是如何满足这种重要需求的呢?在 Rust 中,具有嵌入式硬件抽象层(embedded-hal),其是一组 traits,定义了硬件抽象层(HAL)的:实现、驱动程序、应用程序,以及固件)之间的实现契约。

互操作性

软件的互操作性,是为了有效地交换和处理信息,而相互通信的能力。

Rust 语言实现了在和 C 语言的互操作性。关于此互操作方式,Rust 标准库 stdlib 中有两个专用的模块:std::ffistd::os::raw。另外,Rust 还支持与其它构建系统的互操作性。目前,RTOSs 正在进行中。

谢谢您的阅读,欢迎交流。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust 生态与实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 较少的内存管理问题
  • 高性能
  • 跨平台支持
  • 丰富的生态系统
  • 可移植性
  • 互操作性
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档