RK1126 编译

本文详细介绍了嵌入式系统的编译构建过程,包括U-Boot、Kernel、Rootfs、Recovery等模块的配置和编译命令。通过`./build.sh`脚本,可以切换不同配置并执行特定模块的编译任务。此外,还涉及到了固件打包、BSP包的生成以及全自动化编译流程。对于开发者来说,提供了从配置到编译的完整步骤,有助于理解和定制自己的嵌入式系统。

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/<pkg1> app/<pkg2> external/<pkg3> ...
# <pkg1>,<pkg2>,<pkg3> 是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功能,只作为演示用。

### RK1126交叉编译工具链下载与配置 RK1126是一款基于ARM架构的处理器,通常用于嵌入式系统开发。为了在主机(如x86-64架构的Linux系统)上为RK1126开发板生成可执行文件,需要使用交叉编译工具链。以下是对RK1126交叉编译工具链的获取和配置方法的详细说明。 #### 1. 工具链来源 Rockchip官方通常会提供适合其芯片系列的交叉编译工具链。对于RK1126,可以访问Rockchip官方网站或其GitHub仓库下载专用的工具链[^5]。此外,也可以从第三方资源中获取通用的ARM工具链,但需确保其版本兼容性。 #### 2. 官方工具链下载地址 Rockchip官方提供的工具链链接如下(请根据实际需求选择合适的版本): - **32位目标平台**:`arm-linux-gnueabihf`工具链。 - **64位目标平台**:`aarch64-linux-gnu`工具链。 可以通过以下命令安装通用的工具链(适用于Ubuntu系统): ```bash sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu ``` 这将安装针对ARM 64位架构的交叉编译器[^1]。 #### 3. 自定义工具链配置 如果需要更精细的控制,可以从源码构建工具链。例如,使用`crosstool-ng`工具生成特定的交叉编译环境。以下是基本步骤: - 安装依赖项: ```bash sudo apt install build-essential bison flex libncurses5-dev libssl-dev ``` - 下载并配置`crosstool-ng`: ```bash git clone https://github.com/crosstool-ng/crosstool-ng.git cd crosstool-ng ./bootstrap && ./configure --prefix=/usr/local && make && sudo make install ``` - 创建工具链配置文件,并指定目标架构为`aarch64`。 #### 4. 配置CMake以支持RK1126 在使用CMake进行项目构建时,需要指定交叉编译工具链路径。例如: ```cmake set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_C_COMPILER /path/to/aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /path/to/aarch64-linux-gnu-g++) ``` 将上述内容保存为`Toolchain-rk1126.cmake`,并在运行CMake时通过`-DCMAKE_TOOLCHAIN_FILE`参数指定该文件[^4]。 #### 5. QT环境下的工具链配置 如果需要在QT环境下开发RK1126应用,可以参考以下步骤: - 进入`qtbase/mkspecs/`目录,复制一个相似的工具链配置文件并修改为目标架构。 - 示例命令: ```bash sudo cp -a linux-aarch64-gnu-g++/ aarch64-linux-gnu-g++/ ``` - 修改新创建的配置文件,确保其指向正确的交叉编译工具链[^3]。 --- ### 注意事项 - 确保主机系统的gcc版本与工具链兼容。 - 如果使用预编译的工具链,请验证其是否支持最新的CPU特性(如NEON、FPU等)。 - 在下载工具链时,建议选择与目标硬件匹配的稳定版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码撸起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值