MTK8516 提供的SDK通过Yocto来进行构建, 由于Yocto入门门槛较高,刚开始也才过不少坑,这里记录下.

Yocto中相关.bb文件中如何添加打印

在recipes中加入打印信息,有两种方式

  1. 第一是Python形式,该形式可在console上打印出来: bb.plain, bb.note, bb.warn, bb.error, bb.fatal, bb.debug
  2. 另一种是bash形式,该形式会在temp目录下的log中包含,需要inherit logging(base.bbclass会包含,通常不需要特意添加): bbplain, bbnote, bbwarn, bberror, bbfatal, bbdebug

直接一点通过第一种方式添加打印, 如:

bbplain "#### debug D path : :\n${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/binSB:
/build/tmp/work/aarch64-poky-linux/avs-demo/1.0-r0/buildSTAGING_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-r0install -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_vfpv4ERROR: 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打包的问题, 而是其中一个.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问题
  1. 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的软件包,就需要添加对commercial的支持,只需要在local.conf中添加一行即可:LICENSE_FLAGS_WHITELIST=“commercial”

[ 物联网篇 ] 14 - 联发科MTK8516 Yocto技巧相关推荐

  1. [ 物联网篇 ] 12 - 联发科MTK8516 开发环境搭建

    联发科MTK8516开发平台主要面向智能语音助手设备(Voice Assistant Devices)和智能音响的系统设备.可以看到亚马逊的Echo和阿里巴巴的天猫精灵等等,出货量还是很大的. MT8 ...

  2. 14个JavaScript代码优化技巧

    云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! JavaScript 已经成为有史以来最受欢迎的编程语言之一.根据 W3Tech 的数据,全世界将 ...

  3. Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...

    记得点击文章末尾的"阅读原文"查看哟~ 下面先一起看下本周的摘要吧~ 想了解老用户如何参与阿里云双十一1折拼团特惠主机的,可以看第二条推送,文中提供了两种方法~,一起看看本周有哪些 ...

  4. 物联网商机巨大 联发科再不切入未来将受制于人

    2015年岁末,升任联发科技股份有限公司(下称联发科)副董事长不足半年的谢清江,面对台下公司的一级主管们显得有些无奈.他不得不解释为什么签署了这样一份合同--将苦心塑造"高端"形象 ...

  5. 学生党的川藏骑行经验谈 篇一:骑行技巧装备

    学生党的川藏骑行经验谈 篇一:骑行技巧&装备 某天艳阳高照,鄙人饭后正稳稳的在宿舍床上刷着"什么值得买",刷得那个兴高彩烈啊!(小编请留意,此处应有掌声 ).突然,一哥们微 ...

  6. 计算机使用技巧爆文,自媒体干货篇:利用这个小技巧可以五分钟之内写好一篇爆文!...

    原标题:自媒体干货篇:利用这个小技巧可以五分钟之内写好一篇爆文! 上期给大家分享了如何拟写一篇文章的爆文标题,今天就跟大家分享,如何在五分钟之内写好一篇爆文!相信大家在写文章的时候,最让人头疼的就是为 ...

  7. 第七十五篇:学术论文写作技巧

    第七十五篇:学术论文写作技巧 论文写作技巧 下载 论文写作技巧 最近听了一下网课,把大牛们的论文讲课记录和网上一些关于论文写作技巧的文章总结了一下.总结了一些关于论文的润色.语法.投稿.回复审稿人等需 ...

  8. [ 物联网篇 ] 02 - Yocto Project (YP)快速入门

    NXP i.MX 8M Mini 的源码构建系统使用的是Yocto,如果不熟悉Yocto,完全看不懂 i.MX 8M Mini 的相关代码. 废话不多说,直接到Yocto 官网看文档,写Demo.参考 ...

  9. 100天精通Python丨办公效率篇 —— 14、Python这些小技巧,让文件管理更加智能

    文章目录 1. 列出文件夹中的所有文件 2. 创建新文件夹 3. 复制文件 4. 删除文件夹 5. 使用 os.walk()方法查找文件 6. 使用 glob 模块查找文件 7. 批量重命名 文件/文 ...

最新文章

  1. OVS之vhost-net中VM通信(九)
  2. [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)
  3. 强力推荐!飞桨产业级PaddleNLP最新全景图发布
  4. 小练习——过滤掉出现次数最多的数据
  5. Ubuntu failed to fetch ... hash sum mismatch
  6. 查询sql语句是否使用索引
  7. mysql 通过存储过程 插入测试百万数据
  8. button 样式_缩减 SCSS 50%样式代码的 14 条实战经验
  9. 评价目标检测区域的准确性——IoU
  10. 用来理解 Java 编程语言的 8 个图表
  11. System center virtual machine manager 2008 R2安装部署
  12. 云计算将逐渐成为支撑SaaS应用的基础
  13. Spring Security 入门(1-4-1)Spring Security - 认证过程
  14. unity激活对象组件
  15. 如何修改已编译的dll文件
  16. 通达信手机版服务器文件夹,【通达信】通达信的一些目录和系统文件,用法说明。以备查询。...
  17. Java applet详解
  18. ET5.0 配置Excel
  19. Python爬虫监控(邮件和钉钉)
  20. c语言fgetc函数_C语言中的fgetc()函数与示例

热门文章

  1. Redis超级新手指南-下篇(哪吒篇)
  2. 【算法】环形赛道-java
  3. CSS浮动与定位 逆战班
  4. 三角形顺时针和逆时针的判定
  5. 如果移动办公OA行业也有世界杯,OA厂商谁能夺冠?
  6. 互联网下半场,为什么公司和个人都追捧“增长黑客”?
  7. 华为手机备忘录资料备份
  8. for(int a:b)的用法
  9. 向下兼容性格什么意思_恭喜你,被向下兼容了|有启发
  10. java zhs16gbk_JAVA-----乱码的处理 乱码的解决方法总结