#kernel #teensy-4 #teensy #no-std

nightly no-std teensycore

为Teensy-4.0微控制器编写的内核

16个版本

0.1.0 2023年12月3日
0.0.15 2023年12月2日
0.0.14 2023年6月9日
0.0.13 2023年3月17日
0.0.6 2022年1月18日

#1 in #teensy

每月47次下载

MIT 许可证

240KB
6K SLoC

Teensycore

Teensycore是用Rust编写的内核,用于Teensy-4.0微控制器

安装

要正确构建Teensycore和任何后续项目,你需要以下内容

# Install build tools
sudo apt-get install build-essential gcc-arm-none-eabi jq

# Configure rust
rustup default nightly
rustup target add thumbv7em-none-eabihf

使用方法

首先,将你的项目配置为库。你的Cargo.toml应该看起来像这样

[package]
name = "my_project"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["staticlib"]
path = "src/lib.rs"

[dependencies]
teensycore = "^0.1.0"

Teensycore导出一个方便的宏,它有助于配置应用程序的入口点。它负责默认的panic处理程序、初始化系统时钟、设置irq、启用调试UART等等。这样,你就可以专注于项目启动所需的内容。用以下内容替换你的src/lib.rs

#![feature(lang_items)]
#![crate_type = "staticlib"]
#![no_std]

use teensycore::prelude::*;

teensycore::main!({
    /* Application code here */
});

你现在可以开始编写裸机Rust代码了!

构建

为了使你的项目正确构建,你需要以下内容

  • 将你的项目配置为库
  • 将你的入口点代码放在src/lib.rs中
  • 下载构建模板 bash脚本
  • 执行build-template.sh代替cargo build

构建脚本将生成一个.hex文件并将其放置在名为out的文件夹中。此hex文件与Teensy 4.0兼容,可以用teensy-loader实用程序进行闪存。

注意:不要以发布模式构建。它会优化很多东西,可能会造成问题。

示例

以下是一个非常基础的闪烁示例。要查看更多示例,请查看/examples文件夹。

#![feature(lang_items)]
#![crate_type = "staticlib"]
#![no_std]

use teensycore::prelude::*;

main!({
    pin_mode(13, Mode::Output);

    loop {
        pin_out(13, Power::High);
        wait_ns(1 * S_TO_NANO);
        pin_out(13, Power::Low);
        wait_ns(1 * S_TO_NANO);
    }
});

贡献

该项目仍在进行中,在接下来的几个月和几年中,我将继续对其进行重大开发,使其满足我的需求。欢迎贡献。如果你有任何具体问题,请提交问题。

许可证

MIT

无运行时依赖

~185KB