追踪嵌入式软件中的幽灵错误:-22

2025-01-26
追踪嵌入式软件中的幽灵错误:-22

Tweede golf团队在为nRF9160微控制器开发的嵌入式Rust软件中遭遇了一个难以捉摸的bug,该bug会导致数据发送到服务器时返回Error::NrfError(-22)错误。经过长达数周的调查,他们发现问题根源在于libmodem库的初始化函数中,一个指向栈上配置结构体的指针在结构体销毁后仍然被使用,导致程序意外地写入共享内存区域配置,从而使发送数据长度变成0。最终,通过添加`black_box`函数和使用watchpoint调试,他们定位并修复了这个bug,并强调了使用Rust进行嵌入式开发的优势,以避免此类低级错误。

阅读更多
开发

Rust 需要官方规范

2024-11-12
Rust 需要官方规范

本文探讨了Rust需要官方规范的原因。作者通过对比 C++ 和 Rust 中析构函数行为的差异,指出 Rust 代码的行为有时难以预测,并且缺乏明确的规范来解释这些行为。作者认为,官方规范对于理解编译器行为、跨平台兼容性、版本升级兼容性、开发代码分析工具、支持替代编译器、编写不安全代码、与其他语言互操作以及编写安全攸关软件至关重要。文章还讨论了Ferrocene 语言规范的现状和局限性,并强调了官方 Rust 语言规范的必要性,特别是在安全攸关软件领域。

阅读更多
未分类

沃尔沃生产线上的Rust

2024-10-08
沃尔沃生产线上的Rust

本文是对沃尔沃软件架构师Julius Gustavsson的采访,他从2019年开始在沃尔沃使用Rust语言开发汽车ECU(电子控制单元)。Julius详细介绍了选择Rust的原因、开发过程中的体验以及对未来Rust应用的展望。文章总结了Rust在嵌入式系统开发中的优势,例如可靠性高、代码质量高、团队合作效率高,但也指出了目前Rust在工具链方面存在的不足。

阅读更多
未分类 汽车软件

用面向数据的设计优化解析器/编译器:一个案例研究

2024-06-23
用面向数据的设计优化解析器/编译器:一个案例研究

本文介绍了如何使用面向数据设计(DoD)优化Roc编译器的解析器。作者首先解释了DoD的概念,即数据结构应该引导代码结构。然后,以Def类型为例,展示了如何使用Struct of Arrays的DoD方法来改进数据表示,从而提高性能。文章最后通过基准测试结果证明了DoD方法在内存使用和运行时间方面的优势。

阅读更多