rk3566文档

泰山派linux build sdk

这部分uboot因为是在内核和rootfs之前编译的 好像暂时没有配置这两个东西的内容?

target

image-stage1: rk356x_spl_loader_v1.16.112.bin
image-stage2: u-boot.bin (FIT)
bl31_0x[xxxxxxx]: ATF的六个阶段,0x…地址表示起始执行地址
bl31.elf
tee.bin:
log: output/TSPI-RK3566-USER-V10-LINUX/{builddate}/log/

stage 1

芯片上电/复位后, cpu运行bootrom中的代码, 将stage1 也就是SPL放到sram中
执行硬件配置,如时钟和dram初始化, 然后将stage 2的代码加载到sdram中(uboot.bin)

还可以引导FIT镜像和原始img

设备树

外设的配置文件, 源码-目标: dts:dtb
bootloader会在系统启动时将dtb传递给内核

FIT

Flattended Image Tree, 将多个镜像(内核 设备树 ramdisk等)通过dts语法编译生成一个镜像文件
its: fit源码文件, 还会包含签名信息
itb: fit target
its code:

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
/dts-v1/;
/ {
description = "U-Boot FIT source file for arm";

images {
fdt {
data = /incbin/("@KERNEL_DTB@");
type = "flat_dt";
arch = "arm64";
compression = "none";
load = <0xffffff00>;

hash {
algo = "sha256";
};
};

kernel {
data = /incbin/("@KERNEL_IMG@");
type = "kernel";
arch = "arm64";
os = "linux";
compression = "none";
entry = <0xffffff01>;
load = <0xffffff01>;

hash {
algo = "sha256";
};
};

resource {
data = /incbin/("@RESOURCE_IMG@");
type = "multi";
arch = "arm64";
compression = "none";

hash {
algo = "sha256";
};
};
};

configurations {
default = "conf";

conf {
rollback-index = <0x00>;
fdt = "fdt";
kernel = "kernel";
multi = "resource";

signature {
algo = "sha256,rsa2048";
padding = "pss";
key-name-hint = "dev";
sign-images = "fdt", "kernel", "multi";
};
};
};
};

stage 2

TODO

编译过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
process_args $* # 处理参数,这里只传了arm交叉编译链
prepare # 指定rkbin路径, 开启trustzone
select_toolchain # 指定编译链
select_chip_info # 指定芯片信息, 这里是3568
fixup_platform_configure
select_ini_file # 选择配置文件
handle_args_late # 配置加到ARG_LIST_FIT
sub_commands # 编译uboot spl
clean_files
make PYTHON=python2 CROSS_COMPILE=${TOOLCHAIN} all --jobs=${JOB}
pack_images # 打包FIT和spl镜像
finish
echo ${TOOLCHAIN}
date

ini配置如下

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
// rk3568TRUST.ini
[VERSION]
MAJOR=1
MINOR=0
[BL30_OPTION]
SEC=0
[BL31_OPTION]
SEC=1
PATH=bin/rk35/rk3568_bl31_v1.43.elf
ADDR=0x00040000
[BL32_OPTION]
SEC=1
PATH=bin/rk35/rk3568_bl32_v2.09.bin
ADDR=0x08400000
[BL33_OPTION]
SEC=0
[OUTPUT]
PATH=trust.img

// rk3568MINIALL.ini
[CHIP_NAME]
NAME=RK3568
[VERSION]
MAJOR=1
MINOR=1
[CODE471_OPTION]
NUM=1
Path1=bin/rk35/rk3568_ddr_1332MHz_v1.16.bin
Sleep=1
[CODE472_OPTION]
NUM=1
Path1=bin/rk35/rk356x_usbplug_v1.17.bin
[LOADER_OPTION]
NUM=2
LOADER1=FlashData
LOADER2=FlashBoot
FlashData=bin/rk35/rk3568_ddr_1332MHz_v1.16.bin
FlashBoot=bin/rk35/rk356x_spl_v1.12.bin
[OUTPUT]
PATH=rk356x_spl_loader_v1.16.112.bin
[SYSTEM]
NEWIDB=true
[FLAG]
471_RC4_OFF=true
RC4_OFF=true

uboot.bin(fit)含:
uboot
atf-[2~6]
optee