Сборка программной части для IMX8M_MN/MM

Для сборки загрузчика, ядра и файловой системы, нужно скачать три файла с диска: SDK, firmware, dl.tar.gz, файл образа контейнера и в терминале перейти в каталог с файлами:

Распаковать sdk

tar -xvf sdk_2021.04.24.tar.gz

Разрешить запуск firmware-imx-8.10.bin

chmod +x firmware-imx-8.10.bin

Cкопировать firmware-imx-8.10.bin в папку sdk_2021.04.24/bootloader

cp firmware-imx-8.10.bin sdk_2021.04.24/bootloader

Собрать образ контейнера

sudo docker build -t px30_generic .

kernel

Для сборки kernel,dtb, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:

sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/kernel

Результат:

kernel/linux-imx/arch/arm64/boot/Image

kernel/linux-imx/arch/arm64/boot/dts/freescale/imx8mm-inmys-uq7-evk-lvds.dtb

bootloader

Для сборки bootloader для загрузки с QSPI, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:

sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader

Результат:

bootloader/uboot-imx/flash.bin.fspi

Для сборки bootloader для загрузки с sd card, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:

sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/bootloader flash.bin.sdcard

Результат:

bootloader/uboot-imx/flash.bin.sdcard

Сделать SDcard загрузочной (установка bootloader на SDcard)

dd if=bootloader/uboot-imx/flash.bin.sdcard of=/dev/sdX bs=1024 seek=33

rootfs

Для сборки rootfs, нужно перейти в каталог sdk_2021.04.24 и выполнить команду:

sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/rootfs

Начнёт скачиваться buildroot. На некотором моменте загрузка завершится с ошибкой, нужно будет распаковать архив dl:

sudo tar -xvf ../dl.tar.gz -C rootfs/buildroot-2020.11

Выполнить очистку проекта

cd rootfs/buildroot-2020.11/
sudo make clean
cd ../../

Запустить сборку второй раз:

sudo docker run -v $(pwd):/BR -t px30_generic make -C /BR/rootfs

Результат: rootfs/buildroot-2020.11/output/images/rootfs.ext2

создание загрузочной sd карты

понадобятся bootloader/uboot-imx/flash.bin.sdcard rootfs/buildroot-2020.11/output/images/rootfs.ext2

sudo su
cd <...>/sdk_2021.04.24
dev=/dev/sdX
umount ${dev}*
echo 'o n p 1 16384 +2G n p 2 4210688 +1G w'| tr ' ' '\n' | fdisk ${dev}
dd if=rootfs/buildroot-2020.11/output/images/rootfs.ext2 of=${dev}1 bs=1M
dd if=bootloader/uboot-imx/flash.bin.sdcard of=${dev} bs=1024 seek=33
sync

Вставить sd карту в отладочную плату, установить jumper «bios_dis» (загружаться с sdcard а не с qspi) подать питание, в u-boot, после «Hit any key to stop autoboot:» ввести

setenv mmcdev 1
saveenv
boot