米尔电子
直播中

XX

8年用户 349经验值
擅长:电源/新能源 模拟技术 控制/MCU
私信 关注
[技术]

【米尔MYD-J1028X开发板试用体验】编译与烧录

yocto 工程编译与烧录

类似于AOSP工程的编译方式,这个yocto在初始化的时候,也是会扫描所有的bb文件。

而是要从各个不同的地方(比如nxp官方的git 或者是busybox的git)下载这些源码,然后将这些源码解压,这里可以选择米尔官方已经下载好的,这样可以避免网络问题导致下载失败。将网盘上面的downloads压缩包下载之后,解压,然后放到 和source同级目录 。此时,SDK目录的文件如下图所示

166169394891467ukx7t3cz

下载完download之后,即可开始编译,首先要设置DISTRO 和MACHINE,对于myd j1028开发板,执行如下命令

DISTRO=nxp-real-time-edge MACHINE=mydj1028 source real-time-edge-setup-env.sh -b myir-real-edge

-b后面指定的是构建输出目录,是相对路径。

1661693949243b4qxwhfol1

然后执行

bitbake myir-image-real-time-edge

1661693949547fdice25xq5

这里的意思是,总共有6646个构建的子目标。全部完成即可得到固件。

经过漫长的等待,最终在myir-real-edge/tmp/deploy/images/mydj1028下得到固件。1661693949971rdqjm0wjor

这个固件可以放到EMMC执行,但是需要通过sd卡烧录,所以还要编译一个能够通过SD卡烧录的镜像

bitbake myir-image-burn

16616939504440ywkeo0a5t

得到镜像在tmp/deploy/images/mydj1028,这里有很多链接,实际上文件名应该是myir-image-burn-mydj1028-20220826154153.rootfs.wic.bz2

1661693950805vm0x9o63zo

将这个文件按照 https://bbs.elecfans.com/jishu_2296118_1_1.html所述的方式烧录到板上。

第一次启动,报错,有如下提示

1661693951235c1x5v0ja8z

16616939516340vkwn4yyl5

这里的意思是它尝试把/dev/mmcblk0p1挂载到/boot。而从emmc启动时没有mmcblk0p1。可以通过如下方式修改

vi /etc/fstab

1661693952093fcylbsyh2u

将此处的mmcblk0p1改为mmcblk1p1,mmcblk0对应sd卡槽那路sdmmc,mmcblk1对应才是emmc那路sdmmc,这里应该是myir的sdk默认从sd卡启动,后面应该在编译系统的时候就改好fstab

修改之后reboot,这次就是进入正常的系统了

1661693952502cpqs6obzns

到这里,系统编译就完成了

构建遇到的问题:

1、主机buildtools(host gcc等)版本不对

1661693953007s5uuu7mtbm

可以到downloads.yoctoproject.org/releases/yocto/ 去下载符合版本要求的。此网站有很多版本可以选择,到sources/meta-poky/conf/distro/poky.conf找到当前的版本,比如

1661693953431ni0bvahil3

那么版本就是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编译报错

1661693953846lfi4cb5yvn

几个函数找不到定义。既然找不到定义,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

16616939544178jhrz932k2

注释掉这几个函数,直接返回成功即可。注意这里的修改是在编译的目标文件夹里面修改,yocto的编译是把下载的源码压缩包(downloads里面那些)解压到构建输出目录,并且在这个目录执行编译的,那就直接修改它解压出来的源码。

3、u-boot报找不到url地址,这个是MYIR的配置文件写错

1661693954880k0ij9yk6cm

在sources/meta-myir-real-time/dynamic-layers/qoriq-layer/recipes-bsp/u-boot/u-boot-qoriq_%.bbappend 修改这两行内容

16616939553607zvf81nt4q

更多回帖

发帖
×
20
完善资料,
赚取积分