SDK固件编译
本章节主要介绍获取V821 SDK后,如何编译SDK,以及编译SDK中的单个组件。如果您已拿到V821的开发板,想快速进入Demo演示和体验,可先跳过本章节,进入到 SDK固件烧录章节。
SDK 整体编译
检查SDK文件
下载完成后的 SDK 应有如下文件,可以使用 ls 或者 tree -L 1 命令检查
.
├── brandy
├── bsp
├── build
├── build.sh -> build/top_build.sh
├── device
├── kernel
├── openwrt
├── platform
├── prebuilt
├── rtos
└── tools
10 directories, 1 file

初始化环境
使用命令 source build/envsetup.sh 初始化SDK编译环境,初始化后便可以使用快捷指令与SDK相关指令。

选择方案
使用命令 lunch 选择编译的方案,这里以选择 v821-perf2-tina 为例,选择 4

阅读免责声明
如果是一次下载使用SDK,lunch 选择方案后,需要等待8s来阅读免责声明,并按提示输入Y并回车确认接受免责声明。输入之后这份SDK,再做其他操作不会再有这个等待和提示。

等待初始化环境
确认后需要等待 SDK 解压工具链,初始化开发环境

完整编译SDK
使用命令 m 或 make 完整编译 SDK,也可以使用快捷命令 mp 执行编译和打包的动作。可以使用 m -jN 参数N为并行编译进程数量,依赖编译服务器CPU核心数,如 4 核PC,可 m -j4

打包固件
SDK 编译完成,需要使用pack命令打包固件,其会在out目录下输出固件

可以在 SDK 目录中的 out 文件夹找到

SDK 组件单独编译
在开发过程中,会需要单独编译某一模块,但是完整编译太慢效率较低,这时可以使用单编命令。
| 命令 | 作用 | 作用范围 |
|---|---|---|
| mboot | 编译boot0和uboot | boot0和uboot |
| mboot0 | 编译boot0 | boot0 |
| muboot | 编译uboot | uboot,uboot设备树 |
| mkernel | 编译内核 | 内核,设备树 |
| mrtos | 编译rtos镜像 | rtos镜像 |
| mkmpp | 编译eyesee-mpp-middleware | eyesee-mpp-middleware |
| cleanmpp | 清除eyesee-mpp-middleware的编译 | eyesee-mpp-middleware |
编译内核与内核设备树
使用命令 mkernel 可以单独编译内核与设备树,之后可以用 p 命令打包固件,编译后的 Kernel 固件会自动拷贝到 out 目录下 out/kernel/build 中
mkernel

编译 RTOS
RTOS 可以使用 mrtos 编译,编译完成后使用 pack 打包,编译后的 RTOS 固件会自动拷贝到 device 目录下对应板级配置中。例如这里使用的 v821-perf2 板,会拷贝到 device/config/chips/v821/configs/perf2/bin/amp_rv0.bin

清理 RTOS 编译
可以使用 mrtos clean 命令清除上一次的 RTOS 编译产物。

编译 U-Boot 与 U-Boot 设备树
U-Boot 可以使用muboot目录编译,编译前会自动执行 clean 清除之前的编译产物。编译完成后使用 pack 打包,输出的 U-Boot 文件会自动拷贝到 device 目 录下对应板级配置中。例如这里使用的 v821-perf2 板,会拷贝到 device/config/chips/v821/configs/perf2/bin
muboot

编译 SPL
SPL 可以用 mboot0 来编译,编译前会自动执行 clean 清除之前的编译产物。编译完成后使用 pack 打包,输出的 boot0 文件会自动拷贝到 device 目录下对应板级配置中。例如这里使用的 v821-perf2 板,会拷贝到 device/config/chips/v821/configs/perf2/bin

编译 U-Boot和SPL
可以使用命令 mboot 同时编译 U-boot 和 SPL,编译前会自动执行 clean 清除之前的编译产物。该命令会先编译 U-Boot 然后再编译 SPL

编译 MPP
可以使用 mkmpp 命令单独编译 mpp,请注意编译前需要在 menuconfig 中配置需要编译的软件包

清除 MPP 编译
使用 cleanmpp 命令清除 MPP 编译产物
