每个嵌入式开发人员都需要知道的5个Rust运行时

更新时间: 2024-05-24 10:03:12来源: 粤嵌教育浏览量:680

对更安全的边缘软件的需求一直在推动政府和大型企业的努力采用Rust,Rust为开发人员提供了许多好处,例如:

l 没有垃圾收集的内存安全

l 并发

现代工具

 

当你结合所有这些优点时,你会发现你可以编写更安全和更高质量的软件。虽然嵌入式开发人员可能不愿意学习Rust,但它通常被称为零成本抽象语言,因为它快速而高效。

让我们探讨一下使用Rust开发嵌入式软件时可以使用的五个运行时。

 

1、使用no_std的裸机

就像在CC++中一样,可以编写裸机Rust代码。默认情况下,Rust将包括许多运行时功能,如动态分配堆、集合、堆栈溢出保护、初始化代码和libstd。虽然这对于桌面、移动或服务器应用程序来说很好,但对于嵌入式应用程序来说开销很大。

 

相反,你可以使用指令 #![no_std] 作为将禁用所有这些功能的机箱级属性。使用no_std告诉Rust编译器不要使用std-crate,而是使用包含libcore但没有堆、集合、堆栈溢出保护等的裸机实现。

no_std属性非常适合希望以与CC++中相同的裸机形式编写嵌入式软件的开发人员。

 

2、实时中断驱动的并发性(RTIC)

RTIC代表实时中断驱动并发,是一个专门为使用Rust编程语言构建实时嵌入式应用程序而设计的框架。RTIC主要针对裸机系统,并利用Rust的零成本抽象和类型安全来提供一个并发执行环境,在该环境中,任务根据其硬件中断进行管理和优先级排序。

 

RTIC框架通过以最小的开销和可预测的行为处理任务,确保应用程序满足实时保证。RTIC特别适合要求严格时序约束和高可靠性的应用,例如汽车系统、工业自动化和其他嵌入式控制系统。由于Rust的所有权和类型系统,该框架简化了对共享资源的处理,并通过设计防止了数据竞争。

 

3、异步嵌入式hal

异步嵌入式halRust嵌入式hal(硬件抽象层)项目的实验性扩展,为支持嵌入式系统中的异步编程而定制。它旨在弥合标准嵌入式hal通常提供的同步操作与现代嵌入式应用的需求之间的差距,后者可以从非阻塞、异步I/O操作中受益。

 

异步嵌入式hal允许开发人员在基于微控制器的系统上编写效率更高、响应速度更快的应用程序,因为在这种系统中,阻塞操作在功耗和性能方面代价很高。通过将async/await语义集成到HAL中,异步嵌入式hal使读取传感器、网络通信或与外设交互等任务在不停止微控制器的情况下执行成为可能。结果是提高了系统同时处理多个任务的能力。

开发异步嵌入式hal利用了Rust强大的异步编程特性,主要用于web和服务器应用程序,并使它们适应嵌入式系统的受限环境。这包括为SPII2CUSART等标准嵌入式接口提供异步特性。

 

在这种情况下,异步编程允许任务产生控制而不是阻塞,这在任务在优先级和响应时间要求上有很大差异的系统中尤其有益。例如,像处理关键传感器输入这样的高优先级任务可以抢占像将数据记录到存储设备这样的低优先级任务。挑战和创新在于实现这些特性,遵守嵌入式设备典型的严格尺寸和性能限制,同时不牺牲Rust自然提供的安全性和并发性优势。这种方法不仅简化了开发过程,还提高了嵌入式应用程序的可伸缩性和可维护性。

 

4、Embassy

Embassy是完全在Rust中构建的嵌入式系统的异步运行时。它是专门为满足嵌入式设备典型的资源受限环境的需求而设计的,利用Rust的异步/等待功能来实现高效、无阻塞的I/O操作。

 

Embassy是希望在微控制器上实现复杂应用的开发人员的理想选择,传统的同步阻塞会导致有限计算资源的低效使用。Embassy提供了一个支持各种嵌入式平台的框架,为嵌入式系统中的并发执行提供了一种可扩展且安全的方法。该运行时利用了Rust的可预测性能特性,确保任务的执行没有传统多任务操作系统的开销。

 

Embassy的关键优势之一是其可扩展性以及与各种设备外围设备的轻松接口。运行时通过管理异步任务和事件来优化功耗和处理时间,从而有助于创建响应迅速且可靠的应用程序。例如,开发人员可以同时处理多个通信协议,而不需要在更通用的编程环境中常见的复杂和资源密集型线程机制。

 

Drone OS

Drone OS是一款完全用Rust编写的尖端嵌入式操作系统,专门为ARM Cortex-M微控制器上的实时应用程序而设计。通过利用Rust的安全功能和零成本抽象,Drone OS为开发需要精确计时和资源效率的高性能嵌入式软件提供了一个强大的平台。

 

该操作系统有助于低级硬件访问,同时保持高安全性,最大限度地降低了嵌入式开发中常见的错误和内存错误风险。Drone OS以其模块化设计和对并发编程的支持在嵌入式系统领域脱颖而出,使其成为寻求在现代嵌入式系统的苛刻环境中创建可扩展、可靠和可维护的实时应用程序的开发人员的理想选择。

 

结语

Rust是一种令人兴奋的语言,它提供了内存安全、安全性、并发性以及可用于开发嵌入式应用程序的现代工具链。目前,使用Rust构建嵌入式应用并不只有一种方式。我们探索了几种不同的运行时,从更传统的裸机方法到操作系统。

 

如果探索这些运行时,会发现它们可以帮助想象的更快地启动和运行。但是,不要以为它们是完整的运行时。根据的选择,可能会发现并非所有功能都能达到的预期水平。

 

Rust已经存在了大约十年,但它仍在不断发展。从嵌入式的角度来看,可以用它做很多事情,但仍有许多未知因素。不要让这阻止你学习这门丰富而令人兴奋的语言。

免费预约试听课