使用 Yocto构建米尔MYIR-MYD-JX8MP开发板镜像----构建过程中的问题及解决办法

本文档详细介绍了在使用Yocto构建镜像时遇到的网络、配置和资源问题,提供了如修改配置脚本、删除并重新下载依赖、调整编译参数等解决方法。同时,针对编译过程中的错误,给出了具体的文件修改建议和操作步骤。此外,还讲解了烧写镜像的过程,包括设置启动模式、使用UUU工具以及烧写后的验证。
摘要由CSDN通过智能技术生成

一、在构建镜像之前,确保网络环境稳定,网速不要太差,而且编译的时间较长,做好心理准备。

1)在编译的时候,出现如下问题:

ERROR: Task (/home/duxy/myd-jx8mp-yocto/sources/meta-myir/meta-ml/recipes
-libraries/tensorflow-lite/tensorflow-lite_2.4.0.bb:do_configure) failed with exit co
de '1' 

上面可能出错的原因一般是由于网络差,导致这个包的一些组件没下载完整,请按照以下方式解决。 直接在/myd-jx8mp-yocto/build-xwayland/文件夹搜索 download_dependencies.sh 屏蔽掉依赖下载,屏蔽掉如下部分:

#download_and_extract "${EIGEN_URL}" "${DOWNLOADS_DIR}/eigen" "${EIGEN_S
HA}" 
#download_and_extract "${GEMMLOWP_URL}" "${DOWNLOADS_DIR}/gemmlowp
" "${GEMMLOWP_SHA}" 
#download_and_extract "${RUY_URL}" "${DOWNLOADS_DIR}/ruy" "${RUY_SHA}" 
#download_and_extract "${GOOGLETEST_URL}" "${DOWNLOADS_DIR}/googletest
" "${GOOGLETEST_SHA}" 
MYIR-MYD-JX8MP-SW-DG-ZH-L5.10.9                                                     
 - 19 - 
#download_and_extract "${ABSL_URL}" "${DOWNLOADS_DIR}/absl" "${ABSL_SHA}
" 
#download_and_extract "${NEON_2_SSE_URL}" "${DOWNLOADS_DIR}/neon_2_sse
" 
#download_and_extract "${FARMHASH_URL}" "${DOWNLOADS_DIR}/farmhash" "
${FARMHASH_SHA}" 
#download_and_extract "${FLATBUFFERS_URL}" "${DOWNLOADS_DIR}/flatbuffers"
 "${FLATBUFFERS_SHA}" 
#download_and_extract "${FFT2D_URL}" "${DOWNLOADS_DIR}/fft2d" "${FFT2D_S
HA}" 
#download_and_extract "${FP16_URL}" "${DOWNLOADS_DIR}/fp16" "${FP16_SHA}
" 
#download_and_extract "${CPUINFO_URL}" "${DOWNLOADS_DIR}/cpuinfo" "${CP
UINFO_SHA}" 
#download_and_extract "${RE2_URL}" "${DOWNLOADS_DIR}/re2" ${RE2_SHA} 

         然后,由于之前的下载没有将这个包下载完整,删除先前下载目录 : 
        PC$ rm downloads -rf 

        注意:这里的downloads并不是那个40G的那个文件,注意别删除错了,这个文件路径是/opt/myd-jx8mp-yocto/build-xwayland/tmp/work/cortexa53-crypto-poky-linux/tensorflow-lite/2.4.0-r0/git/tensorflow/lite/tools/make/,删除 downloads之后,用户需要拷贝已经下载好的 download压缩包到该目录,然后解压,文件在目录 04-Source/tensorflow_lite-downloads.tar.gz

        修改完成之后,重新构建系统,构建完成之后,

        编译出来的镜像在”build-xwayland/tmp/deploy/images/myd-jx8mp“目录。

        如果修改完这两部分后,依然无法编译通过,还是报最开始的错误,尝试下删除下面文件
/opt/myd-jx8mp-yocto/sources/meta-myir/meta-sdk/recipes-fsl/images/myir-image-full.bb 中的 ${ML_PKGS} \ ,然后再重新编译。

        如果还是不行,那么就在房屋的东南西北角各烧一炷香,中间桌子摆上猪头拜一拜吧。。。博主也无能为力了。。。

        开个玩笑,还解决不了赶紧打电话联系技术支持吧!

2)在编译的时候,出现以下问题

        首先,这个问题出现的原因也一般是因为网络问题没下载下来,多次尝试有可能会将它下载成功,不过不是绝对的,目前有两个解决办法:

        ①比较粗暴不讲道理的办法:直接将所有包删除重新来,首先删除掉downloads那个40G的大文件夹,然后再删除myd-jx8mp-yocto文件夹,然后,重启下电脑,再重新解压下这两个包,然后再执行编译指令,一般会解决。。。(博主自己尝试几次得出的结论,很奇怪,无法理解)

        ②科学且讲道理的办法,比较麻烦:

在文件夹中找到这个文件:

sources/meta-myir/meta-sdk/dynamic-layers/qt5-layer/recipes-fsl/packagegroup/packagegroup-qt5-imx.bb

然后,删掉 26 行的

“   ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nxp-demo-experience', '', d)}\   ”

再找到 sources/meta-myir/meta-sdk/recipes-fsl/images/imx-image-multimedia.bb 这个文件

 删掉82行的  “ nxp-demo-experience \”

然后再编译imx-boot, 编译前请仔细看下软件开发手册关于编译uboot的过程。

            1.需要现把uboot源码放到本地

            2.修改源码,提交commit

            3. 修改sources/meta-myir/meta-bsp/recipes-bsp/u-boot/u-boot-imx_2020.04.bb 里面改成本地URI,comit值

            4. 编译imx-boot:bitbake -c cleansstate u-boot; bitbake imx-boot

        以上方法基本会解决 “nxp-demo-experience” 这个包下载不下来的问题,再次强调下,网速尽可能好,预留的内存一定要够,不然编译起来是真难受。。。

 3)执行:bitbake myir-image-full --runall=fetch ,提示如下错误:

NOTE: Reconnecting to bitbake server...

NOTE: Retrying server connection (#1)... (Traceback (most recent call last):

  File "/opt/myd-jx8mp-yocto/sources/poky/bitbake/lib/bb/main.py", line 453, in setup_bitbake

    server_connection = bb.server.process.connectProcessServer(sockname, featureset)

  File "/opt/myd-jx8mp-yocto/sources/poky/bitbake/lib/bb/server/process.py", line 573, in connectProcessServer

    sock.connect(os.path.basename(sockname))

BlockingIOError: [Errno 11] Resource temporarily unavailable

)

        这个错误意思是说bitbake 服务器链接异常,重启一下服务器再试下就行

4)编译时间非常长,几乎不动

可以选择,把编译个数减少, qt 和opencv编译都非常吃内存。把 build-xwayland/conf/local.conf 这个文件改下。 改多少可选, 一次编译一个包, 一个包采用几个线程编译

BB_NUMBER_THREADS = "1" 
PARALLEL_MAKE = "-j 1"

  另外开一个窗口,采用root权限,运行如下指令,每隔10分钟清理一下缓存: 

while [ 1 ];do echo 1 > /proc/sys/vm/drop_caches;sleep 600;done

   二、镜像文件烧写

1)通过UUU文件烧写,选择开发板启动模式,将拨码开关拨到 USB 下载模式 SW1(OFF,OFF,OFF,ON)。然后 连接好硬件,将开发板的 J11 TYPEC DPR接口与电脑连接。插入 12V电源适配器。注意:文档中说的是J4接口,这个是错误的!正常烧写过程如下:

         可以一个接口J11烧写,另外一个接口J14链接串口助手,可以看到烧写过程的信息,完成后烧写软件就自动退掉了,串口信息如下:

 

 

参考资源链接:[MYD-YA157C Linux开发指南:V2.0 -米尔电子科技SDK与Yocto教程](https://wenku.csdn.net/doc/28nssmdk2j?utm_source=wenku_answer2doc_content) 为了解答如何在MYD-YA157C开发板构建并烧录Linux系统镜像,你需要仔细阅读米尔电子提供的《MYD-YA157C Linux开发指南:V2.0 -米尔电子科技SDK与Yocto教程》。这个过程分为几个步骤: 1. **开发环境准备**: - 确保你的开发主机环境满足要求,包括安装了Linux操作系统以及必要的交叉编译工具链。 - 通过米尔电子科技的官方渠道获取定制的SDK,并按照指南的说明进行安装和配置。 - 了解Yocto Project的基础知识,它是构建Linux系统的关键工具。 2. **Yocto构建开发板镜像**: - 首先,使用Yocto提供的命令获取最新的源码仓库。 - 按照指南设置你的Yocto环境变量,例如`OECORE_BITBAKE保证金`。 - 运行`bitbake`命令来编译所需的Linux系统镜像,这可能涉及到选择正确的配置文件(如`myd-ya157c.conf`)。 - 如果需要,构建SDK,以便于后续的软件开发和编译。 3. **烧录系统镜像**: - 使用CubeProg工具或者制作SD卡启动器进行系统镜像的烧录。对于CubeProg,你需要按照米尔电子提供的文档操作,连接开发板,并使用相应的烧录命令。 - 制作SD卡启动器时,需要确保SD卡的格式化和分区步骤正确,然后使用Yocto工具链的工具将镜像写入SD卡。 在执行以上步骤时,请确保遵循《MYD-YA157C Linux开发指南:V2.0 -米尔电子科技SDK与Yocto教程》的每一个细节,以避免常见的构建和烧录过程的错误。此外,如果你希望进一步深入了解Yocto构建系统和Linux内核的定制,建议继续探索该指南关于板级支持包修改的内容。 参考资源链接:[MYD-YA157C Linux开发指南:V2.0 -米尔电子科技SDK与Yocto教程](https://wenku.csdn.net/doc/28nssmdk2j?utm_source=wenku_answer2doc_content)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值