1个不稳定版本
0.0.0 | 2018年10月21日 |
---|
#224 in #hal
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
组件(预编译的core
crate)用于ARM Cortex-M目标。运行
$ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf
使用此模板
注意:这是仅涵盖构建程序的简短版本。对于涵盖闪存、运行和调试程序的完整版本,请参阅嵌入式Rust书籍。
- 在开始之前,您需要确定目标设备的某些特性,因为它们将用于配置项目
-
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区域,但为了简单起见,我们将忽略它)。
- 实例化模板。
$ 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
- 设置默认编译目标。如下所述,有四个选项
.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)
- 将内存区域信息输入到
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
}
- 构建模板应用程序或其中一个示例。
$ cargo build
许可协议
此模板根据以下任一项许可
-
Apache许可证第2版(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
由您自行选择。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双重授权,没有任何附加条款或条件。
行为准则
对本crate的贡献是在《Rust行为准则》的条款下组织的,本crate的维护者、Cortex-M团队承诺将介入维护该行为准则。
依赖项
~2.5MB
~48K SLoC