Crate xwrust

source
Expand description

§XWOS RUST

§简介

XWOS RUST是Rust语言 #![no_std] 环境下的XWOS框架,可让用户使用RUST语言开发RTOS的应用。

在编写XWOS RUST时,作者充分阅读并参考了RUST语言std库的代码,尽量仿照std库的形式提供API。

传统RUST程序的入口是 main.rsfn main() , XWOS RUST的入口是 pub unsafe extern "C" fn xwrust_main()

编写XWOS RUST的应用时,需要以下步骤:

    1. 在工程目录(例如电路板模块 bm 文件夹 或 $(OEM) 文件夹)建立一个独立的 玄武模块 , 并创建 makefile
include $(XWOS_WKSPC_DIR)/XWOS.cfg
include xwbs/functions.mk
include xwbs/xwmo.rust.mk
    1. 创建 Cargo.toml
[package]
name = "rustapp"
version = "0.1.0"
edition = "2021"

[lib]
name = "rustapp"
crate-type = ["staticlib"]

[dependencies]
cortex-m = "0.7"
xwrust = {path = "../../../../xwmd/xwrust"}
    1. 创建 .cargo/config.toml
[build]
rustflags = [
 "--cfg", "unix",
 "--cfg", "target_env=\"newlib\"",
]
target-dir = "target"

[unstable]
build-std = ["core", "alloc"]
    1. src/lib.rs 中实现 pub unsafe extern "C" fn xwrust_main()
#![no_std]

use xwrust::xwmm::allocator::AllocatorMempool;

#[global_allocator]
pub static GLOBAL_ALLOCATOR: AllocatorMempool = AllocatorMempool;

#[no_mangle]
pub unsafe extern "C" fn xwrust_main() {
    // 用户代码
}
    1. 在XWOS的C语言入口 xwos_main() 中创建一个线程来调用 xwrust_main()
extern void xwrust_main(void);
xwer_t xwrust_task(void * arg);

xwos_thd_d xwrust_thd;
xwer_t xwos_main(void)
{
        struct xwos_thd_attr attr;

        xwos_thd_attr_init(&attr);
        attr.name = "xwrust.thd";
        attr.stack = NULL;
        attr.stack_size = 8192;
        attr.priority = XWRUST_THD_PRIORITY;
        attr.detached = true;
        attr.privileged = true;
        xwos_thd_create(&xwrust_thd, &attr, xwrust_task, NULL);
}

xwer_t xwrust_task(void * arg)
{
        xwrust_main();
}

§XWOS RUST 的功能

XWOS RUST提供了RTOS的基本功能:

XWOS RUST所有功能都提供了 static 创建的方法,如果不使用 Arc<T>, Box<T> 等, 即可实现完全静态内存分配的代码。

§返回XWOS首页

XWOS首页

Modules§

  • XWOS RUST:配置
  • XWOS RUST:错误码
  • XWOS RUST:宏
  • XWOS RUST:panic
  • XWOS RUST:基本类型
  • XWOS RUST:位图数组
  • XWOS RUST:设备栈
  • XWOS RUST:中间件
  • XWOS RUST:内存管理
  • XWOS RUST:内核库
  • XWOS RUST:系统时间

Macros§

  • 生成位掩码的宏
  • 生成GPIO PIN掩码的宏