从零开始学习 sg200x 多核开发之 sample 打包

sophpi 编译完成发现 SDK 中的 sample 已经编译出来,但是没有包含在根文件系统中。

问题定位

查看 cvi_mpi/Makefile 文件,发现

makefile 复制代码
install:
	@mkdir -p $(DESTDIR)/usr/bin
	@mkdir -p $(DESTDIR)/usr/lib/3rd
ifneq ($(FLASH_SIZE_SHRINK),y)
	# copy sample_xxx
	@cp -f sample/mipi_tx/sample_dsi $(DESTDIR)/usr/bin
	@cp -f sample/cipher/sample_cipher $(DESTDIR)/usr/bin
	@cp -f sample/cvg/sample_cvg $(DESTDIR)/usr/bin
	@cp -f sample/venc/sample_venc $(DESTDIR)/usr/bin
	@cp -f sample/venc/sample_vcodec $(DESTDIR)/usr/bin
	@cp -f sample/vdec/sample_vdec $(DESTDIR)/usr/bin
endif

ifneq ($(FLASH_SIZE_SHRINK),y)
	# copy venc
	@cp -f modules/venc/vc_lib/bin/cvi_h265_enc_test $(DESTDIR)/usr/bin
	@cp -f modules/venc/vc_lib/bin/cvi_h265_dec $(DESTDIR)/usr/bin
	@cp -f modules/venc/vc_lib/bin/cvi_h264_dec $(DESTDIR)/usr/bin
	@cp -f modules/venc/vc_lib/bin/cvi_jpg_codec $(DESTDIR)/usr/bin
endif

ifneq ($(FLASH_SIZE_SHRINK),y)
	# copy audio libs and elf
	@cp -f sample/audio/sample_audio*  $(DESTDIR)/usr/bin
	@if [ -e "sample/audio/cvi_mp3player" ]; then cp -f sample/audio/cvi_mp3player $(DESTDIR)/usr/bin; fi
endif

	# copy mw lib
	@cp -a lib/*.so*  $(DESTDIR)/usr/lib
	@cp -a lib/3rd/*.so*  $(DESTDIR)/usr/lib/3rd

发现 sample_xxx 复制受 FLASH_SIZE_SHRINK 影响,而 FLASH_SIZE_SHRINK 默认为 y,所以 sample_xxx 没有复制到根文件系统中。

取消 FLASH_SIZE_SHRINK

在 build/boards/cv181x/sg2002_wevb_riscv64_sd/sg2002_wevb_riscv64_sd_defconfig 文件中,找到 CONFIG_FLASH_SIZE_SHRINK=y,将其删除。

可以使用 build_middware 命令单独编译 sample。

编译过程中,会出现以上 copy 出错,需要将部分没有的 sample 删除。

shell 复制代码
# copy sample_xxx
cp: cannot stat 'sample/mipi_tx/sample_dsi': No such file or directory
make: *** [Makefile:61: install] Error 1

修改后的 Makefile 如下:

makefile 复制代码
install:
	@mkdir -p $(DESTDIR)/usr/bin
	@mkdir -p $(DESTDIR)/usr/lib/3rd
ifneq ($(FLASH_SIZE_SHRINK),y)
	# copy sample_xxx
	# @cp -f sample/mipi_tx/sample_dsi $(DESTDIR)/usr/bin
	# @cp -f sample/cipher/sample_cipher $(DESTDIR)/usr/bin
	# @cp -f sample/cvg/sample_cvg $(DESTDIR)/usr/bin
	@cp -f sample/venc/sample_venc $(DESTDIR)/usr/bin
	@cp -f sample/venc/sample_vcodec $(DESTDIR)/usr/bin
	@cp -f sample/vdec/sample_vdec $(DESTDIR)/usr/bin
endif

# ifneq ($(FLASH_SIZE_SHRINK),y)
# 	# copy venc
# 	@cp -f modules/venc/vc_lib/bin/cvi_h265_enc_test $(DESTDIR)/usr/bin
# 	@cp -f modules/venc/vc_lib/bin/cvi_h265_dec $(DESTDIR)/usr/bin
# 	@cp -f modules/venc/vc_lib/bin/cvi_h264_dec $(DESTDIR)/usr/bin
# 	@cp -f modules/venc/vc_lib/bin/cvi_jpg_codec $(DESTDIR)/usr/bin
# endif

ifneq ($(FLASH_SIZE_SHRINK),y)
	# copy audio libs and elf
	@cp -f sample/audio/sample_audio*  $(DESTDIR)/usr/bin
	@if [ -e "sample/audio/cvi_mp3player" ]; then cp -f sample/audio/cvi_mp3player $(DESTDIR)/usr/bin; fi
endif

	# copy mw lib
	@cp -a lib/*.so*  $(DESTDIR)/usr/lib
	@cp -a lib/3rd/*.so*  $(DESTDIR)/usr/lib/3rd

编译成功后,sample_xxx 会先 copy 至 buildroot-2021.05/board/cvitek/CV181X/overlay/mnt/system/usr/bin,然后再打包进 rootfs 中。

相关推荐
程序员JerrySUN3 天前
深入解析ARM与RISC-V架构的Bring-up核心流程
arm开发·架构·risc-v
Hug Freedom.4 天前
RISC-V AIA学习---IPI 处理器间中断
学习·risc-v
黑不拉几的小白兔5 天前
risc-V学习日记(3):编译与链接
学习·risc-v
Hug Freedom.8 天前
RISC-V debug专栏2 --- Debug Module(DM)
risc-v
百里杨9 天前
编译玄铁处理器RISC-V指令测试用例
测试用例·risc-v·玄铁
CodingCos12 天前
【RISC-V CPU Debug 专栏 1 -- RISCV 相关文档的区别与联系】
risc-v
Hug Freedom.13 天前
RISC-V AIA学习3---APLIC 第一部分
学习·risc-v
国科安芯13 天前
国产RISC-V车规芯片当前现状分析——从市场与技术角度出发
网络·人工智能·嵌入式硬件·架构·汽车·risc-v
Hug Freedom.13 天前
RISC-V AIA学习3---APLIC 第二部分(APLIC 中断域的内存映射控制区域)
学习·risc-v
Hug Freedom.14 天前
RISC-V AIA学习3---APLIC第三部分
学习·risc-v