从零开始学习 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 中。

相关推荐
碎碎思3 小时前
走向开放硅:Baochip-1x 的 RISC-V MCU 架构与工程实践
单片机·嵌入式硬件·risc-v
信创天地1 天前
信创场景软件兼容性测试实战:适配国产软硬件生态,破解运行故障难题
人工智能·开源·dubbo·运维开发·risc-v
Eloudy2 天前
全文 -- Chapter 1. Introduction -- The RISC-V Instruction Set Manual: Volume II
risc-v·arch
飞凌嵌入式3 天前
全志T153处理器ARM+RISC-V的双核协作实测
arm开发·risc-v
timer_0173 天前
Anolis OS 23.4 发布:全面支持 RVA23 RISC-V 架构,强化安全与云原生生态
安全·架构·risc-v
lipWOFb8 天前
采用粒子群算法针对含分布式能源的IEEE 33节点配电网进行无功优化研究
risc-v
MounRiver_Studio8 天前
RISC-V IDE MRS2进阶分享(一):picolibc C标准库简介与使用
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio8 天前
RISC-V IDE MRS2使用笔记(十四):用户反馈功能
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio8 天前
RISC-V IDE MRS2进阶分享(二):远程调试功能
ide·mcu·risc-v·嵌入式开发
高新打工人9 天前
RISC-V(四):RV32F(RISC-V 32 位单精度浮点扩展指令集)
risc-v·rv32f