Skip to content

idlercloud/asynclear

Repository files navigation

asynclear

基于 Rust 的异步操作系统内核。可运行在 riscv64gc 环境下。

结构说明

本项目采取 xtask 模式。可以认为是用 rust 写 make 或 bash 脚本。

这种模式只需要有 rust 环境就可以,无需其他依赖;而且更方便跨平台。

使用 cargo xtask --help 列出所有可用的任务,然后可以通过 cargo <task> 来运行(原理为在 .cargo/config.toml 设置 alias)。如 cargo xbuild 将构建内核和用户程序。具体参数可以查看每个任务的 --help

如何运行

  1. 安装 qemu-system-riscv64,建议版本不低于 7.0
  2. 安装 rust 环境,请务必官方提供的安装方式
  3. 运行 cargo env
  4. 运行 cargo qemu

可以通过环境变量 KERNEL_CLOGKERNEL_FLOGKERNEL_SLOG 来具体指定日志级别。

开发指南

vscode 配置

若使用 vscode + rust-analyzer,建议将以下设置加入 vscode 设置:

"rust-analyzer.cargo.features": ["profiling"],
"rust-analyzer.check.overrideCommand": [
    "cargo",
    "check",
    "--message-format=json",
    /* for kernel and user apps */
    "--target",
    "riscv64gc-unknown-none-elf",
    "--package",
    "kernel",
    "--features",
    "profiling",
    "--package",
    "user",
    /* for xtask */
    // "--package",
    // "xtask",
],

由于一些限制,不能同时检查 kernel 和 xtask,若需开发 xtask,将上面的部分注释,再将 xtask 部分取消注释

可以通过调整添加 vscode 设置使 unsafe 块显示为血红色:

"editor.semanticTokenColorCustomizations": {
    "enabled": true,
    "rules": {
        "*.unsafe:rust": "#ff4040"
    }
},

如非必要最好不要写 unsafe,如果一定要用,请控制使用范围,并且尽量不要从 *const T/*mut T 转换成 &T/&mut T,转换了也不要长期持有。

推荐扩展:

  • rust-analyzer
  • Even Better TOML
  • crates
  • Error Lens
  • C/C++(调试用)
  • RISC-V Support
  • todo tree(用于查看项目中的 TODO/FIXME/NOTE)
  • ANSI Colors(用于查看日志文件)
  • AutoCorrect(中英文之间自动加空格隔开)

可以为 Todo Tree 添加以下配置: