[ユビキタスネットワーク編]14-連発科MTK 8516 Yoctoテクニック


MTK 8516が提供するSDKは、Yoctoによって構築するが、Yoctoは入門の敷居が高いため、最初は多くのピットを通過したが、ここでは記録する.
Yocto中相関bbファイルに印刷を追加する方法
recipesに印刷情報を追加するには、2つの方法があります.
  • 第1はPython形式であり、この形式はconsole上に印刷することができる:bb.plain, bb.note, bb.warn, bb.error, bb.fatal, bb.debug
  • もう1つは、tempディレクトリの下のlogに含まれるbash形式であり、inherit logging(base.bbclassに含まれる必要があり、通常は特に追加する必要はありません):bbplain、bbnote、bbwarn、bberror、bbfatal、bbdebug
  • 1つ目の方法で直接印刷を追加するには、次のようにします.
    bbplain "#### debug D path : :
    ${D}" /build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/image

    その他の関連変数の意味
    //${S}  source code     
    S:
    build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/git
    
    //{D}        binary   
    D:
    /build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/image
    
    //${bindir}       /usr/bin
    
     SB:
    /build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/build
    
     STAGING_LIBDIR:
    /build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/avs-demo/1.0-r0/recipe-sysroot/
    
     WORKDIR:
     64bit     
    /build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0
    32bit      
    /build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/avs-demo/1.0-r0
    
    install -d      folder
    install -m             ,     
    

    主にYoctoのいくつかの詳細を参照します
    Yoctoパッケージrootfsエラー
    ####   rootfs  
    
    NOTE: scatter: compiling from external source tree /mtk8516/build/../src/bsp/scatter
    NOTE: lib64-lk: compiling from external source tree/mtk8516/build/../src/bsp/lk
    ERROR: mtk-image-aud-8516-1.0-r0 do_rootfs: Could not invoke dnf. Command '/mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/recipe-sysroot-native/usr/bin/dnf -y -c mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/rootfs/etc/dnf/dnf.conf --setopt=reposdir=mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/rootfs/etc/yum.repos.d --repofrompath=oe-repo,mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/oe-rootfs-repo --installroot=mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/rootfs --setopt=logdir=mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/temp --nogpgcheck install shadow avs-demo run-postinsts android-tools-adbd base-passwd tzapp iperf3 utf-gbk bluetooth-vendor mtkwlan packagegroup-mtk-upgrade-kit-native wpa-supplicant-passphrase wpa-supplicant mtk-audio-service dhcp-server-config upgrade_app dhcpcd dibbler custom glibc-gconv-gbk appmainprog glibc-gconv-libgb libasound thermal-manager nvram wlanmon wireless-tools ppc mtd-utils ipcd mtkcombotool wifi-mw coreutils libfuse2 bluetooth mtk-alsa-plugins sntp mtd-utils-ubifs openssl data-ubi-mnt assistantcenter prog glibc-gconv-gbgbk libnvramcustom glibc-gconv-gb18030 hostapd wpa-ctrl ppccli alsa-utils mtkwifitesttool app-prebuilt curl libcjson1 iptables tcpdump ntpdate mdnsresponder packagegroup-core-boot-aud mtkcombo glibc-gconv-euc-cn smtcn-mw smartaudioplayer ntp buildinfo' returned 1:
    Added oe-repo repo from mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/oe-rootfs-repo
    Last metadata expiration check: 0:00:00 ago on Sat 14 Dec 2019 05:43:29 AM UTC.
    Error: 
     Problem: conflicting requests
      - nothing provides liburiparser.so needed by avs-demo-1.0-r0.cortexa7hf_neon_vfpv4
    
    ERROR: mtk-image-aud-8516-1.0-r0 do_rootfs: Function failed: do_rootfs
    ERROR: Logfile of failure stored in: /mtk8516/build/tmp/work/aud8516p1v2_consys_slc-poky-linux-gnueabi/mtk-image-aud-8516/1.0-r0/temp/log.do_rootfs.181418
    ERROR: Task (meta/poky/../meta-mediatek-mt8516/recipes-audio/images/mtk-image-aud-8516.bb:do_rootfs) failed with exit code '1'
    

    この印刷で見た霧の水は、どこから手をつけたのか全く分からず、少し海が針をすくう感じがして、一日中並んで調べて、やっと方向があって、最終的に穴を比較する問題は、rootfsの梱包の問題ではなく、その中の1つです.bbファイルの書き間違えによるもの、例えばソースコードがapp_demo、app-demo.bbこのようなタイプの誤りによるものです.
    Yocto demo installエラー
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libAudioPlayer.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libAlerts.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libEqualizer.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libSettings.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libBluetooth.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libDoNotDisturbCA.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libPlaybackController.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libAVSSystem.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libInteractionModel.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libAIP.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libTemplateRuntime.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libNotifications.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libExternalMediaPlayer.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libESP.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libADSL.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libSpeechEncoder.so, changing it to avs-demo-1.0 because it was built later
    WARNING: avs-demo-1.0-r0 do_package: avs-sdk-1.0 was registered as shlib provider for libContextManager.so, changing it to avs-demo-1.0 because it was built later
    ERROR: avs-demo-1.0-r0 do_package: Fatal QA errors found, failing task.
    ERROR: avs-demo-1.0-r0 do_package: Function failed: do_package
    ERROR: Logfile of failure stored in:/mtk8516/build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/temp/log.do_package.86147
    ERROR: Task (/mtk8516/meta/poky/../meta-mediatek-mt8516/recipes-apps/avs-demo/avs-demo.bb:do_package) failed with exit code '1'
    

    yocto-qa-issueを参照して解決
    次のようにdemoに追加します.bb解決
    INSANE_SKIP_${PN} = "ldflags"
    INSANE_SKIP_${PN}-dev = "ldflags"
    FILES_${PN}-dev = "${includedir}"
    

    Yocto LICENSE_FLAGS_WHITELIST問題
  • LICENSE_FLAGS_WHITELIST=「commercial(商業的)」参照Yocto tips(17):Yocto License問題:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
  • ERROR: Nothing PROVIDES 'gstreamer1.0-plugins-ugly' (but/mtk8516/meta/poky/../meta-mediatek-mt8516/recipes-apps/avs-sdk/avs-sdk.bb DEPENDS on or otherwise requires it)
    gstreamer1.0-plugins-ugly was skipped: because it has a restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
    

    解決策:
    そのため、commercial Lincenseのパッケージを追加する必要がある場合は、local.confに行を追加すればいい:LICENSE_FLAGS_WHITELIST=“commercial”