簡體   English   中英

將Robert Nelson的Linux內核構建到Yocto(daisy)中以實現beaglebone black

[英]Building Robert Nelson's Linux kernel into Yocto(daisy) for beaglebone black

我正在嘗試從官方存儲庫https://github.com/beagleboard/linux為beaglebone black構建Linux

我能夠獲取並運行menuconfig,但是當我嘗試編譯內核時,我得到了錯誤。

以下是配方文件的內容。

文件名 :linux-yocto-chipsee_3.14.bb
路徑 :/ home / ankur / yocto_daisy / poky / meta-ybdevelop / recipes-example / linux

inherit kernel
require recipes-kernel/linux/linux-yocto.inc

BRANCH = "3.14"
# Override SRC_URI in a bbappend file to point at a different source # tree if you do not want to build from Linus' tree.
SRC_URI = "git://github.com/beagleboard/linux.git;branch=${BRANCH};nocheckout=1;name=machine"

LINUX_VERSION ?= "3.14"
LINUX_VERSION_EXTENSION ?= "-custom"

# Override SRCREV to point to a different commit in a bbappend file to # build a different release of the Linux kernel.
# tag: v3.4 76e10d158efb6d4516018846f60c2ab5501900bc
SRCREV_machine="76e10d158efb6d4516018846f60c2ab5501900bc"

PR = "r1"
PV = "${LINUX_VERSION}+git${SRCPV}"

# Override COMPATIBLE_MACHINE to include your machine in a bbappend # file. Leaving it empty here ensures an early explicit build failure.
COMPATIBLE_MACHINE = "beaglebone"

文件名 :linux-yocto-chipsee_3.14.bbappend
文件路徑 :/ home / ankur / yocto_daisy / poky / meta-ybdevelop / recipes-example / linux

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
SRC_URI_append = " file://defconfig"

defconfig路徑 :/home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14

通過以上配置,我能夠獲取並打開獲取的Linux內核的menuconfig,我使用的命令如下所示,

# bitbake linux-yocto-chipsee -c menuconfig

但是,當我嘗試使用以下命令編譯Linux時,出現錯誤,

# bitbake linux-yocto-chipsee -c compile

得到與gcc有關的錯誤:(

 /bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found
| make[4]: *** [scripts/mod/empty.o] Error 127
| make[3]: *** [scripts/mod] Error 2
| make[3]: *** Waiting for unfinished jobs....
|   SHIPPED scripts/genksyms/lex.lex.c
|   Generating include/generated/mach-types.h
|   SHIPPED scripts/genksyms/keywords.hash.c
|   SHIPPED scripts/genksyms/parse.tab.h
|   SHIPPED scripts/genksyms/parse.tab.c
|   HOSTCC  scripts/genksyms/lex.lex.o
|   CC      kernel/bounds.s
| /bin/sh: 1: arm-poky-linux-gnueabi-gcc: not found

當我嘗試使用以下命令進行構建時,它也失敗了。

# bitbake linux-yocto-chipsee -c build

ERROR: Multiple .bb files are due to be built which each provide virtual/kernel (/home/ankur/yocto_daisy/poky/meta-ybdevelop/recipes-example/linux/linux-yocto-chipsee_3.14.bb /home/ankur/yocto_daisy/poky/meta/recipes-kernel/linux/linux-yocto_3.14.bb).
 This usually means one provides something the other doesn't and should.
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_compile (log file is located at /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878)
ERROR: Logfile of failure stored in: /home/ankur/yocto_daisy/poky/build_fresh/tmp/work/beaglebone-poky-linux-gnueabi/linux-yocto-chipsee/3.14+gitAUTOINC+76e10d158e-r1/temp/log.do_compile.30878

Linux的Bitbake層顯示如下輸出

僅供參考:

# bitbake-layers show-recipes 'linux*'

Parsing recipes..done.
=== Available recipes matching linux*: ===
linux-dummy:
  meta                 1.0
linux-firmware:
  meta                 1:0.0+gitAUTOINC+600caefd83
linux-libc-headers:
  meta                 3.14
linux-yocto:
  meta                 3.14.4+gitAUTOINC+183622e809_0143c6ebb4
  meta                 3.10 (skipped)
  meta                 3.4 (skipped)
linux-yocto-chipsee:
  meta-ybdevelop       3.14+gitAUTOINC+76e10d158e
linux-yocto-dev:
  meta                 unknown (skipped)
linux-yocto-rt:
  meta                 3.10 (skipped)
  meta                 3.14 (skipped)
  meta                 3.4 (skipped)
linux-yocto-tiny:
  meta                 3.10 (skipped)
  meta                 3.14 (skipped)
  meta                 3.4 (skipped)
linuxdoc-tools-native:
  meta                 0.9.69
linuxptp:
  meta-oe              1.4

任何幫助/指針/提示/建議來編譯此內容?

謝謝,

問候,安庫爾

好吧,我暫時下載了Yocto_daisy(1.6)工具鏈並將其安裝在我的PC中。 並編譯了Yocto構建外部的Linux。 這是步驟。
我在安裝了ubuntu的virtualbox中按照以下步驟操作。

  1. 在Yocto_daisy中使用以下命令構建core-image-sato,

    比特烘烤核心圖像佐藤

  2. 准備帶有根文件系統,SPL和U-Boot,uImage,dtb,uEnv.txt的micro SD卡。

  3. 使用以下命令克隆beaglebone black Linux

    git clone --depth = 1 https://github.com/beagleboard/linux

  4. 從以下鏈接下載yocto-1.6(daisy)工具鏈。

    http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/
    根據您的機器類型,從i686或x86_64下載
    我下載了以下toochain。
    http://downloads.yoctoproject.org/releases/yocto/yocto-1.6/toolchain/i686/poky-eglibc-i686-core-image-sato-armv7a-vfp-neon-toolchain-1.6.sh

  5. 通過運行下載工具鏈腳本來安裝工具鏈。 默認情況下,它安裝到opt目錄中,我將其安裝在默認路徑中。

  6. 在終端中,遍歷以上下載的Linux目錄。 並通過運行以下命令來設置工具鏈環境,

    源/opt/poky/1.6/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi

  7. 現在使用以下命令配置內核,

制作bb.org_defconfig

  1. 然后使用以下命令構建內核

    使uImage LOADADDR = 0x80008000 -j4

  2. 現在我們將使用以下命令將模塊安裝到本地目錄中,

    mkdir bbb_modules
    導出INSTALL_MOD_PATH = / home / ankur / linux / bbb_modules /
    制作modules_install

  3. 構建內核后,將uImage (從/ arch / arm / boot)和am335x-boneblack-bbb-exp-c.dtb (從/ arch / arm / boot) am335x-boneblack-bbb-exp-c.dtb到micro SD卡的BOOT分區。

僅供參考,我的uEnv.txt看起來像這樣

Disable: HDMI
bootargs=console=ttyO1,115200n8 root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait;
bootcmd=mmc rescan ; mmc dev 0 ; fatload mmc 0 0x80007fc0 uImage ; fatload mmc 0 0x80F80000 am335x-boneblack-bbb-exp-c.dtb ; echo Ankur... ${bootcmd}; bootm 0x80007fc0 - 0x80F80000;
uenvcmd=boot;

11。 現在,使用以下命令將模塊從本地目錄復制到micro SD卡,

cp -a /home/ankur/linux/bbb_modules/lib /media/ankur/ROOT/
sync

12.彈出卡,將其放入Beaglbone Black,然后打開BBB + LCD。

我尚未使LCD可以進行觸摸校准,但是一旦找到它,我就會更新答案。

另一個懸而未決的事情是將內核之上的內容構建到Yocto構建系統中。 完成后,我將更新答案。

希望這對遇到同樣問題的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM