RK1126 编译

1.在根目录执行命令:./build.sh -h|help

$./build.sh help

Usage: build.sh [OPTIONS]
Available options:
BoardConfig*.mk -switch to specified board config
lunch -list current SDK boards and switch to specified board config
uboot -build uboot
spl -build spl
loader -build loader
kernel -build kernel
modules -build kernel modules
toolchain -build toolchain
rootfs -build default rootfs, currently build buildroot as default
buildroot -build buildroot rootfs
ramboot -build ramboot image
multi-npu_boot -build boot image for multi-npu board
yocto -build yocto rootfs
debian -build debian9 stretch rootfs
distro -build debian10 buster rootfs
pcba -build pcba
recovery -build recovery
all -build uboot, kernel, rootfs, recovery image
cleanall -clean uboot, kernel, rootfs, recovery
firmware -pack all the image we need to boot up system
updateimg -pack update image
otapackage -pack ab update otapackage image
save -save images, patches, commands used to debug
allsave -build all & firmware & updateimg & save
Default option is 'allsave'.

2.查看部分模块详细编译命令,例如:./build.sh -h kernel

$./build.sh -h kernel

###Current SDK Default [ kernel ] Build Command###
cd kernel
make ARCH=arm rv1126_defconfig
make ARCH=arm rv1126-evb-ddr3-v10.img -j12

3. U-Boot编译
### 查看U-Boot详细编译命令
$./build.sh -h uboot

### U-Boot编译命令
$./build.sh uboot

3.1. U-Boot 配置说明
### 使用menuconfig配置U-Boot,选择需要的模块,最后保存退出。
### rv1126_defconfig 文件在目录 u-boot/configs
### 命令格式:make "RK_UBOOT_DEFCONFIG"_defconfig
### RK_UBOOT_DEFCONFIG 定义在./build.sh选择的BoardConfig*.mk
$cd u-boot
$make rv1126_defconfig
$make menuconfig

### 保存配置到对应的文件rv1126_defconfig
$make savedefconfig
$cp defconfig configs/rv1126_defconfig

4. Kernel编译

### 查看Kernel详细编译命令
$./build.sh -h kernel

### Kernel编译命令
$./build.sh kernel

4.1. Kernel配置说明
### 例如 device/rockchip/rv1126_rv1109/BoardConfig.mk
$./build.sh device/rockchip/rv1126_rv1109/BoardConfig.mk
$cd kernel

### 命令格式:make ARCH=arm "RK_KERNEL_DEFCONFIG" "RK_KERNEL_DEFCONFIG_FRAGMENT"
### RK_KERNEL_DEFCONFIG 和RK_KERNEL_DEFCONFIG_FRAGMENT 都定义在./build.sh选择的BoardConfig*.mk
### RK_KERNEL_DEFCONFIG_FRAGMENT 是可选项,具体看BoardConfig*.mk配置。
$make ARCH=arm rv1126_defconfig
$make ARCH=arm menuconfig
$make ARCH=arm savedefconfig
$cp defconfig arch/arm/configs/rv1126_defconfig

5. Recovery编译
### 查看Recovery详细编译命令
$./build.sh -h recovery

### Recovery编译命令
$./build.sh recovery

5.1 Recovery 配置说明
### 1. 获取对应板级文件的recovery配置
$./build.sh -h recovery
# ###Current SDK Default [ recovery ] Build Command###
# source envsetup.sh rockchip_rv1126_rv1109_recovery
# device/rockchip/common/mk-ramdisk.sh recovery.img
# rockchip_rv1126_rv1109_recovery

### 2. source 对应的recovery配置
$source envsetup.sh rockchip_rv1126_rv1109_recovery

### 3. 使用menuconfig配置recovery,选择需要的模块,最后保存退出。
### 比如:去掉recovery的UI显示 BR2_PACKAGE_RECOVERY_NO_UI (查看buildroot/package/rockchip/recovery/Config.in)
$make menuconfig
# 进入menuconfig后,按“/"进入查找模式,输入BR2_PACKAGE_RECOVERY_NO_UI

### 4. 保存到选择的recovery配置文件
### ./buildroot/configs/rockchip_rv1126_rv1109_recovery_defconfig
$make savedefconfig
注:Recovery是非必需的功能,有些板级配置不会设置编译

6. Rootfs
### 查看Rootfs详细编译命令
$./build.sh -h rootfs

### Rootfs编译和打包命令
$./build.sh rootfs

6.1 Rootfs 配置说明
### 1. 先在SDK根目录查看Board Config对应的rootfs是哪个配置
$./build.sh -h rootfs
# ###Current SDK Default [ rootfs ] Build Command###
# source envsetup.sh rockchip_rv1126_rv1109
# make

### 2. source buildroot对应的defconfig
$source envsetup.sh rockchip_rv1126_rv1109

### 3. 使用menuconfig配置文件系统,选择需要的模块,最后保存退出。
### 例如:要配置app/ipc-daemon这个工程
###a. 找到app/ipc-daemon对应的配置文件
### grep -lr "app/ipc-daemon" buildroot/package
### buildroot/package/rockchip/ipc-daemon/ipc-daemon.mk
### 对应的配置文件:buildroot/package/rockchip/ipc-daemon/Config.in
###
###b. 获取配置名称BR2_PACKAGE_IPC_DAEMON
###查看buildroot/package/rockchip/ipc-daemon/Config.in
$make menuconfig # 进入menuconfig后,按“/"进入查找模式,输入BR2_PACKAGE_IPC_DAEMON

### 4. 保存到rootfs配置文件
### ./buildroot/configs/rockchip_rv1126_rv1109_defconfig
$make savedefconfig

7. 目录 app 和 external 里的工程编译方法
# SDK版本更新到V1.8.0
# 命令格式:./build.sh app/ app/ external/ ...
# ,, 是app和external目录里的工程
# 例如编译external/mpp 和 app/mediaserver
$./build.sh external/mpp app/mediaserver
注:SDK根目录app和external下的工程都是buildroot的package包,编译方法相同。

8. 编译 BSP 包
# SDK的BSP包只包含音视频编解码库、NPU库以及头文件。 注:BSP包不包含文件系统。
$source envsetup.sh rockchip_rv1126_rv1109_libs
$make -j12

编译BSP生成的目录 buildroot/output/rockchip_rv1126_rv1109_libs/BSP
tree buildroot/output/rockchip_rv1126_rv1109_libs/BSP/
buildroot/output/rockchip_rv1126_rv1109_libs/BSP/
├── example
│ ├── common
│ ├── iqfiles
│ ├── librtsp
│ ├── multi_audio_test
│ ├── rknn_model
│ ├── stressTest
│ └── vqefiles
├── include
│ ├── rga
│ ├── rkaiq
│ └── rkmedia
├── lib
└── npu
├── include
├── ko
└── lib

9. 固件打包
固件打包命令: $./mkfirmware.sh
固件目录:rockdev

10. 全自动编译
进入工程根目录执行以下命令自动完成所有的编译:
$./build.sh all # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 需要再执行$./mkfirmware.sh 进行固件打包

$./build.sh
# 在./build.sh all基础上
# 1. 增加固件打包 ./mkfirmware.sh
# 2. update.img打包
# 3. 复制rockdev目录下的固件到IMAGE/***_RELEASE_TEST/IMAGES目录
# 4. 保存各个模块的补丁到IMAGE/***_RELEASE_TEST/PATCHES目录
# 注:./build.sh 和 ./build.sh allsave 命令一样

11. 应用开发建议
使用SDK开发应用,建议参考 external/rkmedia/examples 例程进行开发。
app/mediaserver只是实现了简单的IPC功能,只作为演示用。

你可能感兴趣的:(Rk,linux,运维,服务器)