如何在Yocto中构建PyCoral与libedgetpu?适配Renesas RZV2M板卡
为Renesas RZV2M在Yocto中构建PyCoral与libedgetpu的解决方案
1. 编写libedgetpu的Yocto Recipe
libedgetpu是PyCoral依赖的核心底层库,需针对RZV2M的ARM64架构编译。创建recipes-core/libedgetpu/libedgetpu_git.bb文件,内容如下:
SUMMARY = "Google Coral Edge TPU runtime library" HOMEPAGE = "https://coral.ai/" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" SRC_URI = "git://github.com/google-coral/libedgetpu.git;branch=master;protocol=https" SRCREV = "<替换为libedgetpu仓库最新commit哈希>" S = "${WORKDIR}/git" DEPENDS = "libusb1" inherit pkgconfig cmake EXTRA_OECMAKE = " \ -DUSE_NEON=ON \ -DUSE_GLOBAL_NNAPI=OFF \ -DBUILD_SHARED_LIBS=ON \ -DPLATFORM=arm64 \ " FILES_${PN} += " \ ${libdir}/libedgetpu.so* \ " FILES_${PN}-dev += " \ ${includedir}/edgetpu/ \ ${libdir}/pkgconfig/edgetpu.pc \ "
关键说明
- 替换
<替换为libedgetpu仓库最新commit哈希>为项目当前最新的提交ID,保证代码是最新稳定版 PLATFORM=arm64适配RZV2M的ARM64架构- 依赖
libusb1是Coral USB Accelerator的USB通信必需组件
2. 编写PyCoral的Yocto Recipe
PyCoral负责提供Python层调用接口,创建recipes-devtools/python/python3-pycoral_git.bb文件:
SUMMARY = "Python bindings for Google Coral Edge TPU" HOMEPAGE = "https://coral.ai/" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" SRC_URI = "git://github.com/google-coral/pycoral.git;branch=master;protocol=https" SRCREV = "<替换为pycoral仓库最新commit哈希>" S = "${WORKDIR}/git" DEPENDS = "python3 python3-pip python3-setuptools libedgetpu tensorflow-lite" RDEPENDS_${PN} = "python3-numpy python3-pil python3-tflite-runtime" inherit setuptools3 do_install_prepend() { # 移除setup.py中对edgetpu的版本限制,直接使用系统编译的libedgetpu sed -i 's/edgetpu>=.*//g' ${S}/setup.py } FILES_${PN} += " \ ${PYTHON_SITEPACKAGES_DIR}/pycoral/ \ ${PYTHON_SITEPACKAGES_DIR}/pycoral-*.egg-info/ \ "
关键说明
- 替换
<替换为pycoral仓库最新commit哈希>为项目当前最新的提交ID - 移除setup.py中的edgetpu版本限制,避免与系统编译的libedgetpu冲突
- 依赖
tensorflow-lite需通过meta-tensorflow层引入,确保Yocto环境中包含该层
3. 配置Yocto构建环境
- 在
bblayers.conf中添加存放上述Recipe的自定义层(例如meta-coral):
BBLAYERS += "${TOPDIR}/../meta-coral"
- 在
local.conf中添加构建目标与优化配置:
IMAGE_INSTALL:append = " libedgetpu python3-pycoral" MACHINE = "rzv2m" TUNE_FEATURES = "aarch64 cortex-a53 neon"
4. 构建与验证
- 执行构建命令:
bitbake <你的镜像名称>
- 烧录镜像到RZV2M板卡后,验证安装:
- 插入Coral USB Accelerator
- 运行测试代码:
若输出设备信息,说明PyCoral与libedgetpu安装成功。from pycoral.utils.edgetpu import list_edge_tpus print(list_edge_tpus())
常见问题处理
- 依赖缺失导致编译失败:确认meta-tensorflow、meta-python等基础层已添加到
bblayers.conf - libedgetpu链接错误:检查
EXTRA_OECMAKE中的PLATFORM参数是否为arm64,确认libusb1已正确编译 - PyCoral导入失败:通过
pip3 list查看pycoral是否出现在已安装列表中,检查Python模块路径配置
内容的提问来源于stack exchange,提问作者Prajwal Bhopale
相关产品推荐
相关产品推荐

