本文来源电子发烧友社区,作者:XX, 帖子地址:https://bbs.elecfans.com/jishu_2302357_1_1.html
yocto 工程编译与烧录
类似于AOSP工程的编译方式,这个yocto在初始化的时候,也是会扫描所有的bb文件。
而是要从各个不同的地方(比如nxp官方的git 或者是busybox的git)下载这些源码,然后将这些源码解压,这里可以选择米尔官方已经下载好的,这样可以避免网络问题导致下载失败。将网盘上面的downloads压缩包下载之后,解压,然后放到 和source同级目录 。此时,SDK目录的文件如下图所示
下载完download之后,即可开始编译,首先要设置DISTRO 和MACHINE,对于myd j1028开发板,执行如下命令
DISTRO=nxp-real-time-edge MACHINE=mydj1028 source real-time-edge-setup-env.sh -b myir-real-edge
-b后面指定的是构建输出目录,是相对路径。
然后执行
bitbake myir-image-real-time-edge
这里的意思是,总共有6646个构建的子目标。全部完成即可得到固件。
经过漫长的等待,最终在myir-real-edge/tmp/deploy/images/mydj1028下得到固件。
这个固件可以放到EMMC执行,但是需要通过sd卡烧录,所以还要编译一个能够通过SD卡烧录的镜像
bitbake myir-image-burn
得到镜像在tmp/deploy/images/mydj1028,这里有很多链接,实际上文件名应该是myir-image-burn-mydj1028-20220826154153.rootfs.wic.bz2
将这个文件按照 https://bbs.elecfans.com/jishu_2296118_1_1.html所述的方式烧录到板上。
第一次启动,报错,有如下提示
这里的意思是它尝试把/dev/mmcblk0p1挂载到/boot。而从emmc启动时没有mmcblk0p1。可以通过如下方式修改
vi /etc/fstab
将此处的mmcblk0p1改为mmcblk1p1,mmcblk0对应sd卡槽那路sdmmc,mmcblk1对应才是emmc那路sdmmc,这里应该是myir的sdk默认从sd卡启动,后面应该在编译系统的时候就改好fstab
修改之后reboot,这次就是进入正常的系统了
到这里,系统编译就完成了
构建遇到的问题:
1、主机buildtools(host gcc等)版本不对
可以到downloads.yoctoproject.org/releases/yocto/去下载符合版本要求的。此网站有很多版本可以选择,到sources/meta-poky/conf/distro/poky.conf找到当前的版本,比如
那么版本就是3.2.1,然后到downloads.yoctoproject.org/releases/yocto/yocto-3.2.1/buildtools/下载x86_64-buildtools-extended-nativesdk-standalone-3.2.1.sh 并执行安装(实际就是把一堆可执行程序解压到那个目录)。安装之后执行一下安装文件夹下的environment-setup-x86_64-pokysdk-linux ,然后再执行bitbake即可。
2、optee编译报错
几个函数找不到定义。既然找不到定义,optee一般情况下用不上,况且这个是个host端的测试程序,那就直接干掉
在myir-real-edge/tmp/work/mydj1028-fsl-linux/optee-test-qoriq/3.10.0+gitAUTOINC+0c998f42a3-r0/git/ta/os_test/ta_entry.c
注释掉这几个函数,直接返回成功即可。注意这里的修改是在编译的目标文件夹里面修改,yocto的编译是把下载的源码压缩包(downloads里面那些)解压到构建输出目录,并且在这个目录执行编译的,那就直接修改它解压出来的源码。
3、u-boot报找不到url地址,这个是MYIR的配置文件写错
在sources/meta-myir-real-time/dynamic-layers/qoriq-layer/recipes-bsp/u-boot/u-boot-qoriq_%.bbappend 修改这两行内容
-
米尔科技
+关注
关注
5文章
227浏览量
20957 -
MYD-J1028X
+关注
关注
1文章
16浏览量
280
发布评论请先 登录
相关推荐
评论