广告

嵌入式Rust:Cortex-M QuickStart模板

2025-01-27 09:22:19 Jacob Beningo 阅读:
我将在这篇文章中向您介绍Cortex-M QuickStart模板,它可以让您在设置嵌入式Rust项目时更加轻松···

学习嵌入式Rust需要理解高级语言概念和与硬件交互的低级细节。我建议从阅读《Rust编程语言》一书开始。一旦理解了这些概念,再深入学习嵌入式方面的知识就容易多了。mnRednc

不过,在本系列文章中,我们不会采用这种方法。当然,我假设您会阅读这些材料,但我知道其实您已经迫不及待地想使用Rust在开发板上点亮LED了。我们将从底层(硅片)开始研究Rust,从如何启动和运行项目开始。为此,我将在这篇文章中向您介绍Cortex-M QuickStart模板,它可以让您在设置嵌入式Rust项目时更加轻松。mnRednc

嵌入式设备上的Rust资源

在我们开始使用Cortex-M QuickStart模板创建嵌入式Rust项目之前,了解在哪里可以找到有关嵌入式Rust的资源非常重要。我们将要使用的QuickStart模板由嵌入式设备Rust工作组提供。如果你查看一下他们的GitHub页面,就会发现这里有大量资源,例如:mnRednc

  • Cortex-M QuickStart模板
  • svd2rust工具(将svd文件转换为内存映射库)
  • embedded-hal
  • 无堆示例
  • 书籍和其他资源集

他们目前有超过50个资源库,旨在帮助开发人员快速掌握Rust。虽然并不完美,但它们可以帮助您立即开始工作。mnRednc

这篇文章中我们主要研究的资源是Cortex-M QuickStart模板mnRednc

Cortex-M QuickStart模板简介

Cortex-M QuickStart模板是为使用STM32F3 Discovery开发板的Arm Cortex-M处理器设计的嵌入式Rust项目的示例。在所有项目中,都必须遵循几个步骤才能完成设置,不过该模板会为您处理大部分步骤。让我们来看看模板已经为您管理的一些关键任务。mnRednc

首先,您将获得一个项目结构,该结构非常简单,但会将配置、示例和应用分开。下面是为blinky应用设置的项目结构:mnRednc

mnRednc

 mnRednc

接下来,模板设置了启动所需的所有依赖项和工具链。Cargo.toml文件已预先配置为支持常见的crate,如cortex-m、cortex-m-rt和panic-halt。我们将在以后的文章中更详细地探讨这一点。mnRednc

接下来,项目已经配置好了编译和调试。配置文件允许您选择要编译的Arm架构,以及它是针对目标还是QEMU仿真。mnRednc

如果仔细查看目录结构,您还会看到openocd的配置。可以自定义VS Code的预配置启动文件以使用SEGGER J-Link、STLink或您感兴趣的任何调试服务器。mnRednc

最后,还有示例应用程序。默认的main.rs只是为了说“Hello World!”。不过,还有一个示例文件夹,该文件夹包含用于测试常见嵌入式需求的其他应用,例如:mnRednc

  • 分配内存
  • 启用中断
  • 处理异常
  • 使用ITM
  • 测试Rust panic选项

现在,您对模板提供的功能有了一定的了解,让我们看看如何利用此模板快速启动并运行应用。mnRednc

使用Cortex-M QuickStart模板创建项目

使用快速启动模板创建嵌入式Rust项目非常简单。首先,您必须确保已安装生成工具。Generate是一种实用程序,用于从现有模板快速创建新的Rust项目,它允许开发人员使用包含样板代码和项目结构的预定义模板,从而简化了启动新项目的过程。可使用以下命令从终端安装它:mnRednc

cargo install cargo-generatemnRednc

安装该工具后,您可以通过执行以下命令创建一个新的嵌入式Rust应用:mnRednc

cargo generate --git https://github.com/rust-embedded/cortex-m-quickstartmnRednc

我们使用generate关键字调用Cargo、Rust包管理器和编译系统。然后我们告诉Cargo我们想要从Git代码库创建一个应用,并提供代码库URL,即Cortex-M QuickStart代码库。mnRednc

运行命令后,系统会提示您输入一些有关项目的信息。最基本的信息是决定项目的名称。如果您想探索模板项目,它是为STM32F3 Discovery开发板设置的,您可以将项目命名为stm32f3_blinky。mnRednc

我将向您展示一个使用名为stm32u575_blinky的STM32U575 Nucleo开发板的示例。调用生成命令并提供我的项目名称后,我得到如下所示的输出:mnRednc

mnRednc

它从模板创建了几个文件,这些文件就是我们在上一节讨论过的文件。mnRednc

您可以运行cargo build,然后运行​​cargo run来执行默认应用,或者您也可以只使用cargo run,它将编译并运行该应用。mnRednc

下一步行动

Cortex-M QuickStart模板是启动和运行嵌入式项目的简便方法。但请记住,默认情况下它是为STM32F3 Discovery开发板设置的。在今天的文章中,我们讨论了模板以及如何使用Cargo Generate在其基础上创建新项目。mnRednc

你可以按照以下几个步骤继续你的嵌入式Rust之旅:mnRednc

  • 找到你想要创建项目的开发板
  • 使用cargo generate和Cortex-M QuickStart模板创建一个新项目
  • 探索模板项目

在下一篇文章中,我们将深入探讨如何修改我们可能感兴趣的所有微控制器的默认项目。这将涉及修改目标架构的配置文件和修改链接器文件。mnRednc

(原文刊登于EDN姊妹网站Embedded,参考链接:Embedded Rust: The Cortex-M QuickStart Template,由Ricardo Xie编译。)mnRednc

相关阅读:

嵌入式Rust系列教程mnRednc

责编:Ricardo
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了