rv1126 固件编译规则

固件编译规则

编译配置项

固件的编译主要取决于两项配置,我们分别称之为:

  • Buildroot 文件系统配置
  • Boardconfig 硬件板型配置

Buildroot 的配置取决于我们最终生成的固件里运行什么程序;
Boardconfig 的配置决定我们的固件最终在怎样的设备上运行;

不同硬件板型所对应这两项配置可以在硬件介绍页面查阅,根据自己的实际硬件选择。

如何配置

1. 选择 Buildroot 配置,在 SDK/ 目录下输入:

. envsetup.sh

执行脚本后会有选择框如下,在这里选择我们最终想要的产品形态:

xx. rockchip_rv1126_battery_ipc
xx. rockchip_rv1126_evb_tb
xx. rockchip_rv1126_robot
xx. rockchip_rv1126_robot_recovery
xx. rockchip_rv1126_rv1109
xx. rockchip_rv11xx_owl_facial_gate
xx. rockchip_rv1126_rv1109_libs
xx. rockchip_rv1126_rv1109_ramboot_uvcc
xx. rockchip_rv1126_rv1109_recovery
xx. rockchip_rv1126_rv1109_sl
xx. rockchip_rv1126_rv1109_spi_nand
xx. rockchip_rv1126_rv1109_systemd
xx. rockchip_rv1126_rv1109_toolchain
xx. rockchip_rv1126_rv1109_uvcc
xx. rockchip_rv1126_rv1109_uvcc_spi_nand
Which would you like? [0]:  69

我们输入对应项前面的序号并且回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

2. Boardconfig 硬件板型配置,在 SDK/ 目录执行:

./build.sh lunch

这里会弹出选择框,让我们选择对应的 Boardconfig

You're building on Linux
Lunch menu...pick a combo:

xx. default BoardConfig.mk
xx. BoardConfig-38x38-spi-nand.mk
xx. BoardConfig-battery-ipc.mk
xx. BoardConfig-owl-facial_gate.mk
xx. BoardConfig-ramboot-uvc.mk
xx. BoardConfig-robot.mk
xx. BoardConfig-sl.mk
xx. BoardConfig-spi-nand.mk
xx. BoardConfig-tb-v12.mk
xx. BoardConfig-tb-v13.mk
xx. BoardConfig-uvcc-spi-nand.mk
xx. BoardConfig-uvcc.mk
xx. BoardConfig-v10-v11.mk
xx. BoardConfig-v12.mk
xx. BoardConfig.mk
Which would you like? [0]: 3

在这里同样选择输入对应选项前面的序号并回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

这里我们需要注意,由于摄像头模组种类繁多,我们需要确认Boardconfig里面的DTS是否和我们的实际硬件一致,在SDK/目录下输入:

vi device/rockchip/.BoardConfig.mk

将该行改为我们使用的 SENSOR 对应的 DTS

export RK_KERNEL_DTS=rv11xx-owl-38ipc-v10-imx307

比如我们要编译imx415的固件,则改为:

export RK_KERNEL_DTS=rv11xx-owl-38ipc-v10-imx415
需要注意的是,这里不需要后缀 .dts

具体的DTS我们可以在硬件介绍页面查阅

3. 执行编译

./build.sh

第一次编译时间比较长,编译完成后会在IMAGE目录生成最终的固件,
编译期间可能由于网络因素导致有些包不能正常下载,报错404,可以参照issu,将缺少的包从互联网上下载下来,
将下载下来的包放在 SDK/buildroot/dl/ 目录下,无需解压,并重新开始编译,如果报错,也可以删除 SDK/buildroot/output 目录,并重新尝试。

 


下面是一些实际操作案例


面板机固件编译

  1. 在SDK目录执行以下脚本:
. envsetup.sh

在这里选择我们最终想要的产品的对应的产品形态,执行脚本后会有选择框如下:

xx. rockchip_rv1126_battery_ipc
xx. rockchip_rv1126_evb_tb
xx. rockchip_rv1126_robot
xx. rockchip_rv1126_robot_recovery
xx. rockchip_rv1126_rv1109
xx. rockchip_rv11xx_owl_facial_gate
xx. rockchip_rv1126_rv1109_libs
xx. rockchip_rv1126_rv1109_ramboot_uvcc
xx. rockchip_rv1126_rv1109_recovery
xx. rockchip_rv1126_rv1109_sl
xx. rockchip_rv1126_rv1109_spi_nand
xx. rockchip_rv1126_rv1109_systemd
xx. rockchip_rv1126_rv1109_toolchain
xx. rockchip_rv1126_rv1109_uvcc
xx. rockchip_rv1126_rv1109_uvcc_spi_nand
Which would you like? [0]:  69

我们输入 rockchip_rv11xx_owl_facial_gate 这项对应的序号并且回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

  1. 在SDK目录执行:
./build.sh lunch

这里会弹出选择框,让我们选择对应的 Boardconfig

You're building on Linux
Lunch menu...pick a combo:

xx. default BoardConfig.mk
xx. BoardConfig-38x38-spi-nand.mk
xx. BoardConfig-battery-ipc.mk
xx. BoardConfig-owl-facial_gate.mk
xx. BoardConfig-ramboot-uvc.mk
xx. BoardConfig-robot.mk
xx. BoardConfig-sl.mk
xx. BoardConfig-spi-nand.mk
xx. BoardConfig-tb-v12.mk
xx. BoardConfig-tb-v13.mk
xx. BoardConfig-uvcc-spi-nand.mk
xx. BoardConfig-uvcc.mk
xx. BoardConfig-v10-v11.mk
xx. BoardConfig-v12.mk
xx. BoardConfig.mk
Which would you like? [0]: 3

在这里同样选择 BoardConfig-owl-facial_gate.mk 对应的选项回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

  1. 执行
./build.sh

第一次编译时间比较长,编译完成后会在IMAGE目录生成最终的固件
编译最后可能会报一个警告:

./build.sh: line 607: /home/owlvtech/rv1126-sdk/.repo/repo/repo: No such file or directory

不用在意,因为你的SDK是来自压缩包而非repo sync,没有版本相关信息,不影响使用。


IPC摄像机固件编译

  1. 在SDK目录执行以下脚本:
. envsetup.sh

在这里选择我们最终想要的产品的对应的产品形态,执行脚本后会有选择框如下:

xx. rockchip_rv1126_battery_ipc
xx. rockchip_rv1126_evb_tb
xx. rockchip_rv1126_robot
xx. rockchip_rv1126_robot_recovery
xx. rockchip_rv11xx_owl_spi_nand
xx. rockchip_rv1126_rv1109_facial_gate
xx. rockchip_rv1126_rv1109_libs
xx. rockchip_rv1126_rv1109_ramboot_uvcc
xx. rockchip_rv1126_rv1109_recovery
xx. rockchip_rv1126_rv1109_sl
xx. rockchip_rv1126_rv1109_spi_nand
xx. rockchip_rv1126_rv1109_systemd
xx. rockchip_rv1126_rv1109_toolchain
xx. rockchip_rv1126_rv1109_uvcc
xx. rockchip_rv1126_rv1109_uvcc_spi_nand
Which would you like? [0]: 68

我们输入 rockchip_rv11xx_owl_spi_nand 这项对应的序号并且回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

  1. 在SDK目录执行:
./build.sh lunch

这里会弹出选择框,让我们选择对应的Boardconfig

You're building on Linux
Lunch menu...pick a combo:

xx. default BoardConfig.mk
xx. BoardConfig-owl-38-spi-nand.mk
xx. BoardConfig-battery-ipc.mk
xx. BoardConfig-facial_gate.mk
xx. BoardConfig-ramboot-uvc.mk
xx. BoardConfig-robot.mk
xx. BoardConfig-sl.mk
xx. BoardConfig-spi-nand.mk
xx. BoardConfig-tb-v12.mk
xx. BoardConfig-tb-v13.mk
xx. BoardConfig-uvcc-spi-nand.mk
xx. BoardConfig-uvcc.mk
xx. BoardConfig-v10-v11.mk
xx. BoardConfig-v12.mk
xx. BoardConfig.mk
Which would you like? [0]: 1

在这里同样选择BoardConfig-owl-38-spi-nand.mk对应的选项回车

需要注意的时不同时期的SDK,编号不同,请根据实际编号选择

  1. 执行
./build.sh

第一次编译时间比较长,编译完成后会在IMAGE目录生成最终的固件
编译最后可能会报一个警告:

./build.sh: line 607: /home/owlvtech/rv1126-sdk/.repo/repo/repo: No such file or directory

不用在意,因为你的SDK是来自压缩包而非repo sync,没有版本相关信息,不影响使用,可以删除build.sh包含repo的两行。

编译指定SENSOR的固件

由于sensor种类繁多,SDK中默认编译出来的固件是符合imx307的,如果使用的是其它型号的sensor,请修改BoardConfig-owl-38-spi-nand.mk文件

vi device/rockchip/rv1126_rv1109/BoardConfig-owl-38-spi-nand.mk

将该行改为我们使用的SENSOR对应的DTS

export RK_KERNEL_DTS=rv11xx-owl-38ipc-v10-imx307

SENSOR型号 对应的DTS
IMX307 rv11xx-owl-38ipc-v10-imx307
OV2718 rv1109-38-v10-spi-nand
IMX415 rv11xx-owl-38ipc-v10-imx415

比如我们要编译imx415的固件,则改为:

export RK_KERNEL_DTS=rv11xx-owl-38ipc-v10-imx415

查看所有DTS文件:

ls kernel/arch/arm/boot/dts/rv11*

你可能感兴趣的:(笔记,linux)