Встраивание ядра Linux Роберта Нельсона в Yocto (daisy) для beaglebone black

Я пытался собрать Linux для beaglebone black из официального репозитория https://github.com/beagleboard/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

С приведенной выше конфигурацией я могу получить и открыть menuconfig для загруженного ядра Linux, я использовал следующую команду:

# 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

Слои Bitbake для Linux показаны ниже вывода

Просто к вашему сведению:

# 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

Любая помощь / указатель / подсказка / предложения по компиляции?

Спасибо,

С уважением, Анкур


person ART    schedule 09.06.2015    source источник
comment
Вы запускали скрипт setup_environment? Правильно ли вы настроили local.conf и bblayers.conf?   -  person LPs    schedule 09.06.2015
comment
Спасибо за подсказки для отладки. Да, действительно, я запустил сценарий setup_env. вот почему работает команда bitbake для menuconfig. Я добавил meta-ydevelop в файл bblayers.conf. Но я ничего не менял в local.conf для смены ядра. local.conf содержит МАШИНУ? = beaglebone.   -  person ART    schedule 09.06.2015
comment
Вы пробовали скомпилировать стандартный тупой рецепт core-image-base или corre-image-minimal?   -  person LPs    schedule 09.06.2015
comment
Спасибо за помощь, я скомпилировал core-image-sato, и он отлично работает. Единственная проблема в том, что мой 7-дюймовый ЖК-дисплей Chipsee не работает. И я читал на форуме BBB, что ветвь Linux Роберта Нельсона поддерживает то же самое. После компиляции этого ядра, если используется am335x-boneblack-bbb-exp-c.dts мой Chipsee LCD должен загрузиться. ссылка: mail-archive.com/[email protected]/msg22535. html   -  person ART    schedule 09.06.2015


Ответы (1)


На данный момент я загрузил набор инструментов Yocto_daisy (1.6) и установил его на свой компьютер. И скомпилировал Linux вне сборки Yocto. Вот шаги.
Я выполнил следующие шаги в моем виртуальном боксе, установленном ubuntu.

  1. в Yocto_daisy создайте core-image-sato, используя следующую команду,

    bitbake core-image-sato

  2. Подготовьте карту micro SD с системой корневых файлов, SPL и U-Boot, uImage, dtb, uEnv.txt.

  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 /
    make modules_install

  3. когда ядро ​​собрано, скопируйте uImage (из / arch / arm / boot) и am335x-boneblack-bbb-exp-c.dtb (из / arch / arm / boot) в раздел BOOT карты micro SD.

К вашему сведению мой 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.

Мне еще предстоит настроить сенсорную калибровку для ЖК-дисплея, но как только я найду ее, я обновлю ответ.

Еще одна нерешенная задача - это сборка над ядром в систему сборки Yocto. Я обновлю ответ, как только закончу с этим.

Надеюсь, это поможет кому-то с той же проблемой.

person ART    schedule 14.06.2015