首页 > 技术知识 > 正文

一,前期准备

准备材料:ubuntu1804虚拟机

SDK:RV1126_RV1109_LINUX_SDK_V2.2.5_20221009.tar.gz

(为什么不用1.8.0,因为有坑,因为这个版本更好用一点)

板子:EB-RV1126-BC-191+ IMX415

二,编译

安装依赖包:

aptget install repo git ssh make gcc libssldev liblz4tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmtsupport qemuuserstatic livebuild bison flex fakeroot cmake gccmultilib g++-multilib unzip devicetreecompiler pythonpip libncurses5dev

编译

在复制SDK的时候想要吐槽一下,是哪位大佬打的包SDK文件近40G,没有把中间文件删除掉再去压缩,作案手法不是太专业。

如果想瘦身一下的话可以先看步骤四。

解压SDK

tar -xvf RV1126_RV1109_LINUX_SDK_V2.2.5_20221009.tar.gz

到RV1126目录下

cd RV1126_RV1109_LINUX_SDK_V2.1.0_20210512

. envsetup.sh 95. rockchip_rv1126_rv1109_pcba96. rockchip_rv1126_rv1109_ramboot_uvcc97. rockchip_rv1126_rv1109_recovery98. rockchip_rv1126_rv1109_sl99. rockchip_rv1126_rv1109_spi_nand100. rockchip_rv1126_rv1109_spi_nand_recovery101. rockchip_rv1126_rv1109_systemd

选[99] rockchip_rv1126_rv1109_spi_nand

./build.sh lunch

Youre building on LinuxLunch menu…pick a combo:0. default BoardConfig.mk1. BoardConfig-38×38-emmc.mk2. BoardConfig-38×38-spi-nand-ab.mk3. BoardConfig-38×38-spi-nand.mk4. BoardConfig-ab-v13.mk5. BoardConfig-aybering(bk).mk6. BoardConfig-aybering.mk

选[3]BoardConfig-38×38-spi-nand.mk

完整编译./build.sh

目前文件

rockdev/update.img

分步编译

编译UBOOT执行:./build.sh uboot

编译kernel执行:./build.sh kernel

编译buildroot执行:./build.sh buildroot

编译软件包执行:make xxx

例如:make ffmpeg 或者 make libsrtp

编译external和app目录下的软件

make mediaserver

make ispserver

三,烧写

打开tools工具

瑞芯微开发工具v2.84

EB-RV1126-BC-191_SDKV2.2.0-入门开发-eb-1002cw

如上所示,点切换,即可进入Loader模式。

选择—>固件(刚刚编译生成的:rockdev/update.img)

如果因为烧了错误的固件导致变砖-不要慌,使用如下方便进入MASKROM模式

找到ebaina给的文档<02.EB-RV1126-BC-191型整板快速入门手册V2.1.pdf> 6.4节

EB-RV1126-BC-191_SDKV2.2.0-入门开发-eb-1002cw1如上方法可进入MASKROM模式,然后选择正确的固件烧写。

四,遇到的一些问题

使用ebaina给的SDK,如上编译出来的固件发现登录web网页,看不到视频。

于是检查buildroot的配置

修改如下位置

A,修改mediaserver的启动参数(在可以设备端去修改)

位置:device/rockchip/oem/oem_ipc/RkLunch.sh # TODO:# HasAudio=0#if [ $HasDisplay -eq 1 ]; then# if [ $HasHDMI -eq 1 ]; then# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-hdmi-display.conf &# else# if [ -z “$QUICKDISPLAY” ]; then# if [ $HasAudio -eq 1 ]; then# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-display.conf &# else# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-display-without-audio.conf &# fi# else# if [ $HasAudio -eq 1 ]; then# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc.conf &# else# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-without-audio.conf &# fi# fi# fi#else# if [ $HasAudio -eq 1 ]; then mediaserver c /oem/usr/share/mediaserver/rv1109/ipc.conf &# else# mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc-without-audio.conf &# fi#fi
<

B,修改buildroot配置

位置:buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig #include“base.config”#include“base_extra.config”#add by zcx#include“debug.config”#include“audio.config”#include“wifi.config”#include“network.config”#include“video_mpp.config”#include“rv1126_rv1109_arm.config”#include“ubifs.config”#include“camera.config”#include“updateEngine.config”#include“ipc_quick_display.config”#add by zcx ####BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=yBR2_TARGET_TZ_INFO=yBR2_ROOTFS_OVERLAY=“board/rockchip/rv1126_rv1109/fs-overlay-sysv/”BR2_ROOTFS_POST_IMAGE_SCRIPT=“board/rockchip/common/post-image-ubi.sh”BR2_PACKAGE_CAMERA_ENGINE_RKAIQ_IQFILE=“imx415_YT10092_IR0147-28IRC-8M-F20.xml”#change by zcxBR2_PACKAGE_CAMERA_ENGINE_RKAIQ_RKISP_DEMO=yBR2_PACKAGE_ROCKIT=yBR2_PACKAGE_ROCKIT_TGI=yBR2_PACKAGE_ROCKIT_MPI=y#BR2_PACKAGE_RKFACIAL=y#BR2_PACKAGE_UVC_APP=y#BR2_PACKAGE_UAC_APP=y#BR2_PACKAGE_UVC_APP_MINILOGGER=y#BR2_PACKAGE_UAC_APP_ALSA_PLAYBACK=yBR2_PACKAGE_RKWIFIBT_RTL8188FU=yBR2_PACKAGE_IO=yBR2_PACKAGE_VENDOR_STORAGE=yBR2_PACKAGE_RKMEDIA_V4L2_CAPTURE=yBR2_PACKAGE_RKMEDIA_USE_AIQ=yBR2_PACKAGE_DRM_DISPLAY_OUTPUT=yBR2_PACKAGE_RKMEDIA_MPP=yBR2_PACKAGE_RKMEDIA_ALSA=yBR2_PACKAGE_RKMEDIA_ALSA_PLAYBACK=yBR2_PACKAGE_RKMEDIA_ALSA_CAPTURE=yBR2_PACKAGE_RKMEDIA_AUDIO_ALGORITHM=yBR2_PACKAGE_RKMEDIA_AUDIO_CODEC=yBR2_PACKAGE_RKMEDIA_AUDIO_ENCODER=yBR2_PACKAGE_RKMEDIA_AUDIO_DECODER=yBR2_PACKAGE_RKMEDIA_RKRGA=yBR2_PACKAGE_RKMEDIA_RKNN=y #add by zcxBR2_PACKAGE_RKMEDIA_ROCKFACE=y #add by zcxBR2_PACKAGE_RKMEDIA_ROCKX=y #add by zcxBR2_PACKAGE_RKMEDIA_MOVE_DETECTION=yBR2_PACKAGE_RKMEDIA_OCCLUSION_DETECTION=yBR2_PACKAGE_RKMEDIA_EXAMPLES=y #add by zcxBR2_PACKAGE_RKMEDIA_LIVE555=yBR2_PACKAGE_RKMEDIA_RTSP_SERVER=yBR2_PACKAGE_RKMEDIA_RTSP_SERVER_H264=yBR2_PACKAGE_RKMEDIA_RTSP_SERVER_H265=y# BR2_PACKAGE_MINIGUI_SOFTWARE_SCALE is not setBR2_PACKAGE_RKNPU_USE_MINI_DRIVER=yBR2_PACKAGE_RKNPU_USE_RKNN_API=yBR2_PACKAGE_IPCWEB_BACKEND=yBR2_PACKAGE_DBSERVER=yBR2_PACKAGE_NETSERVER=yBR2_PACKAGE_STORAGE_MANAGER=yBR2_PACKAGE_MEDIASERVER=yBR2_PACKAGE_MEDIASERVE_OSD_SERVER=yBR2_PACKAGE_MEDIASERVE_EXIV2_FEATURE=y# BR2_PACKAGE_MEDIASERVE_USE_ROCKFACE_RECOGNIZE is not set# BR2_PACKAGE_MEDIASERVE_USE_ROCKX is not setBR2_PACKAGE_RK_OEM=yBR2_PACKAGE_RK_OEM_RESOURCE_DIR=“$(TOPDIR)/../device/rockchip/oem/oem_ipc”BR2_PACKAGE_RK_OEM_INSTALL_TARGET_DIR=“$(BASE_DIR)/target/oem”BR2_PACKAGE_RK_OEM_IMAGE_FILESYSTEM_TYPE=“NONE”BR2_PACKAGE_RK_OEM_IMAGE_PARTITION_SIZE=0x6400000BR2_PACKAGE_IPC_DAEMON=yBR2_PACKAGE_CALLFUNIPC=yBR2_PACKAGE_ISP2_IPC=yBR2_PACKAGE_ISP2_IPC_DBUS=yBR2_PACKAGE_ISP2_IPC_DBSERVER=yBR2_PACKAGE_ISP2_IPC_MINILOGGER=yBR2_PACKAGE_PCBA_ADB_TEST=yBR2_PACKAGE_DBUS_GLIB=yBR2_PACKAGE_FDK_AAC=yBR2_PACKAGE_USBMOUNT=yBR2_PACKAGE_SQLITE_STAT3=yBR2_PACKAGE_SQLITE_ENABLE_FTS3=yBR2_PACKAGE_SQLITE_ENABLE_JSON1=yBR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY=yBR2_PACKAGE_SQLITE_SECURE_DELETE=y#BR2_PACKAGE_LIBYUV=y#BR2_PACKAGE_LIBV4L=y#BR2_PACKAGE_LIBV4L_UTILS=yBR2_PACKAGE_AVAHI=yBR2_PACKAGE_AVAHI_DAEMON=yBR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=yBR2_PACKAGE_ATFTP=yBR2_PACKAGE_CONNMAN=yBR2_PACKAGE_CONNMAN_WIFI=yBR2_PACKAGE_CONNMAN_LOOPBACK=yBR2_PACKAGE_CONNMAN_CLIENT=yBR2_PACKAGE_FCGIWRAP=yBR2_PACKAGE_NGINX=yBR2_PACKAGE_NGINX_HTTP_SSL_MODULE=yBR2_PACKAGE_NGINX_DEBUG=yBR2_PACKAGE_NGINX_HTTP_FLV_LIVE=y#BR2_PACKAGE_NGINX_RTMP=y# BR2_PACKAGE_NTP_NTPD is not setBR2_PACKAGE_TFTPD=yBR2_PACKAGE_ANDROID_TOOLS=yBR2_TARGET_ROOTFS_SQUASHFS4_XZ=yBR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=4096
<

C,编译

将buildroot/output/rockchip_rv1126_rv1109_spi_nand 删掉重启编译。

D,注意

RV1126的sensor配置在builroot defconfig文件和内核设备树均有配置支持的sensor型号

核对好自己的sensor板型号对号修改。

默认ebaina发的是imx415。如图rockchip_rv1126_rv1109_spi_nand_defconfig有支持。

四,SDK瘦身

发现SDK中无用的文件是有点太多(编译后的废料文件,repo备份)

rm .repo 删除掉repo备份,这个一般用不上,自己重新建一个git就可以了。

rm rockdev/ 编译后的镜像文件

rm IMAGE/ 每次编译生成的镜像文件

rm buildroot/output/* 编译时生成的中间文件。

删除完以上文件之后,就可以重新创建git仓库,硬盘空间会空出很多很多。

如果想重新打包SDK的话,

只需要压缩.git文件夹的就可以了

tar zcvf RV1126_RV1109_LINUX_SDK.tar.gz RV1126_RV1109_LINUX_SDK_V2.1.0_20210512/.git

使用时

解压SDK

git rest —hard 即可。

猜你喜欢