blob: 94a32a92d6bb8d27e5b83ecb35d0a5acf27707f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
[English](README_en.md) | **中文**
# SpacemiT K1 BSP
## 简介
SpacemiT K1(进迭时空 K1)是一款 64 位 RISC-V SoC,集成 8 个 X60 CPU 核心,
支持浮点和向量扩展,并提供 SD/eMMC、PCIe、以太网、显示及音频等外设接口。
本 BSP 基于 RT-Thread 标准版和设备模型,通过 Device Tree 描述板级硬件,
由 U-Boot/OpenSBI 引导,在 S-mode 下运行。默认启用 MMU 和 8 核 SMP,
支持存储、网络、多媒体及电源管理等功能。
验证平台为 **Banana Pi BPI-F3 SBC**。早期控制台使用 SBI,正常控制台为
UART0,串口参数为 115200 8N1。下文启动命令仅适用于该板原厂固件环境。
## 支持情况
| 功能 | 状态 | 说明 |
| --- | --- | --- |
| MMU / SMP | 支持 | 默认启用 8 个 CPU 核心 |
| UART / early console | 支持 | UART0、SBI 早期输出 |
| Clock / reset / power domain | 支持 | 时钟、复位及电源域控制 |
| GPIO / pinctrl / I2C / PWM | 支持 | 引脚配置及基础外设 |
| SPI / QSPI | 支持 | SPI NOR |
| SD / eMMC | 支持 | SDHCI、eMMC HS400 |
| RTC / ADC / 电源键 | 支持 | SpacemiT PMIC 子设备 |
| PCIe / NVMe | 支持 | PCIe host、NVMe 块设备 |
| Ethernet / PTP | 支持 | K1X EMAC、PTP 时钟 |
| HDMI framebuffer | 支持 | 支持冷启动显示 |
| JPU / V2D | 支持 | JPEG 解码、2D 图形加速 |
| HDMI / ES8326 audio | 支持 | 48 kHz、双声道、16-bit PCM |
| CPUfreq | 支持 | OPP 调频调压 |
| Thermal | 支持 | 4 路温度传感器,采样时序修复待验证 |
| AES / RNG / eFuse | 支持 | 硬件加密、随机数及芯片信息 |
| Display | 支持 | HDMI |
## 编译
安装 SCons、Python 3 和 kconfiglib。工具链下载:
- [SpacemiT 工具链归档](https://archive.spacemit.com/toolchain/)
- [RT-Thread RISC-V64 musl GCC](https://download.rt-thread.org/rt-smart/riscv64/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_251248.tar.bz2)
以工具链安装在 `/opt` 为例,在 RT-Thread 根目录执行:
```shell
cd bsp/spacemit/k1
export RTT_CC=gcc
export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=riscv64-unknown-linux-musl-
scons
```
生成 `rtthread.bin` 和 `rtthread.elf`。可通过 `scons --menuconfig` 调整配置。
## 启动
以下命令仅适用于 **Banana Pi BPI-F3 原厂 U-Boot/OpenSBI 环境**。
将 `rtthread.bin` 放到启动分区中,与 Linux `Image`、`k1-x_*.dtb` 同目录。
在 U-Boot 控制台执行:
```shell
setenv rtt_bootargs 'earlycon=sbi console=ttyS0,115200 cma=32M coherent_pool=8M root=sd0p4 rootfstype=elm rootwait rw'
setenv boot_rtt 'setenv knl_name rtthread.bin; setenv bootargs ${rtt_bootargs}; run detect_dtb; run loadknl; run loaddtb; setenv ramdisk_combo -; run start_kernel'
saveenv
run boot_rtt
```
后续直接执行 `run boot_rtt`。根据实际分区修改 `root=sd0p4`;
保留 DMA 内存参数以供显示等设备使用。
|