0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

缘起今生:英飞凌车规MCU全系支持Rust 语言开发

江师大电信小希 来源:江师大电信小希 作者:江师大电信小希 2024-04-05 13:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着软件功能的日趋强大,软件开发工作量随之剧增,软件开发团队也不断尝试改进软件的开发方法,旨在保证软件功能,质量的情况下,减少成本,加快开发速度。

要实现上述目标,关键在于工作量——在软件开发中尽可能减少工作量。

软件开发相关的工作量包括功能需求定义,功能需求的实现和测试,非功能需求,以及修复开发过程中引入的错误的工作量。

站在软件开发者的角度,在实现软件完整功能的情况下,如何减少开发的总工作量,唯一能够减少的部分就是用于修正错误的工作量。

对软件开发而言,一旦发现错误,就必须加以修正,以保证软件产品质量。因此,要在不影响产品质量的前提下减少工作量,唯一的解决办法就是防止开发过程中引入软件错误。

在已知的软件错误中,内存安全是软件行业中最常见的错误类别[1][2]。然而,嵌入式软件行业的标准语言 C 和 C++ 是非内存安全编程语言,这意味着嵌入式系统很容易出现这类错误。

减少这类错误的方法之一是在软件测试、审查和验证方面投入人力物力,而另一种思路是用内存安全语言取代现有语言[3]。

虽然许多内存安全语言(如 PythonJava)已在软件行业得到广泛应用,但它们并不适合嵌入式系统。这是因为嵌入式系统对占用空间、堆栈使用和性能有严格的限制(这是C和C++的优势)。

Rust就是在这样的背景下诞生的,它同时实现了高效性和内存安全。

Rust 是什么

Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布 [4] 。

wKgZomYPj26AY-YPAAAdBjmUL6M255.png

Figure 1. Rust Logo

Rust是一种在科技界大受欢迎的语言,Rust已经连续七年(2016,2017,2018,2019,2020, 2021, 2022)在Stack Overflow开发者调查的“最受喜爱编程语言”评选项目中折取桂冠[5]。

微软用Rust重写它的一些核心windowns库,在 Android 13 中,21% 的新原生代码使用了 Rust,此外,除 C 语言外,Rust 是唯一一种支持编写 Linux 内核组件的语言,并被广泛用于后端软件、基础设施和微服务。(找元器件现货上唯样商城

Figure 2. rust-gentle-intro [6]

Rust是一种系统编程语言,旨在成为无垃圾回收的内存安全语言。

Rust使用了包含特定规则的“所有权”机制来管理内存,允许编译器在编译过程中执行检查工作,而不会产生任何的运行时开销。Rust中的每一个值都有一个对应的变量作为它的所有者;在同一时间内,值有且仅有一个所有者;当所有者离开自己的作用域时,它持有的值就会被释放掉。

Rust使用“借用规则”实现对值进行可变和不可变引用:一个值可以有一个不可变引用或多个可变引用,但不能同时有两个引用。编译器中一个名为“借用检查器”的特定部分会对此进行检查。

Rust中的生命周期规则:Rust的每个引用都有自己的生命周期,它对应着引用保持有效性的作用域。生命周期最主要的目标在于避免悬垂引用,进而避免程序引用到非预期的数据。[7][8]

Cargo 是 Rust 的软件包管理器[9],软件包被称为板条箱(Crate),cargo 有一个命令:cargo build,它能自动解决项目依赖关系。另外,使用 cargo test 命令能触发单元测试,使用 cargo doc 命令还能生成文档网页。cargo 的文档列出了 30 多条不同的命令,用于支持软件包处理、构建文档和测试。此外,cargo 还可用于安装其他 Rust 二进制文件,如工具 svd2rust。

嵌入式系统中的 Rust

wKgZomYPj2-Af7-OAABB7EEFnvw850.png

Figure 3. Embedded Rust Architecture

Embedded Rust 的结构可以分为上述5层,如上图所示,从下往上的顺序,最底层是MCU硬件层,有各个资源,外设,由不同的芯片决定;第2层是PAC,可以理解为芯片的头文件,里面是各个寄存器的信息;第3层是在PAC的基础上对寄存器进行操作一些调度函数,里面对寄存器进行直接操作;第4层是硬件抽象层,这一层的意义是从芯片强相关的驱动函数上抽象出来,提供一个通用接口,这个通用接口由最上层的软件驱动层、软件应用层去调用,实现对芯片资源的调度。

在Embedded Rust中,使用svd2rust工具将芯片资源的描述文件SVD文件转化为PAC,该接口具有良好的可读性,便于审查和维护。此外,它还能防止出现错误,因为如果设置的值对该字段无效,代码将无法编译。

RUST 与 C 语言的关系

Rust对硬件的内存需求,堆栈使用,运行效率可以和C相媲美,具体的细节差异会和编译优化等级,应用等有些许差异。

此外,Rust有一个令人振奋的点,它可以和C语言共同使用。

Rust和C代码间的互用性始终取决于两种语言间的数据转换。为了实现互用性,在stdlib中,有两个专用模块,叫做std::ffi和std::os::raw 。

std::ffi提供了一些工具去转换更复杂的类型,比如Strings,将&str和String映射成更容易和安全处理的C类型。

std::os::raw处理底层的基本类型,这些类型可以被编译器隐式地转换,因为Rust和C之间的内存布局足够相似或相同[10]。

Rust 是一种现代系统编程语言,可用于网络应用程序和裸机嵌入式系统。不过Rust的生态和函数库资源等比较有限,而和C之间的互通性可以让Rust更加便捷的应用到现有的软件中,更快的投入使用。

因此,我们将长期生活在 Rust 和 C 语言的混合环境中。尽管 Rust 声称内存安全(这一点已经得到证实),但是Rust 和 C 代码的结合可能会导致安全的 Rust 生成的程序被不安全的 C 实现所违反的情况。为了确保 Rust 的安全性,有必要在 C 和 Rust 之间找到一个合理的分界点。

尽管如此,事实证明 Rust 是在嵌入式系统中替代 C 和 C++ 的合适候选语言,尤其是在新代码开发方面。除内存安全外,Rust 语言的其他方面,如强大的类型系统和错误处理,也为 Rust 带来了卓越的可读性和可维护性。这提高了防错能力,从而在不增加开发阶段额外成本的情况下实现更安全的代码。

英飞凌产品支持Embedded Rust

软件安全对汽车市场至关重要,Rust 编程语言内置内存安全软件开发支持,是设计关键任务汽车软件的重要推动力。英飞凌科技公司为在嵌入式领域创建 Rust 生态系统迈出了第一步。首先推出的是市场领先的 AURIX™ TC3xx 和 TRAVEO™ T2G 汽车 MCU。TRAVEO™ 使用官方 Rust 工具链和 Arm Cortex-M 目标编译器,而英飞凌的工具合作伙伴 HighTec EDV-Systeme 则为 AURIX™ 开发了专用 Rust 编译器。

wKgaomYPj2-AWDVyAAAgOJhWGLE163.png

Figure 4. AURIX™ and TRAVEO™ T2G

AURIX™ TC3xx 和 TRAVEO™ T2G 微控制器产品系列为功能安全和网络安全提供了广泛的集成硬件功能。对 Rust 的支持是对这些硬件功能在软件方面的补充。英飞凌为 AURIX™ 和 TRAVEO™ 提供了外设访问板条 (PAC),以实现对微控制器外设的本地访问。

HighTec Rust 编译器专为 AURIX™ TC3xx 和 TC4x 微控制器量身定制,利用先进的开源 LLVM 技术,为具有安全、可靠、高性能和快速部署要求的应用提供全套 Rust 语言特性,包括内存安全、并发性和互操作性。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英飞凌
    +关注

    关注

    68

    文章

    2443

    浏览量

    142300
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18605

    浏览量

    387008
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328796
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76114
  • Rust
    +关注

    关注

    1

    文章

    240

    浏览量

    7477
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    英飞凌MCU主动求变、持续引领

    电子发烧友网报道(文/吴子鹏)在全球汽车芯片市场持续震荡、竞争格局加速重构的背景下,英飞凌科技(Infineon Technologies)凭借其在车级微控制器(MCU)和功率器件领域的深厚积累
    的头像 发表于 11-28 08:37 8011次阅读
    <b class='flag-5'>英飞凌</b><b class='flag-5'>车</b><b class='flag-5'>规</b>级<b class='flag-5'>MCU</b>主动求变、持续引领

    CW32A系列(MCU)介绍

    定位:汽车电子应用,通过 AEC-Q100 认证,满足级可靠性要求。 核心特性: 内核:Arm Cortex-M0+/M3/M4,主频 48MHz~120MHz。 存储器:Flash 32KB
    发表于 11-17 06:30

    MCU在特种车辆车身控制中的应用研究

    本文聚焦于MCU(微控制单元)在特种车辆车身控制系统中的应用,以国科安芯的MCU芯片
    的头像 发表于 09-19 17:12 625次阅读

    电容竞争白热化,冠坤台凭什么脱颖而出?

    近年来,随着新能源汽车、智能驾驶等领域的爆发式增长,电容市场迎来前所未有的发展机遇。据行业数据显示,全球电容市场规模预计将在2025年突破百亿美元大关。在这一片蓝海中,台
    的头像 发表于 08-06 16:14 502次阅读

    冠坤台电容:以高性价比优势,抢占电容市场 “C 位”

    近年来,随着新能源汽车、智能驾驶等技术的快速发展,电容市场需求呈现爆发式增长。在这一背景下,冠坤电子(Su'scon)凭借其台电容的高性价比优势,正逐步抢占
    的头像 发表于 08-06 15:53 781次阅读

    请问OpenVINO™ 是否支持 Rust 绑定?

    无法确定OpenVINO™是否支持 Rust 绑定。
    发表于 06-25 07:45

    矽力杰首届MCU代理商技术培训大会圆满召开!

    6月20-21日,矽力杰MCU代理商技术培训会于杭州矽力杰大厦成功举办。本次培训会聚焦MCU技术前沿,为代理商FAE团队带来了一场干货满满的技术盛宴,助力生态伙伴深度掌握矽力杰
    的头像 发表于 06-21 17:03 1038次阅读
    矽力杰首届<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>代理商技术培训大会圆满召开!

    芯驰科技成为理想星环OS首个本土MCU合作伙伴

    日前,理想汽车自研的汽车操作系统「理想星环OS」正式开源,操作系统代码正式开放下载。作为理想汽车长期合作伙伴,凭借其高性能、高可靠的E3系列车MCU产品,芯驰科技成为星环OS首个本土
    的头像 发表于 05-06 10:32 1530次阅读

    劳特巴赫TRACE32全面支持芯驰科技MCU芯片E3650

    近日,劳特巴赫(Lauterbach)与芯驰科技共同宣布,其 TRACE32开发工具现已支持芯驰新一代旗舰智控MCU 芯片E3650。作为行业领先的微处理器调试开发工具厂商和芯驰的长期
    的头像 发表于 04-22 16:40 1035次阅读
    劳特巴赫TRACE32全面<b class='flag-5'>支持</b>芯驰科技<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>芯片E3650

    TASKING编译器全面支持兆易创新GD32A7xMCU

    近日,兆易创新 GD32A7x MCU 正式获得 TASKING VX-toolset for Arm v7.1r1 的全面支持。作为业内领先的嵌入式
    的头像 发表于 04-12 14:31 1214次阅读

    浅谈MCU (MGEQ1C064) OTA升级

    本帖最后由 noctor 于 2025-3-4 16:17 编辑 浅谈MCU (MGEQ1C064) OTA升级 OTA升级为汽车打造新价值 OTA升级(Over-The-Air
    发表于 03-04 12:52

    国产替代新标杆:紫光THA6MCU的功耗控制与热管理方案

    当全球汽车行业因芯片短缺陷入“卡脖子”困境时,紫光同芯的THA6系列车MCU横空出世,不仅填补了国产高端MCU的空白,更凭借“功耗控制”与“热管理”两大杀手锏,直接对标国际大厂英飞凌
    的头像 发表于 02-19 17:11 2060次阅读
    国产替代新标杆:紫光THA6<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>的功耗控制与热管理方案

    PEmicro开发与烧录工具全面支持矽力杰SA32B系列车MCU

    PEmicro宣布,其开发与烧录工具继支持矽力杰Teridian系列之后,现已全面支持矽力杰SA32B系列SA32B16、SA32B14、SA32B12
    的头像 发表于 02-11 09:17 1105次阅读
    PEmicro<b class='flag-5'>开发</b>与烧录工具全面<b class='flag-5'>支持</b>矽力杰SA32B系列车<b class='flag-5'>规</b><b class='flag-5'>MCU</b>

    MCU芯片DF30出征寒区开启性能测试

    近日,由湖北企业自主研发设计的国内首款级高端MCU芯片DF30成功搭载上车。当日,DF30自主可控高性能
    的头像 发表于 01-16 14:02 1098次阅读

    PEmicro开发与烧录工具全面支持矽力杰SA32系列车MCU

    PEmicro宣布,其开发与烧录工具继支持矽力杰Teridian系列之后,现已全面支持矽力杰SA32B系列SA32B16、SA32B14、SA32B12
    的头像 发表于 12-13 18:04 1412次阅读
    PEmicro<b class='flag-5'>开发</b>与烧录工具全面<b class='flag-5'>支持</b>矽力杰SA32系列车<b class='flag-5'>规</b><b class='flag-5'>MCU</b>