2个版本
0.1.1 | 2019年4月29日 |
---|---|
0.1.0 | 2019年4月29日 |
#1415 in 硬件支持
20KB
213 行
stm32f7-discovery
构建
- 安装 thumbv7em-none-eabihf 目标:运行
rustup target add thumbv7em-none-eabihf
. - 运行
cargo build
运行
首先需要安装一些依赖
- 安装 stlink:参见 https://github.com/texane/stlink#installation.
- 安装 openocd:至少需要版本 0.10.0。您可以从您的包管理器或源代码中安装它。
- 安装 gdb-multiarch:此跨平台版本的GDB应通过您的包管理器提供。
然后您可以连接控制器并运行以下命令
- 启动 openocd:在单独的终端窗口中,运行
openocd -f board/stm32f7discovery.cfg
。您可能需要sudo
。如果您收到 "Can't find board/stm32f7discovery.cfg" 错误,则您的 openocd 版本可能太旧(它应该至少是 0.10.0)。 - 运行
cargo run
:这将连接到 openocd 实例并将您的二进制文件闪存到控制器。 - 继续执行:默认情况下,GDB 在加载后暂停执行。要继续您的程序,请运行
continue
或c
。
要按发布模式运行(即带有优化),请运行 cargo run --release
.
许可
根据您的要求,许可方式为
-
Apache许可证版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,应按上述方式双授权,不附加任何额外条款或条件。
lib.rs
:
安全和“无数据竞争”的中断系统。
中断系统特性包括:
-
基于所有权的中断管理。中断表(
InterruptTable
)拥有nvic寄存器,因此它是唯一可以访问和更改中断控制器的一个。 -
易于使用的基于闭包的ISR注册。闭包可以被注册为中断服务例程。
-
无数据竞争。得益于Rust中的
Send
和Sync
概念,中断系统无数据竞争。对一个变量的共享可变访问必须与PrimaskMutex同步,否则编译会失败。 -
带有对环境访问的有限范围ISR。保证闭包在作用域结束时会被注销。因此,在中断服务例程中访问父栈是安全的。
依赖关系
~30KB