# bsp_define

[![crates.io](https://img.shields.io/crates/v/bsp_define.svg)](https://crates.io/crates/bsp_define)
[![docs.rs](https://docs.rs/bsp_define/badge.svg)](https://docs.rs/bsp_define)

微内核 BSP（Board Support Package）硬件配置 trait 定义。

`#![no_std]`，支持 aarch64 / riscv64 架构。

## 功能

- **BspDefine trait** — 统一的板级配置入口，通过关联类型指定控制台、中断控制器、时钟源
- **ConsoleImpl** — 控制台驱动 trait（基于 `core::fmt::Write`）
- **IrqchipImpl** — 中断控制器驱动 trait（支持 GIC / PLIC / IPI）
- **ClockImpl** — 时钟源驱动 trait（支持 ARM Generic Timer / RISC-V Timer）
- **SmpDefine** — 多核启动定义（PSCI / SBI 双架构）
- **MemDefine** — 内存域布局定义（最多 8 个区域）

## 用法

```rust
use bsp_define::{BspDefine, console::ConsoleImpl, irqchip::IrqchipImpl, clocksource::ClockImpl};

struct MyBsp;

impl BspDefine for MyBsp {
    type Console = MyConsole;
    type Irqchip = MyIrqchip;
    type Clock = MyClock;

    const DEFINE_SMP: SmpDefine = /* ... */;
    const DEFINE_MEMS: MemDefine = /* ... */;
    const DEFINE_CONSOLE: Self::Console = MyConsole::new();
    const DEFINE_IRQCHIP: Self::Irqchip = MyIrqchip::new();
    const DEFINE_CLOCK: Self::Clock = MyClock::new();

    fn late_init(&self) {
        // 加载 APP、板级特有初始化
    }
}
```
