本文來(lái)源電子發(fā)燒友社區(qū),作者:XX, 帖子地址:https://bbs.elecfans.com/jishu_2302357_1_1.html
yocto 工程編譯與燒錄
類似于AOSP工程的編譯方式,這個(gè)yocto在初始化的時(shí)候,也是會(huì)掃描所有的bb文件。
而是要從各個(gè)不同的地方(比如nxp官方的git 或者是busybox的git)下載這些源碼,然后將這些源碼解壓,這里可以選擇米爾官方已經(jīng)下載好的,這樣可以避免網(wǎng)絡(luò)問(wèn)題導(dǎo)致下載失敗。將網(wǎng)盤(pán)上面的downloads壓縮包下載之后,解壓,然后放到 和source同級(jí)目錄 。此時(shí),SDK目錄的文件如下圖所示
下載完download之后,即可開(kāi)始編譯,首先要設(shè)置DISTRO 和MACHINE,對(duì)于myd j1028開(kāi)發(fā)板,執(zhí)行如下命令
DISTRO=nxp-real-time-edge MACHINE=mydj1028 source real-time-edge-setup-env.sh -b myir-real-edge
-b后面指定的是構(gòu)建輸出目錄,是相對(duì)路徑。
然后執(zhí)行
bitbake myir-image-real-time-edge
這里的意思是,總共有6646個(gè)構(gòu)建的子目標(biāo)。全部完成即可得到固件。
經(jīng)過(guò)漫長(zhǎng)的等待,最終在myir-real-edge/tmp/deploy/images/mydj1028下得到固件。
這個(gè)固件可以放到EMMC執(zhí)行,但是需要通過(guò)sd卡燒錄,所以還要編譯一個(gè)能夠通過(guò)SD卡燒錄的鏡像
bitbake myir-image-burn
得到鏡像在tmp/deploy/images/mydj1028,這里有很多鏈接,實(shí)際上文件名應(yīng)該是myir-image-burn-mydj1028-20220826154153.rootfs.wic.bz2
將這個(gè)文件按照 https://bbs.elecfans.com/jishu_2296118_1_1.html所述的方式燒錄到板上。
第一次啟動(dòng),報(bào)錯(cuò),有如下提示
這里的意思是它嘗試把/dev/mmcblk0p1掛載到/boot。而從emmc啟動(dòng)時(shí)沒(méi)有mmcblk0p1??梢酝ㄟ^(guò)如下方式修改
vi /etc/fstab
將此處的mmcblk0p1改為mmcblk1p1,mmcblk0對(duì)應(yīng)sd卡槽那路sdmmc,mmcblk1對(duì)應(yīng)才是emmc那路sdmmc,這里應(yīng)該是myir的sdk默認(rèn)從sd卡啟動(dòng),后面應(yīng)該在編譯系統(tǒng)的時(shí)候就改好fstab
修改之后reboot,這次就是進(jìn)入正常的系統(tǒng)了
到這里,系統(tǒng)編譯就完成了
構(gòu)建遇到的問(wèn)題:
1、主機(jī)buildtools(host gcc等)版本不對(duì)
可以到downloads.yoctoproject.org/releases/yocto/去下載符合版本要求的。此網(wǎng)站有很多版本可以選擇,到sources/meta-poky/conf/distro/poky.conf找到當(dāng)前的版本,比如
那么版本就是3.2.1,然后到downloads.yoctoproject.org/releases/yocto/yocto-3.2.1/buildtools/下載x86_64-buildtools-extended-nativesdk-standalone-3.2.1.sh 并執(zhí)行安裝(實(shí)際就是把一堆可執(zhí)行程序解壓到那個(gè)目錄)。安裝之后執(zhí)行一下安裝文件夾下的environment-setup-x86_64-pokysdk-linux ,然后再執(zhí)行bitbake即可。
2、optee編譯報(bào)錯(cuò)
幾個(gè)函數(shù)找不到定義。既然找不到定義,optee一般情況下用不上,況且這個(gè)是個(gè)host端的測(cè)試程序,那就直接干掉
在myir-real-edge/tmp/work/mydj1028-fsl-linux/optee-test-qoriq/3.10.0+gitAUTOINC+0c998f42a3-r0/git/ta/os_test/ta_entry.c
注釋掉這幾個(gè)函數(shù),直接返回成功即可。注意這里的修改是在編譯的目標(biāo)文件夾里面修改,yocto的編譯是把下載的源碼壓縮包(downloads里面那些)解壓到構(gòu)建輸出目錄,并且在這個(gè)目錄執(zhí)行編譯的,那就直接修改它解壓出來(lái)的源碼。
3、u-boot報(bào)找不到url地址,這個(gè)是MYIR的配置文件寫(xiě)錯(cuò)
在sources/meta-myir-real-time/dynamic-layers/qoriq-layer/recipes-bsp/u-boot/u-boot-qoriq_%.bbappend 修改這兩行內(nèi)容
-
米爾科技
+關(guān)注
關(guān)注
5文章
227瀏覽量
20882 -
MYD-J1028X
+關(guān)注
關(guān)注
1文章
16瀏覽量
274
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論