優化 S32V Yocto BSP & VSDK 環境建置流程

關鍵字 :S32VYoctoBSPVSDK

我們在進行 S32V 環境開發時,常常會需要額外從 VSDK 那邊再 build 出 3rd party 的 lib 然後 copy 至板端的 rootfs 裡面,過程上其實也不難,但趕時間的時候還是會覺得細節惱人,以下提供一個方法來簡化這段流程。

1. 先準備好 OpenCV,ffmpeg,kernel module 等 .so & .ko 檔案:
2. 建立複製 OpenCV,ffmpeg,kernel module 等 .so & .ko 檔案的 recipe:

cd /sources/meta-alb

mkdir -p recipes-wpi && \

mkdir -p recipes-wpi/copy-so-ko-files && \

mkdir -p recipes-wpi/copy-so-ko-files/copy-so-ko-files

 
mkdir -p recipes-wpi/copy-so-ko-files/copy-so-ko-files/ffmpeg && \

mkdir -p recipes-wpi/copy-so-ko-files/copy-so-ko-files/opencv && \

mkdir -p recipes-wpi/copy-so-ko-files/copy-so-ko-files/s32v_lib

cd recipes-wpi/copy-so-ko-files/

touch copy-so-ko-files_1.0.bb,並將下列虛線內 recipe 檔案內容,用文字編輯器 (例如 VIM) 新增至 copy-so-ko-files_1.0.bb中,編輯完成後存檔。

--------------------------------------------------------------------------------------------------------------------------

DESCRIPTION = "Copy ko & so files into rootfs by WPI"

SECTION = "libs"

 

LICENSE = "CLOSED"

 

PACKAGE_ARCH = "${MACHINE_ARCH}"

 

SRC_URI += "\

    file://s32v_lib/ \

    file://ffmpeg/libavcodec.so \

    file://ffmpeg/libavdevice.so \

    file://ffmpeg/libavfilter.so \

    file://ffmpeg/libavformat.so \

    file://ffmpeg/libavutil.so \

    file://ffmpeg/libswresample.so \

    file://ffmpeg/libswscale.so \

    file://opencv/libopencv_calib3d.so.3.1 \

    file://opencv/libopencv_core.so.3.1 \

    file://opencv/libopencv_features2d.so.3.1 \

    file://opencv/libopencv_flann.so.3.1 \

    file://opencv/libopencv_highgui.so.3.1 \

    file://opencv/libopencv_imgcodecs.so.3.1 \

    file://opencv/libopencv_imgproc.so.3.1 \

    file://opencv/libopencv_ml.so.3.1 \

    file://opencv/libopencv_objdetect.so.3.1 \

    file://opencv/libopencv_photo.so.3.1 \

    file://opencv/libopencv_shape.so.3.1 \

    file://opencv/libopencv_stitching.so.3.1 \

    file://opencv/libopencv_superres.so.3.1 \

    file://opencv/libopencv_videoio.so.3.1 \

    file://opencv/libopencv_video.so.3.1 \

    file://opencv/libopencv_videostab.so.3.1 \

"

 

do_install () {

    install -d ${D}/s32v234

    install -d ${D}/${base_libdir}/

    find ${WORKDIR}/s32v_lib/ -maxdepth 1 -mindepth 1 -not -name README \

    -exec cp -fr '{}' ${D}/s32v234/ \;

    install -m 755 ${WORKDIR}/ffmpeg/libavcodec.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libavdevice.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libavfilter.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libavformat.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libavutil.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libswresample.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/ffmpeg/libswscale.so ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_calib3d.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_core.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_features2d.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_flann.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_highgui.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_imgcodecs.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_imgproc.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_ml.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_objdetect.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_photo.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_shape.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_stitching.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_superres.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_videoio.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_video.so.3.1 ${D}${base_libdir}/

    install -m 755 ${WORKDIR}/opencv/libopencv_videostab.so.3.1 ${D}${base_libdir}/

}

 

FILES_SOLIBSDEV = ""

FILES_${PN} += " \

    /* \

    ${base_libdir}/*.so \

    ${base_libdir}/*.so.* \

"

 

INHIBIT_PACKAGE_STRIP = "1"

INHIBIT_SYSROOT_STRIP = "1"

SOLIBS = ".so"

 

INSANE_SKIP_${PN} = "ldflags"

INSANE_SKIP_${PN} += "already-stripped"

INSANE_SKIP_${PN} += "dev-so"

#For dev packages only

INSANE_SKIP_${PN}-dev = "ldflags"

 

COMPATIBLE_MACHINE = "(s32v234evb)"

--------------------------------------------------------------------------------------------------------------------------



 cd /sources/meta-alb/recipes-fsl/images/

請用文字編輯器 (例如 VIM) 編輯 fsl-image-auto.bb,並在 IMAGE_INSTALL 區段內新增以下虛線內程式碼:

--------------------------------------------------------------------------------------------------------------------------

copy-so-ko-files \

--------------------------------------------------------------------------------------------------------------------------


編輯完成後存檔。

3. 複製 OpenCV,ffmpeg,kernel module 等 .so & .ko 檔案至 recipe 資料夾:

Copy ffmpeg library:

cp -rv /s32v234_sdk/3rdparty/ffmpeg/linux-arm64/lib/*.so Project>/sources/meta-alb/recipes-wpi/copy-so-ko-files/copy-so-ko-files/ffmpeg/



Copy opencv library:

cp -rv /s32v234_sdk/3rdparty/ocv/cmake-v234ce-gnu-linux/lib/*.so.3.1* Project>/sources/meta-alb/recipes-wpi/copy-so-ko-files/copy-so-ko-files/opencv/


Copy kernel module:
cp -rv /s32v234_sdk/s32v_lib_temp/*.ko /sources/meta-alb/recipes-wpi/copy-so-ko-files/copy-so-ko-files/s32v_lib/


4. 重新編譯:
bitbake fsl-image-auto

確認檔案是否有包進rootfs,可到以下路徑做確認:
cd /build_s32v234evb/tmp/work/s32v234evb-fsl-linux/fsl-image-auto/1.0-r0/rootfs

即可確認完成 S32V Yocto BSP & VSDK 環境建置。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能