RK1126从入门到放弃:(一)编译篇

2023-01-04 16:43:52 浏览数 (2)

安装必备软件:
代码语言:javascript复制
apt-get install repo git ssh make gcc libssl-dev liblz4-tool  expect g   patchelf chrpath gawk texinfo chrpath diffstat binfmt-support  qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g  -multilib unzip  device-tree-compiler python-pip ncurses-dev pyelftools 
交叉编译工具链
  • U-Boot 及Kernel编译工具链: prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux- gnu/bin/aarch64-linux-gnu- 对应版本:gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05)
  • Buildroot编译工具链: 64位系统:buildroot/output/rockchip_rk356x/host/bin/aarch64-buildroot-linux-gnu- 32位系统:buildroot/output/rockchip_rk356x/host/usr/arm-linux-gcc 对应版本:gcc version 9.3.0 (Buildroot 2018.02-rc3-02723-gd3fbc6ae13)
u-boot编译
代码语言:javascript复制
# 查看编译帮助
<SDKRoot>#./build.sh -h uboot
# 编译命令
<SDKRoot>#./build.sh uboot
  • U-Boot 配置说明 使用menuconfig配置U-Boot,选择需要的模块,最后保存退出。 rv1126_defconfig 文件在目录 u-boot/configs 命令格式:make “RK_UBOOT_DEFCONFIG”_defconfig RK_UBOOT_DEFCONFIG 定义在./build.sh选择的BoardConfig*.mk
代码语言:javascript复制
$cd u-boot
$make rv1126_defconfig
$make menuconfi
  • 保存配置到对应的文件rv1126_defconfig
代码语言:javascript复制
$make savedefconfig
$cp defconfig configs/rv1126_defconfig
kernel编译
代码语言:javascript复制
# 查看编译帮助
<SDKRoot>#./build.sh -h kernel
# 编译命令
<SDKRoot>#./build.sh kernel
Recovery 编译
代码语言:javascript复制
<SDKRoot>#./build.sh recovery

编译后在 Buildroot 目录 output/rockchip芯片型号recovery/images 生成 recovery.img。 需要特别注意 recovery.img 是包含 kernel.img,所以每次 Kernel 更改,Recovery 是需要重新打包生成 例如:

代码语言:javascript复制
<SDK>$source envsetup.sh rockchip_芯片名称 <SDK>$make recovery-rebuild <SDK>$./build.sh recovery
Rootfs 编译
代码语言:javascript复制
<SDKRoot>#./build.sh rootfs

编译后在 Buildroot 目录 output/rockchip_芯片型号/images下生成 rootfs.ext4

app 和 external 里的工程编译方法
  • 命令格式:./build.sh app/<pkg1> app/<pkg2> external/<pkg3> ..
  • <pkg1>,<pkg2>,<pkg3> 是app和external目录里的工程
  • 例如编译external/mpp 和 app/mediaserver
代码语言:javascript复制
$./build.sh external/mpp app/mediaserver

注:SDK根目录app和external下的工程都是buildroot的package包,编译方法相同。

BSP包编译

SDK的BSP包只包含音视频编解码库、NPU库以及头文件。 注:BSP包不包含文件系统。

代码语言:javascript复制
$source envsetup.sh rockchip_rv1126_rv1109_libs
$make -j12

编译BSP生成的目录 buildroot/output/rockchip_rv1126_rv1109_libs/BSP

代码语言:javascript复制
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
固件打包

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

0 人点赞