#hal #github #cortex-m #arm #com-solo-keys-sec-solo

app solohal

工作进行中 - 为 https://github.com/SoloKeysSec/solo 实现的HAL

1个不稳定版本

0.0.0 2018年10月21日

#224 in #hal

MIT/Apache

10KB
53

cortex-m-quickstart

用于构建ARM Cortex-M微控制器应用程序的模板

此项目由Cortex-M团队开发和维护。

依赖项

要使用此模板构建嵌入式程序,您需要

  • Rust 1.31、1.30-beta、nightly-2018-09-13或更新的工具链。例如,rustup default beta

  • cargo generate子命令。 安装说明

  • rust-std组件(预编译的corecrate)用于ARM Cortex-M目标。运行

$ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf

使用此模板

注意:这是仅涵盖构建程序的简短版本。对于涵盖闪存、运行和调试程序的完整版本,请参阅嵌入式Rust书籍

  1. 在开始之前,您需要确定目标设备的某些特性,因为它们将用于配置项目
  • ARM核心。例如,Cortex-M3。

  • ARM核心是否包含FPU?Cortex-M4F和Cortex-M7F核心包含FPU。

  • 目标设备有多少Flash内存和RAM?例如,256 KiB的Flash和32 KiB的RAM。

  • Flash内存和RAM映射在地址空间中的位置在哪里?例如,RAM通常位于地址0x2000_0000

您可以在设备的数据表或参考手册中找到此信息。

在此示例中,我们将使用STM32F3DISCOVERY。该板包含STM32F303VCT6微控制器。该微控制器具有

  • 一个包含单精度FPU的Cortex-M4F核心

  • 位于地址0x0800_0000的256 KiB Flash。

  • 位于地址0x2000_0000的40 KiB RAM。(还有一个RAM区域,但为了简单起见,我们将忽略它)。

  1. 实例化模板。
$ cargo generate --git https://github.com/rust-embedded/cortex-m-quickstart
 Project Name: app
 Creating project called `app`...
 Done! New project created /tmp/app

$ cd app
  1. 设置默认编译目标。如下所述,有四个选项.cargo/config底部。对于具有Cortex-M4F核心的STM32F303VCT6,我们将选择thumbv7em-none-eabihf目标。
$ tail -n6 .cargo/config
[build]
# Pick ONE of these compilation targets
# target = "thumbv6m-none-eabi"    # Cortex-M0 and Cortex-M0+
# target = "thumbv7m-none-eabi"    # Cortex-M3
# target = "thumbv7em-none-eabi"   # Cortex-M4 and Cortex-M7 (no FPU)
target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU)
  1. 将内存区域信息输入到memory.x文件中。
$ cat memory.x
/* Linker script for the STM32F303VCT6 */
MEMORY
{
  /* NOTE 1 K = 1 KiBi = 1024 bytes */
  FLASH : ORIGIN = 0x08000000, LENGTH = 256K
  RAM : ORIGIN = 0x20000000, LENGTH = 40K
}
  1. 构建模板应用程序或其中一个示例。
$ cargo build

许可协议

此模板根据以下任一项许可

由您自行选择。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双重授权,没有任何附加条款或条件。

行为准则

对本crate的贡献是在《Rust行为准则》的条款下组织的,本crate的维护者、Cortex-M团队承诺将介入维护该行为准则。

依赖项

~2.5MB
~48K SLoC