+7(952) 531-56-65

out4ru@gmail.com

Процессорные модули » Статьи » Статья 6. Ядро Kernel

Статья 6. Ядро Kernel


Описание


Практически все современные системы сборки (Buildroot, Yocto, OpenWRT и т.д.) умеют собирать ядро операционной системы Linux для выбранного типа процессора. Но иногда, по каким-либо причинам требуется собрать отдельно ядро вместе с dtb файлом. Исходники мейнстрим ядер всегда можно найти на kernel.org. Его можно загрузить в виде архива или склонировать с гит репозитория. Вендорные ядра (предоставляемые производителями процессором) можно найти на их сайтах или репозиториях. К примеру для NXP (Freescale) это https://github.com/Freescale/linux-fslc

Например для сборки ядра Linux для процессоров семейства i.MX6/i.MX6UL/i.MX6ULL/i.MX7

1. Устанавливаем пакеты необходимые для сборки 

sudo apt-get install git subversion build-essential libncurses5-dev ncurses-term gawk  gcc-arm-linux-gnueabihf

2. Клонируем ядро из репозитория 

git clone https://github.com/Freescale/linux-fslc.git

3. В каталоге arch/arm/configs находятся дефконфиги для разных процесссоров. Нам нужен imx_v6_v7_defconfig. Задаем конфигурацию

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v6_v7_defconfig

4. Если есть необходимость включить/выключить какие-то модули или драйвера, заходим в менюконфиг

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

После внесения изменений, выходим, сохранив новую конфигурацию. Она будет записана в файла .config
Если нужно собрать также свой файл описания железа (dts файл)  копируем его в каталог arch/arm/boot/dts и там же вписываем его имя с раширением dtb в Makefile

dtb-$(CONFIG_SOC_IMX6UL) += \
        imx6ul-14x14-evk.dtb \
        imx6ul-ccimx6ulsbcexpress.dtb \
        imx6ul-ccimx6ulsbcpro.dtb \
        imx6ul-geam.dtb \
        imx6ul-isiot-emmc.dtb \
        imx6ul-isiot-nand.dtb \
        imx6ul-kontron-n6310-s.dtb \
        imx6ul-kontron-n6310-s-43.dtb \
        imx6ul-liteboard.dtb \
        imx6ul-opos6uldev.dtb \
        imx6ul-pico-dwarf.dtb \
        imx6ul-pico-hobbit.dtb \
        imx6ul-pico-pi.dtb \
        imx6ul-phytec-segin-ff-rdk-nand.dtb \
        imx6ul-tx6ul-0010.dtb \
        imx6ul-tx6ul-0011.dtb \
        imx6ul-tx6ul-mainboard.dtb \
        imx6ull-14x14-evk.dtb \
        imx6ull-myfile \
        imx6ull-colibri-eval-v3.dtb \
        imx6ull-colibri-wifi-eval-v3.dtb \
        imx6ull-phytec-segin-ff-rdk-nand.dtb \
        imx6ull-phytec-segin-ff-rdk-emmc.dtb \
        imx6ull-phytec-segin-lc-rdk-nand.dtb \
        imx6ulz-14x14-evk.dtb
dtb-$(CONFIG_SOC_IMX7D) += \

в корне ядра запускаем процесс сборки

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules

Будет собрано ядро, соответствующие dtb файлы и модули. Если надо собрать ядро в формате uImage, то необходимо в параметрах указать loadaddr 

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x80008000 uImage

Если у вас многоядерный процессор, укажите параметр -j(число потоков)

После окончания компиляции, вы найдете файл zImage (uImage) в каталоге arch/arm/boot
И собранный dtb файл в рядом, в каталоге arch/arm/boot/dts
Осталось загрузить их в целевую систему.


Быстрая доставка

Безопасная оплата

Гарантия качества