Skip to content

Commit 4fa87ea

Browse files
committed
更新 A1000 和 Rk3588 域控制器文档,添加构建和部署步骤,新增相关图片
1 parent 6c45c9b commit 4fa87ea

File tree

17 files changed

+266
-38
lines changed

17 files changed

+266
-38
lines changed

docs/quickstart/a1000.md

Lines changed: 81 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,37 @@ sidebar_label: "A1000域控制器"
1111

1212
本文中的构建及部署环境均采用 Ubuntu 22.04 作为开发环境。
1313

14-
## 构建
14+
## 获取源代码
1515

16-
### 构建 Linux 客户机镜像
16+
1. 创建工作目录
17+
``` bash
18+
mkdir ~/a1000-project
19+
cd ~/a1000-project
20+
```
1721

18-
#### 获取 SDK
22+
2. 克隆必需仓库
23+
```bash
24+
# 克隆 AxVisor Hypervisor 源码
25+
git clone https://github.com/arceos-hypervisor/axvisor.git
1926

20-
``` bash
21-
git clone git@github.com:arceos-hypervisor/bst-a1000.git
27+
# 克隆 A1000 内核和工具源码
28+
git clone https://github.com/arceos-hypervisor/bst-a1000.git
2229
```
30+
3. 验证目录结构
31+
32+
执行成功后,目录结构应如下:
2333

2434
![仓库目录](./imgs_a1000/image.png)
2535

26-
#### 构建过程
36+
## 构建
37+
38+
### 构建 Linux 客户机镜像
39+
40+
客户机镜像是运行在 AxVisor Hypervisor 之上的 Linux 操作系统内核。
2741

2842
1. 进入项目目录并赋予内核文件夹执行权限:
2943
```bash
30-
cd bst-al000
44+
cd ~/a1000-project/bst-a1000
3145
sudo chmod -R 755 ./kernel/
3246
```
3347

@@ -50,41 +64,49 @@ git clone git@github.com:arceos-hypervisor/bst-a1000.git
5064

5165
执行多线程编译,加速构建过程:
5266
```bash
53-
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build_bst \
54-
-j$(nproc) CC=aarch64-linux-gnu-gcc-9
67+
make CROSS_COMPILE=aarch64-linux-gnu- \
68+
ARCH=arm64 \
69+
O=build_bst \
70+
-j$(nproc) \
71+
CC=aarch64-linux-gnu-gcc-9
5572
```
5673

5774
> 提示:`-j$(nproc)` 参数会自动使用所有可用的 CPU 核心进行并行编译
5875

5976
![编译过程](./imgs_a1000/img-2.png)
6077

61-
4. 编译产物
78+
4. 验证编译产物
6279

6380
编译成功后,内核镜像文件位于:
6481
```
65-
build_bst/arch/arm64/boot/Image
82+
# 检查内核镜像是否生成
83+
ls -lh build_bst/arch/arm64/boot/Image
84+
85+
# 查看镜像大小和时间戳
86+
file build_bst/arch/arm64/boot/Image
6687
```
6788

68-
## 构建 AxVisor 镜像
89+
### 构建 AxVisor 镜像
90+
91+
以下以 **A 核**为例演示构建过程,若使用 B 核,请相应调整配置文件和 DTB 文件。\
6992

70-
以下以 **A 核**为例演示构建过程,若使用 B 核,请相应调整配置文件和 DTB 文件。
71-
### 步骤 1:编译客户机设备树
93+
#### 步骤 1:编译客户机设备树
7294

73-
#### 1.1 准备设备树源文件
95+
##### 1.1 准备设备树源文件
7496

7597
AxVisor 源码的 `configs/vms` 目录下提供了适用于 A1000 域控制器的设备树源文件:
7698

7799
- **A 核**`linux-aarch64-a1000-smp8-fada.dts`
78100
- **B 核**`linux-aarch64-a1000-smp8-fadb.dts`
79101

80-
#### 1.2 编译设备树
102+
##### 1.2 编译设备树
81103

82104
客户机设备树文件记录了传递给客户机的硬件设备信息(CPU、内存、外设等),这些信息**必须与客户机配置文件保持一致**
83105

84106
使用 `dtc` 工具编译设备树:
85107
```bash
86108
# 编译 A 核设备树
87-
cd configs/vms
109+
cd ~/a1000-project/axvisor/configs/vms
88110
dtc -I dts -O dtb \
89111
-o linux-aarch64-a1000-smp8-fada.dtb \
90112
linux-aarch64-a1000-smp8-fada.dts
@@ -94,9 +116,9 @@ dtc -I dts -O dtb \
94116

95117
---
96118

97-
### 步骤 2:配置客户机参数
119+
#### 步骤 2:配置客户机参数
98120

99-
#### 2.1 选择配置文件
121+
##### 2.1 选择配置文件
100122

101123
AxVisor 源码的 `configs/vms` 目录下提供了配置文件模板:
102124
```
@@ -110,7 +132,7 @@ configs/vms/linux-aarch64-a1000_smp8.toml
110132
- 内存大小
111133
- 设备资源等等
112134
113-
#### 2.2 选择镜像加载方式
135+
##### 2.2 选择镜像加载方式
114136
115137
AxVisor 支持两种客户机镜像加载方式,根据使用场景选择合适的方式:
116138
@@ -119,7 +141,7 @@ AxVisor 支持两种客户机镜像加载方式,根据使用场景选择合适
119141
| 从文件系统加载 | `image_location = "fs"` | 域控制器文件系统中的绝对路径 |
120142
| 从内存加载 | `image_location = "memory"` | 本地构建环境中的绝对路径 |
121143
122-
#### 2.3 编辑配置文件
144+
##### 2.3 编辑配置文件
123145
124146
打开配置文件 `configs/vms/linux-aarch64-a1000-smp8.toml`,根据选择的加载方式进行配置:
125147
@@ -172,9 +194,10 @@ dtb_path = "./configs/vms/linux-aarch64-a1000-smp8-fada.dtb"
172194
173195
---
174196

175-
### 步骤 3:编译 AxVisor 镜像
197+
#### 步骤 3:编译 AxVisor 镜像
176198

177199
```bash
200+
cd ~/a1000-project/axvisor
178201
./axvisor.sh build \
179202
--plat aarch64-generic \
180203
--arceos-args "LOG=off,SMP=8" \
@@ -186,22 +209,44 @@ dtb_path = "./configs/vms/linux-aarch64-a1000-smp8-fada.dtb"
186209
- `--arceos-args`:ArceOS 参数配置(日志级别、SMP 核心数等)
187210
- `--vmconfigs`:客户机配置文件路径
188211

189-
### 步骤 4:生成可烧写镜像
212+
**验证编译结果**
213+
214+
``` bash
215+
ls -lh axvisor_aarch64-generic.bin
216+
217+
# 查看文件信息
218+
file axvisor_aarch64-generic.bin
219+
```
220+
221+
#### 步骤 4:生成可烧写镜像
222+
223+
4.1 配置镜像描述文件 (ITS)
224+
ITS 文件 (Image Tree Source) 定义了如何将多个组件打包成一个可启动的 FIT 镜像。
225+
```bash
226+
cd ~/a1000-project/bst-a1000
227+
228+
# 编辑 A 核 ITS 配置文件
229+
vim a1000b/bsta1000b-fada-arceos.its
230+
```
231+
232+
4.2 修改文件路径
233+
需要修改三个关键路径:
190234

191-
切换到 `bst-al000` 目录,编辑镜像配置文件 `tools/a1000b/bsta1000b-fada-arceos.its`,修改以下数据路径:
192235
```its
193236
images {
194237
kernel {
195238
description = "ArceOS for BST A1000B";
196-
data = /incbin/("../../axvisor_aarch64-generic.bin");
239+
data = /incbin/("../../../axvisor/axvisor_aarch64-generic.bin");
197240
...
241+
198242
fdt-fada {
199243
description = "bsta1000b-fada fdt";
200-
data = /incbin/("/home/yanlien/Workspace/project_check/a1000/host/bsta1000b-fada.dtb");
244+
data = /incbin/("../../bst_dt/bsta1000b-fada.dtb");
201245
...
246+
202247
fdt-fadb {
203248
description = "bsta1000b-fadb fdt";
204-
data = /incbin/("/home/yanlien/Workspace/project_check/a1000/host/bsta1000b-fadb.dtb");
249+
data = /incbin/(../../bst_dt/bsta1000b-fadb.dtb");
205250
...
206251
```
207252

@@ -211,21 +256,21 @@ fdt-fadb {
211256

212257
1. **Axvisor 内核镜像路径**
213258
```its
214-
data = /incbin/("../../axvisor_aarch64-generic.bin");
259+
data = /incbin/("../../../axvisor/axvisor_aarch64-generic.bin");
215260
```
216261
- 指向 AxVisor 编译生成的二进制镜像文件
217262
- 默认相对路径为 AxVisor 根目录下的 `axvisor_aarch64-generic.bin`
218263

219264
2. **A 核设备树路径**
220265
```its
221-
data = /incbin/("path/to/bsta1000b-fada.dtb");
266+
data = /incbin/("../../bst_dt/bsta1000b-fada.dtb");
222267
```
223268
- 替换为 A 核 Host 设备树的实际路径
224269
- 示例:`"/home/username/workspace/bst-al000/bsta1000b-fada.dtb"`
225270

226271
3. **B 核设备树路径**
227272
```its
228-
data = /incbin/("path/to/bsta1000b-fadb.dtb");
273+
data = /incbin/("../../bst_dt/bsta1000b-fadb.dtb");
229274
```
230275
- 替换为 B 核 Host 设备树的实际路径
231276
- 示例:`"/home/username/workspace/bst-al000/bsta1000b-fadb.dtb"`
@@ -235,14 +280,13 @@ fdt-fadb {
235280
> - 确保所有文件路径真实存在,否则 `mkimage` 打包将失败
236281
> - 路径中不能包含中文字符或特殊字符
237282
238-
切换到bst-al000目录下,把bsta1000b-fada-arceos.its文件中的
239-
240283
修改完成后保存文件,即可进行下一步的镜像打包操作。
241284

242285
使用 `mkimage` 工具生成最终的可烧写镜像文件:
243286
```bash
244-
./tools/a1000b/mkimage \
245-
-f ./tools/a1000b/bsta1000b-fada-arceos.its \
287+
cd ~/a1000-project/bst-a1000
288+
./a1000b/mkimage \
289+
-f ./a1000b/bsta1000b-fada-arceos.its \
246290
Image.itb
247291
```
248292

@@ -284,10 +328,10 @@ mount /dev/mmcblk0p1 /mnt
284328
在上位机终端执行以下命令,将新的 Host 设备树文件推送至域控制器:
285329
```bash
286330
# 推送 A 核设备树
287-
adb push bsta1000b-fada.dtb /mnt/bsta1000b-fada.dtb
331+
adb push ~/a1000-project/bst-a1000/bst_dt/bsta1000b-fada.dtb /mnt/bsta1000b-fada.dtb
288332

289333
# 推送 B 核设备树
290-
adb push bsta1000b-fadb.dtb /mnt/bsta1000b-fadb.dtb
334+
adb push ~/a1000-project/bst-a1000/bst_dt/bsta1000b-fadb.dtb /mnt/bsta1000b-fadb.dtb
291335
```
292336

293337
---
@@ -319,7 +363,7 @@ mount /dev/mmcblk0p1 /mnt
319363

320364
在上位机终端执行以下命令,将新的内核镜像推送至域控制器:
321365
```bash
322-
adb push Image.itb /mnt/Image.itb
366+
adb push ~/a1000-project/bst-a1000/Image.itb /mnt/Image.itb
323367
```
324368

325369
#### 5. 重启设备
52.5 KB
Loading
197 KB
Loading
66 KB
Loading
105 KB
Loading
62.1 KB
Loading
687 KB
Loading
507 KB
Loading
750 KB
Loading
484 KB
Loading

0 commit comments

Comments
 (0)