嵌入式开发:用于嵌入式系统的Rust

更新时间: 2023-02-17 15:06:53来源: 粤嵌教育浏览量:5943

  嵌入式开发:用于嵌入式系统的Rust

  在嵌入式开发中,到目前为止,C/C++已经主导了系统编程。开发低错误和安全的软件是一项重大挑战。Rust语言是唯一成功的候选语言。与C++相比,它更专注于避免编程错误,而不会带来过多的复杂性。

  但是,当查看常见编程语言排名时,发现已经有无数种语言在广泛使用。这是因为每种语言都有不同的目标群体、不同的应用领域或不同的质量特征。因此,在软件开发中有许多语言的空间。

  在传统嵌入式系统的情况下,它主要涉及系统编程语言,即开发对资源具有最大控制的低级软件。该软件通常是任务关键型的,有时必须满足实时或安全领域的特殊要求。

  系统编程

  在系统编程中,语言C和C++已经主导了几十年。C已经快50岁了,长期以来一直是许多系统的骨干。在嵌入式开发中,如果没有用C语言编写的软件,通用操作系统、内部组件和硬件相关驱动程序在今天仍然是不可想象的。嵌入式系统也不例外。对C的支持是所有平台上最低的共同点。

  随着C++的进一步发展,更大的软件和更复杂的概念可以更好地实现。然而,C语言采用了所有语言,并面临着相关的挑战。C程序员总是需要确切地知道自己在做什么。谨慎和纪律对于避免许多危险的绊脚石至关重要。虽然处理器体系结构和内存结构的抽象几乎不存在,这为系统编程语言提供了前提,但不幸的是,这也会导致容易出错,因为编译器允许大量代码通过。

  


  C语言的已知问题,如缓冲区溢出、悬空指针、竞争条件、未初始化内存或未定义行为,通常只在运行时检测到,这些问题通常是随机发生的。这使得通过测试更难检测到它们。在嵌入式开发中,使用C++而不是C只能在有限的程度上有所帮助,因为新的抽象和封装方法只能很容易地绕过,而且该语言还引入了新的障碍(例如不需要的复制构造函数),这些障碍同样危险,甚至更隐蔽。

  另一个问题是C++的语言复杂性,它随着每个新版本的增加而增加,并且早就把其他主流语言抛在了后面(见图1)。因此,掌握C++需要越来越多的经验,编写低错误软件需要足够的纪律。在现代世界中,软件扮演着越来越重要的角色,网络安全无从谈起,在可接受的时间内实现软件而不出错已变得至关重要。因此,需要系统编程的后继语言。

  C/C++后继者的要求

  在测试过程中很容易检测到简单、明显的错误。在嵌入式开发中,更难检测的bug更随机,通常来自内存安全、线程安全或未定义的行为。这是需要向前迈出一大步的地方。编程语言应在关键点允许尽可能少的错误。症状控制(审查、测试、更新)不再足以解决棘手的问题。

  由于这仍然是关于嵌入式系统的,因此也是关于系统编程的,因此将缺少一种避免困难bug的高级方法(例如垃圾收集器、自动并行化、强抽象)。强制运行时环境需要开销和许多依赖性,不适合裸机软件的面向硬件编程,嵌入式系统通常就是这样。

  在嵌入式开发中,C/C++后继者的其他要求当然是支持现代范式(包括功能)、与现有C代码的轻松集成以及带来丰富的生态系统,即工具、开发环境和社区。

免费预约试听课