Skip to content

EltexEmbeddedC/cross-compilation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Кросс-компиляция

Подготовка

  • Убедимся, что все необходимые программы установлены в системе (ссылка);
  • Склонируем официальный репозиторий Linux (ссылка);
  • Если в репозитории ранее что-то собиралось, необходимо выполнить команду make distclean.

Сборка

  • ARCH=arm make defconfig - создадим дефолтную конфигурацию под архитектуру ARM;

    image

  • ARCH=arm make menuconfig - при необходимости можно изменить параметры конфигурации;

  • ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j<число ядер> zImage - соберем ядро под заданную архитектуру;

    image

    После сборки увидим надпись Kernel: arch/arm/boot/zImage is ready.

  • ARCH=arm make -j<число ядер> dtbs - соберем device tree blob (dtb) файлы, чтобы затем выбрать нужный. Это поможет эмулятору понять, какой функционал универсального ядра использовать, т.к. ядро умеет работать с разными платами.

    image

Тестирование

  • QEMU_AUDIO_DRV=none qemu-system-arm -M vexpress-a9 -kernel zImage -dtb vexpress-v2p-ca9.dtb -append "console=ttyAMA0" -nographic - запустим виртуальную машину с эмулированной ARM платформой Versatile Express Cortex-A9, загрузим ядро из файла zImage, используя файл конфигурации устройства vexpress-v2p-ca9.dtb, направим вывод консоли на виртуальный последовательный порт ttyAMA0 и запустим всё это в текстовом режиме;

    image

Tip

Список поддерживаемых плат можно вывести командой qemu-system-arm -machine help.

  • После запуска ядра увидим ошибку Kernel panic. Это говорит о том, что ядро запустилось, но не смогло найти корневую файловую систему и процесс init в ней.

    image

Таким образом, ядро было успешно собрано и запущено. Сборка корневой файловой системы происходит в задании 18.

About

Задание 19. Кросс-компиляция

Resources

Stars

Watchers

Forks